首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么用户的umask值在两个系统之间存在差异?

为什么用户的umask值在两个系统之间存在差异?
EN

Ask Ubuntu用户
提问于 2021-05-24 18:56:55
回答 1查看 358关注 0票数 5

我有两个系统,A和B,A是Ubuntu 16.04,B是Ubuntu 20.04。每个用户都定义了一个实用用户'rufus‘。“‘rufus”在任何系统上都有no登录名

我想了解为什么'rufus‘有不同的默认值在这两个系统之间。在系统A (16.04)上,我得到

代码语言:javascript
复制
$ sudo -u rufus sh -c umask
0022

在系统B (20.04)上,我得到

代码语言:javascript
复制
$ sudo -u rufus sh -c umask
0002

为我自己的用户和为“根”运行umask,将在两个系统上返回0022,这是预期的默认设置。不管区别是什么,它似乎与某些特定于“rufus”的财产有关。

以下是我考虑过的事情:

1)系统用户

有些Linux系统为系统用户定义了与普通用户不同的默认用户请求。

论系统A (16.04)

代码语言:javascript
复制
$ id rufus
uid=999(rufus) gid=999(rufus) groups=999(rufus)

关于系统B (20.04),rufus

代码语言:javascript
复制
$ id rufus
uid=114(rufus) gid=119(rufus) groups=119(rufus)

两个系统上,/etc/login.defs的默认umask为022,系统用户窗口被注释掉

代码语言:javascript
复制
UMASK           022
# System accounts
#SYS_UID_MIN              100
#SYS_UID_MAX              999

但是/etc/adduser.conf

代码语言:javascript
复制
FIRST_SYSTEM_UID=100
LAST_SYSTEM_UID=999

指示'rufus‘是两个系统(即UID > 99和UID < 1000)上的系统用户。因此,这似乎并不能解释默认umask的不同之处。

( <#>2)登录脚本

用户的默认umask可以通过登录脚本来设置,可以是全局脚本(如/etc/profile ),也可以是特定于用户的脚本(如~/.profile )。‘'rufus’有no登录名,因此这些文件不应该影响umask返回的内容,因为它们从未被处理过。

不过,为了彻底起见,我反复检查了这些文件。

代码语言:javascript
复制
/etc/profile
/etc/bash.bashrc
~rufus/.profile

在这两个系统上('rufus‘确实有一个主文件夹)。他们都没有为umask设定一个值。因此,出于几个原因,这似乎并不能解释默认umask的区别。

( 3) /etc/passwd

用户的“umask”可以在/etc/passwd中设置。

关于系统A (16.04):

代码语言:javascript
复制
rufus:x:999:999:,,,:/home/rufus:/usr/sbin/nologin

关于系统B (20.04):

代码语言:javascript
复制
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设置。

代码语言:javascript
复制
session    optional    pam_umask.so

所以,除非有别的地方需要我去看,否则这似乎不能解释默认的umask的区别。

这就是我所能想到的。还有什么能解释两种系统在umask返回“rufus”时的区别呢?

我特别想回答的一个问题是:When Ubuntu为所有系统用户(UID100-999)设置一个默认的umask,这个文件在哪个文件中?。这似乎是Linux的另一块签名“秘密信息”。

EN

回答 1

Ask Ubuntu用户

发布于 2021-05-24 22:05:17

我想我想明白了。在20.04的/etc/login.prefs中,声明如下:

代码语言:javascript
复制
# 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:

代码语言:javascript
复制
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
0022

20.04:

代码语言:javascript
复制
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。

希望这能有所帮助!

票数 4
EN
页面原文内容由Ask Ubuntu提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://askubuntu.com/questions/1340415

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档