시스템 사용자에 대해 umask를 설정하는 방법은 무엇입니까?

시스템 사용자에 대해 umask를 설정하는 방법은 무엇입니까?

umask시스템 사용자(다음을 사용하여 생성됨)에 대해 이를 설정할 수 있습니까 useradd --system username?

답변1

사용자의 umask를 설정하는 세 가지 일반적인 방법이 있습니다.

  1. 설정 UMASK하다/etc/login.defs
  2. pam_umask.soPAM 구성에 추가/etc/pam.d
  3. 쉘 시작 파일에 설정하십시오./etc/profile

이 점에서는 시스템 사용자와 일반 사용자 사이에 차이가 없습니다.

하지만 사용자 정의 umask를 사용하여 데몬을 시작하려고 한다고 가정합니까?

문제는 사용자가 로그인할 때 위의 모든 옵션이 발생한다는 것입니다. 데몬을 실행 중인 경우 로그인되지 않습니다. init에 의해 시작된 후 루트 또는 setuid지정한 시스템 사용자로 실행됩니다.

주요 옵션은 다음과 같습니다.

  1. umask초기화 스크립트를 넣으세요 ( grep umask /etc/init.d/*예: a 실행)
  2. 프로그램을 시작하기 위해 사용자 정의 umask를 사용하도록 init를 구성합니다(시스템 실행 프로그램 신생 우마스크)
  3. 사용하면 start-stop-daemon합격마스크 옵션
  4. 호출하도록 프로그램 자체를 수정하십시오.마스크함수 또는 시스템 호출

답변2

시스템 사용자는 비밀번호 만료, 홈 디렉터리(시스템 사용자에게 홈 디렉터리가 없음) 및 UID(시스템 사용자는 일반적으로 임의의 임계값 미만임)의 세 가지 측면에서 "일반" 사용자와 다릅니다.

일반적으로 당신은 거의 완전히 운이 좋지 않습니다. PAM을 사용하여 umask를 설정할 수 있지만 PAM은 이러한 세 가지 차이점 이외의 요소를 기반으로 동작을 선택합니다.

즉, PAM에게 "시스템" 사용자와 "비시스템" 사용자를 구별하라고 지시할 수 없습니다. 이렇게 하면 다음 두 가지 옵션이 제공됩니다.

  • PAM을 사용하여 모든 사람에 대해 umask를 설정한 다음(예: 체크인 ) 시스템이 아닌 사용자 (또는 이와 유사한 사용자) /etc/login.defs에 대해 umask를 명시적으로 설정하십시오 ./etc/bash.bashrc

  • 또는 이를 수행하기 위해 자신만의 PAM 모듈을 작성합니다. umask 설정은 일반적인 요청이기 때문에 이것이 많은 사람들에게 인기가 있을 것이라고 생각합니다.

이 답변을 소금 한 알로 받아들이십시오. 이런 종류의 요청은 매우 일반적이며 현재 더 나은/올바른 방법이 존재하더라도 놀라지 않을 것입니다.

답변3

@Mikel이 제안한 것처럼 데몬 역할을 하는 시스템 계정을 구성하려는 경우 데몬 자체를 구성해 보십시오.

MacOS에서 _www 계정에 대해 umask를 설정하는 방법을 알아내려고 이 질문을 발견했습니다. 위의 답변에서 알 수 있듯이 이는 어렵지만 Apache 서비스를 (이 경우) user == 데몬으로 구성하여 문제를 해결할 수 있다는 것을 알았습니다.

이상하게도 다음의 도움을 받아 시작 스크립트(일반적으로 /etc/init.d/에 있지만 Mac에서는 Library/LaunchDaemons/에 있음)를 찾을 수 없습니다.http://krypted.com/mac-security/apache2-umasks/아파치에 고유한 특정 환경 스크립트가 있음을 발견했습니다.

$ sudo vim /usr/sbin/envvars
    umask 002

다른 데몬에도 비슷한 방법이 있을 수 있으며 이는 특정 상황에서 도움이 될 수 있습니다.

관련 정보