Program Tip

시스템 전체 umask를 설정하는 방법은 무엇입니까?

programtip 2020. 11. 27. 21:13
반응형

시스템 전체 umask를 설정하는 방법은 무엇입니까?


저는 Linux (Debian 및 Ubuntu)를 실행하는 실험실에서 일하고 있습니다. 사용자 이름과 그룹 이름은 NIS와 yp에 의해 처리됩니다. 우리는 실험을 실행하는 모든 사람들이 접근 할 수있는 공통 사용자를 가지고 있고, 우리 각자는 우리 자신의 사용자를 가지고 있으며 우리 모두가 구성원 인 공통 그룹이 있습니다.

공유 /home/드라이브 (NFS) 의 모든 파일과 디렉터리를 사용자 / 그룹이 읽고 쓰기 (/ 실행 가능)하도록하려면 어떻게해야합니까? 기본적으로 내가 원하는 것은

chmod -R 664 /home
chgrp -R commongroup /home

또는 동등하게 umask 0002.

그러나 위의 명령을 실행하면 폴더의 현재 파일 만 수정되고 umask는 단일 사용자에 대해서만 작동하며 사용자가 로그인 할 때마다 실행되어야합니다. 에서 .bashrc파일 (그리고 그놈을 통해 변경 모드에 대해이 작업을 할 것인가?). 공통 그룹에 공통 파일에 대한 쓰기 권한이 있는지 확인하는 데 사용할 수있는 시스템 전체 명령 또는 설정이 있습니까?


Debian과 Ubuntu 모두 pam_umask 와 함께 제공 됩니다. 이를 통해 /etc/login.defs사용자가 로그인하는 방법에 관계없이 umask를 구성 하고 시스템 전체에 적용 할 수 있습니다.

이를 활성화하려면 /etc/pam.d/common-session읽기에 줄을 추가해야 할 수 있습니다.

session optional pam_umask.so

또는 이미 활성화되어있을 수 있습니다. 그런 다음 줄을 편집 /etc/login.defs하고 다음으로 변경하십시오.UMASK

UMASK           002

(기본값은 022).

사용자는 여전히 자신 ~/.profile이나 ~/.bashrc유사한 방식으로 umask를 재정의 할 수 있지만 (적어도 새로운 Debian 및 Ubuntu 설치에서는) /etc/profile또는 에서 umask를 재정의해서는 안됩니다 /etc/bash.bashrc. (있는 경우 제거하십시오.)


먼저 pam-modules패키지가 설치되어 있는지 확인하십시오 . 그러면 pam_umask모듈을 사용할 수 있습니다. 그런 다음 /etc/pam.d/common-session양식의 줄이 있는지 확인하십시오.

session optional pam_umask.so

그래서이 pam_umask활성화됩니다.

이제 pam_umaskman 페이지에 따르면 기본 umask는 로그인시 다음 각 위치를 순서대로 확인하여 결정됩니다.

  1. 에 설정된 하드 시스템 전체 기본값입니다 /etc/pam.d/common-session. 이렇게 설정하려면 위에서 언급 한 파일의 줄을 다음과 같이 바꿉니다.

    session optional pam_umask.so umask=002
    
  2. 개별 사용자의 GECOS 필드에있는 항목은 /etc/passwd해당 특정 사용자에 대한 소프트 시스템 전체 기본값을 재정의합니다. 다음 형식의 명령을 사용하여 해당 항목을 만듭니다.

    chfn --other='umask=002' username
    
  3. 형태의 라인 UMASK=002에서 /etc/default/login(해당 파일을 작성해야 할 수도 있습니다)는 소프트 시스템 전체 기본값을 설정합니다.

  4. UMASK값입니다 /etc/login.defs. 이 값은 다른 작업에도 사용됩니다 (생성되는 새 사용자의 홈 디렉토리에 대한 권한을 계산합니다 /etc/login.defs. 자세한 내용 은의 주석 을 참조하십시오). 따라서 일반 로그인에 대한 기본 umask를 설정하는 데 의존하지 않는 것이 가장 좋습니다.

따라서 귀하의 경우에는 /etc/default/login개별 사용자에 대한 설정을 재정의 할 수 있도록하려면 에서 구성해야 /etc/pam.d/common-session하고 모든 사용자에 대해 동일하게하려면 위에서 설명한대로 설정해야 합니다.

하드 기본 설정을 사용하더라도 사용자는 쉘 프롬프트 또는 스크립트 에서 명령을 umask사용하여 수동으로 기본값을 덮어 쓸 수 있습니다 .umask.profile

또한이 기본값을 설정하는 전통적인 Unix 방법은에 umask명령을 추가하는 것이며 /etc/profile, 여전히 작동합니다. 그러나 스크립트와 GUI를 사용하여 안정적으로 관리하기가 어렵 기 때문에 Ubuntu에서 이와 같은 것을 구성하는 권장 방법이 아닙니다.

안타깝게도 .NET을 통해 실행되도록 변환 된 모든 응용 프로그램에서 작동systemd --user중지되었습니다 .


그룹 권한을 일치시키기 위해 서버에서 set gid 비트 ( "고정 비트"중 하나)를 추가 옵션으로 고려할 수 있습니다.

공유 디렉토리가 그룹에 링크되어있는 경우 (루트 사용) : chmod -R 2775 folder_for_the_group 을 시작하는 것이 흥미로울 수 있습니다.

폴더에 생성 된 새 파일의 경우 작성자가 소유자가되지만 그룹은 자동으로 지정됩니다 (작성자가 그룹의 일부인 경우).

이제 권한 그리드가 -rwxrwsr-x +로 나타납니다.

참고 URL : https://stackoverflow.com/questions/10220531/how-to-set-system-wide-umask

반응형