원격 시스템에 업로드된 파일에 대한 권한에 이상한 문제가 있습니다.
로컬에서 index2.html 파일은 chmod 664입니다.
acoder@acoder-local ~ $ ll index2.html
-rw-rw-r-- 1 acoder acoder 29 May 17 14:46 index2.html
동일한 파일을 원격 시스템에 업로드하면 원격 디렉터리의 권한이 다음과 같이 표시됩니다.
-rw-r--r--. 1 acoder acoder 3657 May 17 14:43 index2.html
처음에는 원격 시스템에 umask가 제대로 설정되지 않은 줄 알았으나...
[acoder@remote public_html]$ umask
0002
비교를 위해 원격 시스템의 파일을 터치하면 지정된 umask에 대한 올바른 권한이 표시됩니다.
-rw-rw-r--. 1 acoder acoder 0 May 17 14:44 index3.html
그렇다면 SFTP를 통해 업로드된 파일의 권한은 어떻게 설정되나요? SFTP를 통해 파일을 배치할 때 umask가 무시되는 이유는 무엇입니까?
답변1
SFTP는 로그인 셸을 전혀 거치지 않습니다. SSH 서버에서 직접 관리됩니다. 예상하는 umask가 /etc/profile
이나 다른 셸 초기화 파일에 의해 설정된 경우 ~/.profile
SFTP ~/.bashrc
에서 작동하지 않습니다.
다음을 통해 umask를 설정할 수 있습니다.폴리아크릴아미드기준 치수pam_umask
. SSH 서버의 설정은 SSH 셸 세션(셸 초기화 파일로 재정의되지 않는 한) 및 SFTP 세션에 적용됩니다.
Subsystem sftp
/etc/sshd_config
또한 다음 -u
줄을 편집하여 SSH용으로 특별히 설정된 umask에 옵션을 전달할 수도 있습니다.sftp-server
.
답변2
Gilles가 제안한 것처럼 PAM을 통해 이 작업을 수행하려면 다음과 같이 사용자 항목에 필수 umask를 추가하기만 하면 됩니다 /etc/passwd
.
usermod -c ,,,,umask=002 acoder
이 방법은 전체 GECOS 필드를 대체했지만. 따라서 잠재적인 기존 정보도 위 순서에 포함되어야 합니다.
pam_umask
모듈을 사용하면 이것이 작동합니다. 이는 Fedora 및 CentOS Stream 9( )의 기본값인 것 같습니다 /etc/pam.d/postlogin
.