그놈 3.18을 사용합니다. 나는 다른 가족 구성원들과 파일을 공유하지만 내 배포판(archlinux)의 기본 umask는 입니다 0022
. 따라서 생성된 모든 파일/디렉토리는 우리 공개 그룹에서 쓸 수 없습니다.
umask 0002
입력 을 시도했지만 /etc/profile
gnome 세션이 여전히 사용됩니다 0022
. 그러나 bash 쉘에 로그인하는 데는 작동합니다.
또한 다음 줄을 추가해 보았습니다 /etc/pam.d/system-auth
.
session required pam_umask.so umask=0002
에서와 동일한 효과가 있습니다 /etc/profile
. 나는 노력했다
gnome 터미널 셸에서 umask를 수동으로 변경한 다음 여기에서 응용 프로그램(예: gedit)을 시작하면 해당 응용 프로그램에서 생성된 파일에 필요한 권한이 부여됩니다. 그놈 메뉴에서 gedit를 시작하면 그렇지 않습니다. 그래서 내 문제는 실제로 그놈 세션에 대한 umask를 설정하는 것인데 어디서 해야 할지 찾을 수 없습니다.
편집(Gilles의 의견에 대한 답변): 저는 gdm 3.18을 DM으로 사용하고 있습니다. 또한 /etc/pam.d/gdm-launch-environment
다른 모든 파일에는 해당 파일 gdm-*
의 내용이 있으므로 더 이상 필요하지 않습니다. 아무것도 바뀌지 않습니다.session
system-auth
/etc/login.defs
포함 UMASK 077
하지만 기본 그룹 에 대해 사용자의 사용자 이름 으로 USERGROUPS_ENAB yes
설정되어야 합니다 .umask
0077
0007
022
umask를 포함하는 유일한 파일 /etc
은 이지만 /etc/profile
이것이 나의 첫 번째 시도입니다.
에 관해서는 /etc/Xsession.d
이 디렉토리가 없습니다. 또한, 이제 Wayland가 기본 디스플레이 서버이기 때문에 umask를 X 초기화의 일부로 설정해야 하는지 잘 모르겠습니다. 아직까지 직접 사용하고 있지만요.
답변1
일부 Gnome 응용 프로그램은 에 의해 시작됩니다 systemd --user
. 이 경우 umask는 0022
구성된 값에 관계없이 systemd에 의해 설정됩니다.pam_umask. 해결 방법을 모르지만 열었습니다.하나의 질문systemd github 문제 추적기에서. 이 문제도 보고되었습니다.그놈 버그질라.
pam_umask
umask 세트로 시작되지 않은 애플리케이션의 경우 예상대로 작동합니다 systemd --user
.
해결책을 제안하다우분투 버그질라 영향을 받는 모든 애플리케이션에 systemd 서비스를 적용합니다.
고쳐 쓰다:systemd 버전 246 이상의 경우 pam_umask가 예상대로 작동해야 합니다. 최신 릴리스에는 버그 수정 버전이 함께 제공되어야 합니다.
스스로 조사해 보세요.
다음 명령을 사용하면 시스템에서 실행 중인 프로세스를 트리 형식(상위/하위 프로세스)으로 나열할 수 있습니다.
pstree -Tapu
찾다PID을 위한:(1)귀하의 세션 인스턴스시스템 d--사용자;(2) 그것에 의해 시작된 응용 프로그램, 예를 들어 gedit는 하위 프로세스로 표시됩니다.시스템 d--사용자;그리고(삼)세션의 프로세스systemd --user에 의해 시작되지 않음.
비교하다마스크보고된프로세스 파일 시스템:
grep Umask /proc/<pid>/status
시스템 d--사용자그 자체(1)그리고 처리아니요에 의해 시작(삼)맞는게 있어야지우마스크이는 다음에 의해 설정됩니다.pam_umask. 프로세스 개시자시스템 d--사용자 (2)umask가 있을 겁니다 0022
.
답변2
시스템 전체에 기본 umask를 설정하려면 먼저 이를 활성화해야 합니다. 자세한 내용은 여기에 설명되어 있습니다.
http://manpages.debian.org/cgi-bin/man.cgi?query=pam_umask&sektion=8
위의 링크는 데비안과 우분투용이지만 다른 모든 Linux 시스템에서도 마찬가지입니다.
umask(이미 존재할 수 있음)를 활성화하려면 다음 줄을 추가해야 합니다 /etc/pam.d/common-session
.
session optional pam_umask.so
활성화되면 다음에서 설정할 수 있습니다.
/etc/login.defs
이미 파일을 찾았으므로 설정만 하면 됩니다.
# The permission mask is initialized to this value. If not specified,
# the permission mask will be initialized to 022.
UMASK 077
그리고 UMASK를 0002 또는 원하는 대로 설정하세요.
이렇게 하면 시스템 전체의 기본 설정이 설정됩니다. 즉, 파일에 특별히 설정하지 않는 한 모든 사용자가 거기서 umask를 가져옵니다.. 윤곽 또는.bashrc
답변3
이 질문은 Sebastian이 언급했습니다. 많은 것을 시도했지만 dbus의 (사용자별) UMask 재정의를 포함하는 해결 방법을 찾았습니다.
$ systemctl --user edit dbus
열린 파일에 다음과 같이 작성하십시오.
[Service]
UMask=002 # This is the umask I want to use
이 파일은 .config/systemd/user/dbus.service.d/override.conf에 보관되며 dbus 기본 umask를 재정의합니다. dbus가 시작되었으므로 systemd --user에서 상속된 것으로 가정합니다. 로그아웃했다가 다시 로그인하면 gnome 애플리케이션이 지정된 umask를 사용해야 합니다. 해결 방법 일 뿐이지 만 나에게는 효과가있었습니다.
답변4
편집: systemd가 gnome 세션에 대한 umask를 설정하기 위해 /etc/systemd/system/display-manager.service.d/ 아래에 다음 줄을 사용하여 umask.conf 파일을 만들었습니다.
[Service]
UMask=0002
컴퓨터를 다시 시작한 후 이제 모든 프로세스가 user.slice
원하는 umask와 일치하도록 허용하십시오. 로그아웃만으로는 변경이 불가능하므로 컴퓨터를 다시 시작하는 것이 좋습니다.시험프로세스 umask에 있습니다.