SFTP를 사용하여 업로드된 파일에 올바른 권한이 없습니다.

SFTP를 사용하여 업로드된 파일에 올바른 권한이 없습니다.

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_configumask를 포함하여 몇 가지 작업을 강제하는 것입니다.

Match Group uploadusers
  ForceCommand internal-sftp -u 0002

-u 0002옵션은 사용자가 그룹의 구성원인 경우 내부 SFTP 프로그램/하위 시스템 및 이를 통해 업로드된 모든 파일에 대한 umask를 설정합니다 uploadusers.

개인적으로 나는 또한 chroot사용자가 자신의 디렉토리에만 액세스할 수 있도록 합니다. 파일 의 지시문 ChrootDirectory에 적용되는 옵션을 확인하십시오 .Match Groupsshd_config

답변2

그 이유는 쉘이 관련될 때 UMASK가 적용되기 때문입니다. 귀하의 경우 (bash의 경우) /etc/bashrc(일부 최신 Red Hat/Centos 7 버전을 가정함) 내부에 적용될 가능성이 높으며 이러한 파일의 위치는 다를 수 있습니다. 아무것도 사용하지 않는 경우 /etc/profile에서 UMASK 설정을 확인하세요.

관련 정보