SFTP를 사용하여 서버에 파일을 업로드하려고 할 때 이상한 문제가 있습니다.
보안을 최대화하기 위해 비활성화된 셸("/bin/false")이 있는 사용자를 사용하여 파일을 업로드하면 업로드된 파일에 대해 모드 640을 얻게 되는데 이는 내가 원하는 것이 아닙니다(로컬 파일의 모드는 664입니다).
그러나 동일한 사용자에 대해 "/bin/bash" 셸을 활성화하면 올바른 모드인 664가 표시됩니다.
여기서 무슨 일이 일어나고 있는지 잘 모르겠습니다. 쉘을 비활성화하면 업로드된 파일의 모드가 변경되는 이유는 무엇입니까?
내 SSHD 구성:
Port 22
Protocol 2
AcceptEnv LANG LC_*
UsePAM yes
UseDNS no
Subsystem sftp internal-sftp
답변1
유효한 쉘이 없기 때문에 시스템 기본 umask가 적용/사용되지 않습니다.
당신이 할 수 있는 일은 사용자를 그룹에 넣고 파일 을 통해 /etc/sshd_config
umask를 포함하여 몇 가지 작업을 강제하는 것입니다.
Match Group uploadusers
ForceCommand internal-sftp -u 0002
이 -u 0002
옵션은 사용자가 그룹의 구성원인 경우 내부 SFTP 프로그램/하위 시스템 및 이를 통해 업로드된 모든 파일에 대한 umask를 설정합니다 uploadusers
.
개인적으로 나는 또한 chroot
사용자가 자신의 디렉토리에만 액세스할 수 있도록 합니다. 파일 의 지시문 ChrootDirectory
에 적용되는 옵션을 확인하십시오 .Match Group
sshd_config
답변2
그 이유는 쉘이 관련될 때 UMASK가 적용되기 때문입니다. 귀하의 경우 (bash의 경우) /etc/bashrc(일부 최신 Red Hat/Centos 7 버전을 가정함) 내부에 적용될 가능성이 높으며 이러한 파일의 위치는 다를 수 있습니다. 아무것도 사용하지 않는 경우 /etc/profile에서 UMASK 설정을 확인하세요.