SSH를 사용할 수 없는 sftp 사용자 그룹을 지원하기 위해 이 줄을 사용하여 /etc/ssh/sshd_config를 수정했습니다.
Subsystem sftp internal-sftp -l VERBOSE
Match Group sftpusers
X11Forwarding no
AllowTcpForwarding no
ChrootDirectory %h
ForceCommand internal-sftp
ssh 기능이 다음과 같이 제한되는 sftpusers 그룹에 사용자를 생성합니다.
useradd -g sftpusers -s /sbin/nologin <username>
문제는 다음 명령을 사용하여 홈 폴더의 모든 사용자 및 그룹에 재귀 권한을 부여하더라도 기본 파일 권한이 파일 구조에 재귀적으로 설정한 것이 아니기 때문에 새 파일을 생성하면 즉시 액세스 권한을 잃게 된다는 것입니다.
chmod -R 777 /home/<username>/
사용자에게 파일 구조의 소유권을 부여하려고 시도했지만 이로 인해 사용자가 더 이상 sftp를 수행할 수 없게 되었습니다(홈 디렉터리와 모든 하위 구성 요소를 루트가 소유해야 하는 ChrootDirectory 옵션 때문이라고 생각합니다). 저는 사용자가 sftp(ssh 없음)만 허용하고 특별히 액세스 권한을 부여하거나 생성하지 않는 한 홈 디렉터리에 있는 대부분의 파일에 액세스할 수 없도록 하는 솔루션을 정말 원합니다.
답변1
다음 단계를 수행하면 원하는 것을 얻을 수 있습니다.
사용자 디렉터리의 모든 파일과 폴더에 대해서만 소유자 액세스 권한을 반복적으로 부여합니다(루트 또는 파일 소유자만 모든 항목에 액세스할 수 있음).
chmod -R 700 /home/<사용자 디렉터리>/
sftp를 사용할 때 파일을 나열할 수 있도록 사용자 및 그룹에 chroot에 대한 액세스 권한을 부여합니다(이 명령을 실행한 후 sftp 사용자는 사용자 디렉터리의 내용을 나열할 수 있습니다).
chmod 755 /home/<사용자 디렉터리>/
사용자에게 전체 액세스 권한을 부여하려는 파일의 소유권 또는 디렉터리의 재귀적 소유권을 부여합니다.
chown /home/<사용자 디렉터리>/file
또는
chown -R /home/<사용자 디렉터리>/dir
필요에 따라 2단계와 3단계를 반복하여 어디서나 액세스할 수 있습니다. 도움이 되었기를 바랍니다!