두 시스템 간에 사용자의 umask 값이 다른 이유는 무엇입니까?

두 시스템 간에 사용자의 umask 값이 다른 이유는 무엇입니까?

A와 B라는 두 개의 시스템이 있습니다. A는 Ubuntu 16.04이고 B는 Ubuntu 20.04입니다. 각각에는 유틸리티 사용자 '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. 이 패키지는 두 시스템 모두에 설치되었지만 사용하거나 구성한 적이 없습니다. 두 시스템 모두 구성 파일 에 umask 설정 /etc/pam.d/common-session/etc/pam.d/common-session-noninteractive없습니다.

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이므로 더 이상 버그 업데이트가 제공되지 않습니다.

도움이 되었기를 바랍니다!

관련 정보