새 SFTP 사용자가 다른 디렉터리에서 작업하지 않는 이유는 무엇입니까?

새 SFTP 사용자가 다른 디렉터리에서 작업하지 않는 이유는 무엇입니까?

내 서버에 대한 새 SFTP 계정을 만들려고 합니다. 이 지침을 따를 때정확히, 그러면 모든 것이 잘 작동합니다.https://www.thegeekstuff.com/2012/03/chroot-sftp-setup/

guestuser을 통해 사용자 와 연결하고 sftp, 내 홈 디렉터리를 찾아보고, 에서 한 수준 위로 이동할 수 incoming있습니다 /sftp/guestuser.

매개변수를 구현하는 대신 ChrootDirectory의 값을 /etc/ssh/sshd_config구체적으로 be로 변경할 수도 있습니다 . 따라서 하드코딩된 디렉토리 이름은 제대로 작동합니다./sftp/guestuser%u

하지만 그 시점부터 내가 하는 일은 ChrootDirectorysftpusers그룹의 을 내 실제 웹 사이트 디렉터리로 변경하는 것뿐이라면 더 이상 해당 사용자에 대한 명령을 /var/www/www.example.com통해 연결할 수 없습니다 . sftp셸은 다음을 출력합니다.

원격 호스트에 의해 www.example.com에 대한 연결이 종료되었습니다. 패킷을 읽을 수 없습니다. 피어에 의해 연결이 재설정되었습니다.

나는 확실히 그랬다:

  1. incoming/var/www/www.example.com디렉토리 에 폴더 가 있는지 확인하세요.
  2. /var/www/www.example.com및 둘 다의 소유권을 설정합니다 /var/www/www.example.com/incoming.guestuser:sftpusers
  3. /다음을 수행하여 사용자의 홈 디렉토리를 설정해 보았습니다.usermod guestuser -d /

/sftp/guestuser(작동했던 디렉토리)는 의 소유권을 갖고 있으므로 의 root:root권한이 /var/www켜져 있다는 사실은 root:root중요하지 않습니다(?)

새 SFTP 사용자의 홈 디렉터리를 변경할 수 없는 이유는 무엇입니까?

업데이트

디렉토리를 다음으로 변경할 수 있습니다.

  • /sftp
  • /
  • /var
  • /var/www

그것들은 모두 작동합니다. 하지만 아래로 한 번 더 들어가 /var/www자마자 /var/www/test작동하지 않습니다. 원래 디렉토리 이름인 에서 점을 제거해 보았지만 www.example.com아무런 차이가 없었습니다.

/sftp/guestuser/incoming또한 작동했기 때문에 하위 디렉터리 수준 수에 대한 제한도 아닙니다 . 새 디렉토리로 테스트 /web/www.example.com하지 않았습니다.

답변1

좋아, 원인을 정확히 찾아낼 수 있었어. ChrootDirectory사용자에 대해 내가 정의한 디렉토리는 의 소유여야 합니다 root.

내 사용자가 콘텐츠를 업로드할 수 있도록 하려면(물론 루트 소유의 디렉터리에서는 업로드할 수 없음) 거기에 하위 디렉터리를 만들고 매개변수를 통해 해당 디렉터리를 사용자의 홈으로 설정해야 합니다 -d. 사용자를 생성하거나 편집할 때.

ChrootDirectory어느 시점에서든 FTP를 시도하는 사용자가 소유권을 갖도록 소유권이 변경되면 broken pipe메시지가 다시 나타납니다. 소유권을 다시 으로 변경하면 root사용자가 다시 연결할 수 있습니다.

관련 정보