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


14

umask시스템 사용자 (로 만든 useradd --system username) 를 설정할 수 있습니까?

답변:


14

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

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

이와 관련하여 시스템 사용자와 일반 사용자 사이에는 차이가 없습니다.

그러나 사용자 정의 umask로 데몬을 시작하려고한다고 가정합니까?

문제는 위의 모든 옵션이 사용자가 로그인 할 때 발생한다는 것입니다. 데몬을 실행하는 경우 절대 로그인하지 않습니다. init로 시작한 다음 루트 setuid로 실행 하거나 지정한 시스템 사용자로 실행하기 위해 호출 합니다. .

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

  1. umaskinit 스크립트에 넣습니다 ( grep umask /etc/init.d/*예를 들어 a)
  2. 사용자 정의 umask를 사용하여 프로그램을 시작하도록 init 구성 ( systemd.exec upstart umask )
  3. 를 사용하는 경우 umask 옵션을start-stop-daemon 전달하십시오.
  4. 프로그램 자체를 수정하여 umask 함수 또는 시스템 호출을 호출하십시오.

아치 리눅스 (systemd를 사용하는)에서 SSHFS (sftp-server)에 umask를 설정하는 방법을 알고 있습니까? 지적했듯이, 나열된 처음 3 가지 옵션은 영향을 미치지 않습니다.
MountainX

2

시스템 사용자는 비밀번호 만기, 홈 디렉토리 (시스템 사용자가 없음) 및 UID (시스템 사용자가 일반적으로 임의의 임계 값 아래 임)의 세 가지 측면에서 '일반'과 다릅니다.

일반적인 경우에, 당신은 거의 완전히 운이 없습니다. PAM을 사용하여 umask를 설정할 수 있지만 PAM은이 세 가지 차이점 이외의 사항을 기반으로 동작을 선택합니다.

다시 말해, PAM이 '시스템'사용자와 '비 시스템'사용자를 구별 할 수 없습니다. 두 가지 옵션이 있습니다.

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

  • 또는이 작업을 수행하기 위해 자체 PAM 모듈을 작성하십시오. umask를 설정하는 것이 일반적인 요청이므로 많은 사람들이 이것을 환영한다고 생각합니다.

넉넉한 소금을 뿌려이 답변을 받아보십시오. 이런 종류의 요청은 꽤 일반적이며 지금 더 나은 / 적절한 방법이 존재해도 놀라지 않을 것입니다.


1
pam_umask 라는 PAM 모듈이 이미 있습니다 . 문제는 로그인시에만 작동한다는 것입니다.
Mikel

아, 나는 당신이에 대해 알고 pam_umask있었지만 아마도 에 대해 모른다고 생각합니다 pam_succeed_if. 로 pam_succeed_if , 당신은 다른 모듈은 특정 사용자 또는 그룹에 적용 할 수 있습니다. 그러나 여전히 PAM이 여기에서 도움이 될 것이라고 생각하지 않습니다.
Mikel

1

@Mikel이 제안했듯이 데몬 인 시스템 계정을 구성하려는 경우 데몬 자체를 구성하십시오.

MacOS에서 _www 계정의 umask를 설정하는 방법을 찾고있는이 질문에 왔습니다. 위의 답변에서 알 수 있듯이 이것은 어렵지만 아파치 서비스를 (이 경우) 사용자 == 데몬으로 구성하여 해결할 수 있다는 것을 알았습니다.

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

$ sudo vim /usr/sbin/envvars
    umask 002

다른 데몬들도 비슷한 방법을 가지고 있는데, 이는 특정한 경우에 도움이 될 수 있습니다.


그러나 어떻게이 파일에 "umask 002"를 쓸 수 있었습니까?!?!? root / sudo
로도
당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.