모든 연결 유형에서 OpenSSH의 umask 를 0027
일관된 방식 으로 설정하는 방법을 찾고 있습니다.
연결 유형에 따라 다음을 참조합니다.
- sftp
- scp
- ssh 호스트 이름
- ssh 호스트 이름 프로그램
3과 4의 차이점은 전자가 쉘을 시작하고 일반적으로 /etc/profile
정보를 읽지 만 쉘 은 그렇지 않습니다.
또한 이 게시물 을 읽음으로써 최신 버전의 OpenSSH에있는 -u 옵션을 알게되었습니다. 그러나 이것은 작동하지 않습니다.
또한 /etc/profile
지금 포함 하는 것을 추가해야합니다 umask 0027
.
포인트 별 진행 :
- sftp- 여기 에 언급
-u 0027
된sshd_config
대로 설정 하는 것만으로 는 충분하지 않습니다.
이 매개 변수를 설정하지 않으면 sftp가 기본적으로 사용합니다 umask 0022
. 이것은 내가 두 파일을 가지고 있다면 의미합니다.
-rwxrwxrwx 1 user user 0 2011-01-29 02:04 execute
-rw-rw-rw- 1 user user 0 2011-01-29 02:04 read-write
sftp를 사용하여 대상 컴퓨터에 넣으면 실제로 얻을 수 있습니다.
-rwxr-xr-x 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
그러나 내가 설정 한 경우 -u 0027
에 sshd_config
실제로 얻을 대상 컴퓨터의 :
-rwxr--r-- 1 user user 0 2011-01-29 02:04 execute
-rw-r--r-- 1 user user 0 2011-01-29 02:04 read-write
실제로 다음과 같아야하므로 예상되지 않습니다.
-rwxr-x--- 1 user user 0 2011-01-29 02:04 execute
-rw-r----- 1 user user 0 2011-01-29 02:04 read-write
왜 이런 일이 발생하는지 이해합니까?
scp - sftp의 설정에 관계없이 권한은 항상
umask 0022
있습니다. 나는 현재 이것을 바꾸는 방법을 모른다.ssh 호스트 이름-쉘은
/etc/profile
기본적으로umask 0027
현재 설정에서 읽기 때문에 문제가 없습니다 .ssh 호스트 이름 프로그램 -scp 와 동일한 상황 .
요컨대,에 umask를 설정 sftp
변경합니다 결과를하지만 예상대로하지, ssh hostname
예상 읽기로 작동 /etc/profile
하고 모두 scp
와 ssh hostname program
것 같다 umask 0022
곳을 하드 코딩.
위의 사항에 대한 통찰력을 환영합니다.
편집 : openssh를 수동으로 컴파일 해야하는 패치를 피하고 싶습니다. 시스템 openssh
에서 maverick의 패키지 와 함께 Ubuntu Server 10.04.01 (lucid) LTS를 실행 중 입니다.
답 : poige로 표시된 것처럼 pam_umask를 사용하여 트릭을 수행했습니다.
정확한 변경 사항은 다음과 같습니다.
라인 추가 /etc/pam.d/sshd
:
# Setting UMASK for all ssh based connections (ssh, sftp, scp)
session optional pam_umask.so umask=0027
또한 모든 로그인 쉘이 소스 /etc/profile
인지 여부에 관계없이 모든 로그인 쉘에 영향을주기 위해 동일한 행이에 추가되었습니다 /etc/pam.d/login
.
편집 : 의견 중 일부 후에이 문제를 다시 테스트했습니다.
적어도 우분투 (내가 테스트 한 곳)에서 사용자가 쉘의 init 파일 (.bashrc, .zshrc, ...)에 다른 umask 세트를 설정하면 PAM umask가 무시되고 대신 사용자 정의 umask가 사용되는 것으로 보입니다. /etc/profile
사용자가 init 파일에서 변경 사항을 명시 적으로 제공하지 않는 한 변경 사항 은 결과에 영향을 미치지 않았습니다.
이 동작이 모든 배포판에서 발생하는지 확실하지 않습니다.
UsePAM yes
sshd_config에 있습니까?
/etc/profile
. 뭔가 같은alias umask=/bin/true