SFTP를 사용하여 "만들지만 수정하지 않음" 권한 체계를 수행하는 방법을 알아냈습니다. 하지만 파일에만 작동합니다. 디렉토리로 확장하고 싶습니다.
배경:
특정 사용자 그룹을 공개 그룹으로 제한하는 SFTP 서버(OpenSSH 기반)가 있습니다.chroot 감옥목차. 구성은 비슷해요이것대화.
이 그룹의 사용자가 파일과 디렉터리를 생성할 수 있지만 생성된 후에는 수정하거나 삭제할 수 없도록 하고 싶습니다. 표준 Linux 권한은 "쓰기" 권한과 "수정" 권한을 구분하지 않기 때문에 이 작업을 직접 수행할 수 없습니다.
SFTP 서버 구성에서 SFTP 루트 권한과 umask 옵션을 결합하여 이를 작동시킬 수 있었습니다.
권한:
drwxr-xr-x root root /sftproot
drwxrwxr-x root sftpgroup /sftproot/upload_directory
/etc/ssh/sshd_config:
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /sftproot
ForceCommand internal-sftp -d /upload_directory -u 0222
-u 0222
스위치에 주의하세요 .이는 다음에 적용됩니다.마스크새로 생성된 파일에 대해서는 특정 권한이 제거됩니다.
결과:
sftponly 그룹의 사용자가 새 파일을 업로드하면 디렉터리에 대한 그룹 쓰기 권한으로 인해 새 파일을 업로드할 수 있습니다. 그런 다음 umask 옵션은 "w" 비트를 지워서 파일을 수정할 수 없도록 만듭니다. 파일은 다음과 같이 표시됩니다.
-r--r--r-- {user} sftponly /sftproot/upload_directory/filename
엄청난! 이것이 바로 내가 원하는 것입니다.
질문:
사용자는 또한 내가 원하는 디렉토리를 생성할 수도 있습니다. 그러나 새로 생성된 디렉터리에는 "w" 비트도 지워져 있어 새 파일이 여기에 기록되지 않습니다.
질문:
SFTP로 생성된 디렉토리는 쓰기 가능하지만 파일은 읽기 전용으로 유지하는 방법은 무엇입니까?
기발한 아이디어가 있나요?
답변1
sftp-server (5)
맨페이지 에 따르면 -u umask
명령줄 옵션을 사용하여 사용자의 umask를 재정의할 수 있습니다.
-u umask
Sets an explicit umask(2) to be applied to newly-created files and directories, instead of
the user's default mask.
따라서 사용자가 더 이상 쓰기 권한을 갖지 않도록 umask를 이와 같이 설정하십시오.
이를 설정하려면 sshd_config(5)
다음에 언급된 맨페이지를 참조하십시오 sftp-server
.
Command-line flags to sftp-server should be specified in the Subsystem declaration. See
sshd_config(5) for more information.