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이므로 더 이상 버그 업데이트가 제공되지 않습니다.
도움이 되었기를 바랍니다!