전체 그놈 세션에 대해 "umask"를 설정하는 방법은 무엇입니까?

전체 그놈 세션에 대해 "umask"를 설정하는 방법은 무엇입니까?

그놈 3.18을 사용합니다. 나는 다른 가족 구성원들과 파일을 공유하지만 내 배포판(archlinux)의 기본 umask는 입니다 0022. 따라서 생성된 모든 파일/디렉토리는 우리 공개 그룹에서 쓸 수 없습니다.

umask 0002입력 을 시도했지만 /etc/profilegnome 세션이 여전히 사용됩니다 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-*의 내용이 있으므로 더 이상 필요하지 않습니다. 아무것도 바뀌지 않습니다.sessionsystem-auth

/etc/login.defs포함 UMASK 077하지만 기본 그룹 에 대해 사용자의 사용자 이름 으로 USERGROUPS_ENAB yes설정되어야 합니다 .umask00770007

022umask를 포함하는 유일한 파일 /etc은 이지만 /etc/profile이것이 나의 첫 번째 시도입니다.

에 관해서는 /etc/Xsession.d이 디렉토리가 없습니다. 또한, 이제 Wayland가 기본 디스플레이 서버이기 때문에 umask를 X 초기화의 일부로 설정해야 하는지 잘 모르겠습니다. 아직까지 직접 사용하고 있지만요.

답변1

일부 Gnome 응용 프로그램은 에 의해 시작됩니다 systemd --user. 이 경우 umask는 0022구성된 값에 관계없이 systemd에 의해 설정됩니다.pam_umask. 해결 방법을 모르지만 열었습니다.하나의 질문systemd github 문제 추적기에서. 이 문제도 보고되었습니다.그놈 버그질라.

pam_umaskumask 세트로 시작되지 않은 애플리케이션의 경우 예상대로 작동합니다 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에 있습니다.

관련 정보