為什麼兩個系統之間的使用者 umask 值不同?

為什麼兩個系統之間的使用者 umask 值不同?

我有兩個系統,A和B。每個都定義了一個實用程式使用者“rufus”。 「魯弗斯」有沒有登入在任一系統上。

我想了解為什麼“rufus”在兩個系統之間具有不同的預設 umask 值。在系統 A (16.04) 上,我得到

$ sudo -u rufus sh -c umask
0022

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

$ sudo -u rufus sh -c umask
0002

umask在兩個系統上為我自己的使用者和“root”運行都會傳回0022預期的預設值。無論差異是什麼,它似乎與“rufus”特有的某些屬性有關。

以下是我考慮過的事情:

1)系統用戶

某些 Linux 系統為系統使用者定義了與一般使用者不同的預設 umask。

在系統 A (16.04) 上,「rufus」已

$ 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。 「魯弗斯」有沒有登入,所以這些文件不應該影響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」的回報差異?

我特別想回答的一個問題是: 當Ubuntu為所有系統使用者(UID 100-999)設定預設umask時,這個設定在什麼檔案中?。這似乎是 Linux 的另一個標誌性「秘密訊息」。

答案1

我想我已經明白這一點了。 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.

老實說,這可能是 16.04 運行命令時的一個錯誤sudo -u username sh -c umask。這是我唯一能想到的。在我的測試系統上,我得到以下輸出。

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
0022

20.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 那樣正確讀取使用者資訊。它看起來像是一個錯誤,但由於 16.04 現已 EOL,他們將不再更新錯誤。

希望這可以幫助!

相關內容