私はAとBの2つのシステムを持っています。AはUbuntu 16.04、BはUbuntu 20.04です。それぞれにユーティリティユーザー「rufus」が定義されています。「rufus」にはログインなしどちらのシステムでも。
'rufus'が2つのシステム間で異なるデフォルトの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
。「rufus」にはログインなし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 の違いを説明していないようです。
私が思いつくのはこれだけです。2umask
つのシステム間で「rufus」に対して返される値の違いを説明できるものは他に何があるでしょうか?
特に答えてほしい質問が 1 つあります。 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 になったため、バグのために更新されることはもうありません。
お役に立てれば!