Raspberry Pi에서 chroot를 사용하는 간단한 sftp 서버 설정과 관련된 문제로 어려움을 겪고 있습니다. 특히 sftp 서버에 연결하여 폴더를 생성하려고 하면 "디렉토리를 생성할 수 없습니다: 실패했습니다"라는 메시지가 나타납니다.
sftp_users 그룹에 andrea_share라는 사용자를 만들었습니다.
# adduser --no-create-home andrea_share
# usermod -a -G sftp_users andrea_share
# usermod --shell /usr/bin/nologin andrea_share
/dir_sftp/andrea/share
그런 다음 다음 권한을 사용하여 sftp 폴더를 만들었습니다.
drwxr-xr-x 3 root root 4096 XXX XX XX:XX dir_sftp
drwxr-xr-x 3 root root 4096 XXX XX XX:XX andrea
drwxr-xr-x 3 andrea_share sftp_users 4096 XXX XX XX:XX share
sshd_config 파일이 다음과 같이 수정되었습니다.
# Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
그리고 파일 끝에
Match User andrea_share
ChrootDirectory /dir_sftp/andrea
ForceCommand internal-sftp
PasswordAuthentication yes
AllowTCPForwarding no
X11Forwarding no
이전에 각각 no와 yes로 설정되었기 PasswordAuthentication
때문에 필수입니다.X11Forwarding
시스템을 다시 시작하고 패키지를 업데이트하려고 시도했지만 성공하지 못했습니다.
업데이트 날짜: 2020년 12월 15일
이것은 /share에 폴더를 만들려고 할 때 나타나는 결과입니다.
sftp> pwd
Remote working directory: /share
sftp> mkdir ./test
Couldn't create directory: Failure
또한 /share 폴더에서 파일을 삭제할 수는 있지만 파일을 업로드할 수는 없습니다. 다음은 내가 얻은 출력의 예입니다.
sftp> put ./test.jpg
Couldn't write to remote file "/share/test.jpg"
그중 test.jpg가 내 로컬 컴퓨터의 테스트 사진입니다.
답변1
문제가 해결되었습니다. 잘못된 rsync 설정으로 인해 sftp 폴더가 있는 드라이브가 가득 찼습니다. 드라이브를 청소한 후 SFTP 서버가 제대로 작동합니다. 죄송합니다. 이건 제 실수입니다.
답변2
대상 사용자의 홈 디렉토리는 루트가 (올바르게) 소유하고 있고 루트만이 해당 디렉토리에 쓸 수 있는 권한을 갖고 있기 때문에 디렉토리를 생성할 수 없습니다. 이것이 share
하위 디렉터리를 만드는 이유입니다. 하위 디렉터리에서 파일/디렉터리를 만들고 삭제할 수 있습니다.
(이것은 Windows가 아닙니다. 재부팅으로 인해 시스템이 다른 작업을 수행하는 경우는 거의 없습니다. Windows에서 재부팅이 잘 작동하는 데는 타당한 이유가 있지만 이 기사의 범위를 벗어납니다.)