我有两个系统,A和B,A是Ubuntu 16.04,B是Ubuntu 20.04。每个用户都定义了一个实用用户'rufus‘。“‘rufus”在任何系统上都有no登录名。
我想了解为什么'rufus‘有不同的默认值在这两个系统之间。在系统A (16.04)上,我得到
$ sudo -u rufus sh -c umask
0022在系统B (20.04)上,我得到
$ sudo -u rufus sh -c umask
0002为我自己的用户和为“根”运行umask,将在两个系统上返回0022,这是预期的默认设置。不管区别是什么,它似乎与某些特定于“rufus”的财产有关。
以下是我考虑过的事情:
1)系统用户
有些Linux系统为系统用户定义了与普通用户不同的默认用户请求。
论系统A (16.04)
$ id rufus
uid=999(rufus) gid=999(rufus) groups=999(rufus)关于系统B (20.04),rufus
$ id rufus
uid=114(rufus) gid=119(rufus) groups=119(rufus)在和两个系统上,/etc/login.defs的默认umask为022,系统用户窗口被注释掉
UMASK 022
# System accounts
#SYS_UID_MIN 100
#SYS_UID_MAX 999但是/etc/adduser.conf有
FIRST_SYSTEM_UID=100
LAST_SYSTEM_UID=999指示'rufus‘是两个系统(即UID > 99和UID < 1000)上的系统用户。因此,这似乎并不能解释默认umask的不同之处。
( <#>2)登录脚本
用户的默认umask可以通过登录脚本来设置,可以是全局脚本(如/etc/profile ),也可以是特定于用户的脚本(如~/.profile )。‘'rufus’有no登录名,因此这些文件不应该影响umask返回的内容,因为它们从未被处理过。
不过,为了彻底起见,我反复检查了这些文件。
/etc/profile
/etc/bash.bashrc
~rufus/.profile在这两个系统上('rufus‘确实有一个主文件夹)。他们都没有为umask设定一个值。因此,出于几个原因,这似乎并不能解释默认umask的区别。
( 3) /etc/passwd
用户的“umask”可以在/etc/passwd中设置。
关于系统A (16.04):
rufus:x:999:999:,,,:/home/rufus:/usr/sbin/nologin关于系统B (20.04):
rufus:x:114:119::/home/rufus:/usr/sbin/nologin这两个集合都不是' umask ',所以看起来这并不能解释默认umask的区别。
( 4) libpam-umask
我对此知之甚少,但我知道它可以用来为用户设置umask值。在这两个系统上,libpam-umask都是由包libpam-modules提供的。这个软件包安装在两个系统上,但我从未使用或配置过它。在这两个系统中,配置文件/etc/pam.d/common-session和/etc/pam.d/common-session-noninteractive在行中没有umask设置。
session optional pam_umask.so所以,除非有别的地方需要我去看,否则这似乎不能解释默认的umask的区别。
这就是我所能想到的。还有什么能解释两种系统在umask返回“rufus”时的区别呢?
我特别想回答的一个问题是:When Ubuntu为所有系统用户(UID100-999)设置一个默认的umask,这个文件在哪个文件中?。这似乎是Linux的另一块签名“秘密信息”。
发布于 2021-05-24 22:05:17
我想我想明白了。在20.04的/etc/login.prefs中,声明如下:
# If USERGROUPS_ENAB is set to "yes", that will modify this UMASK default value
# for private user groups, i. e. the uid is the same as gid, and username is
# the same as the primary group name: for these, the user permissions will be
# used as group permissions, e. g. 022 will become 002.在运行命令sudo -u username sh -c umask时,这可能是16.04中的一个错误。这是我唯一能想到的。在我的测试系统中,我得到了以下输出。
16.04:
terrance@terrance-1604:~$ id
uid=1000(terrance) gid=1000(terrance) groups=1000(terrance),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),113(lpadmin),128(sambashare)
terrance@terrance-1604:~$ umask
0002
terrance@terrance-1604:~$ sudo -u terrance sh -c umask
002220.04:
terrance@terrance-ubuntu:~$ id
uid=1000(terrance) gid=1000(terrance) groups=1000(terrance),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),118(lpadmin),126(sambashare),132(vboxusers)
terrance@terrance-ubuntu:~$ umask
0002
terrance@terrance-ubuntu:~$ sudo -u terrance sh -c umask
0002从表面上看,它们都支持完全相同的命令,并且在/etc/login.prefs中具有完全相同的措辞。但是16.04似乎并没有像在20.04中那样正确地读入用户。它看起来像一个bug,但由于16.04现在是EOL,他们将不再更新bug。
希望这能有所帮助!
https://askubuntu.com/questions/1340415
复制相似问题