SFTP 사용자만을 위한 설정이 있습니다:
Match Group sftponly
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
secure.log에 다음 메시지가 표시됩니다.
fatal: bad ownership or modes for chroot directory
match 키워드를 사용하면 몇 가지 보안 문제가 발생합니다... 디렉토리는 루트가 소유해야 하며 디렉토리는 chmod 755(drwxr-xr-x)여야 합니다. 따라서 SSH 보안으로 인해 루트 사용자만 쓰기 가능하고 그룹별로 쓰기 불가능으로 설정된 경우 해당 사용자는 해당 폴더에 대한 쓰기 권한을 가질 수 없습니다.
누구든지 좋은 해결책을 알고 있습니까?
답변1
최근에 다음과 같은 해결 방법을 찾았습니다.
/etc/ssh/sshd_config:
...
Subsystem sftp internal-sftp
Match Group sftponly
ChrootDirectory /home
AllowTCPForwarding no
X11Forwarding no
ForceCommand internal-sftp
디렉토리 권한:
root@server:~ # chown root:root /home
root@server:~ # chmod 111 /home
root@server:~ # chmod 700 /home/*
이제 /home
제한된 사용자에 대한 요구 사항이 충족 ChrootDirectory
되어 제한된 사용자가 나열할 수 없지만 sftponly
홈 디렉터리가 평소와 같이 설정된 경우 사용자는 로그인( )할 수 없습니다 /home/$LOGNAME
. chroot 환경에서는 홈 디렉터리가 내부에 없습니다. /home
, 그러나 하위 루트( /
) 바로 내부에 있습니다.
솔루션 1
제한된 사용자의 홈을 chroot에 표시되는 방식으로 설정합니다.
root@server:~ # usermod -d /username username
참고 1
제한되지 않은 사용자나 일부 관리 스크립트가 bash의 물결표 확장을 사용한 경우 지금처럼 ~username
확장되지만 /username
이는 의도된 바가 아닙니다.
또한 사용자를 생성하는 관리자는 sftponly
기본이 아닌 홈페이지를 사용해야 한다는 점을 기억해야 합니다. 이 문제는 스크립트로 해결할 수 있습니다. 관리자는 이를 사용하는 것을 기억해야 합니다.
솔루션 2
이전에 사용했던 대안은 다음과 같습니다.
root@server:~ # ln -s . /home/home
즉, /home
자체 디렉토리 이름에 심볼릭 링크를 생성합니다. 이제 chroot 아래에서 /home/username
chroot가 없을 때와 동일한 디렉터리를 가리킵니다. SFTP를 사용하여 로그인한 제한된 사용자의 경우 로 표시됩니다 /username
. 디렉토리는 소유자(제한된 사용자)가 쓸 수 있습니다. 제한된 사용자는 형제 사용자의 상위 또는 홈 디렉토리를 이름별로 나열할 수 없습니다.
사용자의 유일한 특별한 점은 그룹에 참여한다는 sftponly
것입니다 . sftponly
솔루션 1보다 작업하기가 더 쉽다는 것을 알았습니다.
노트 2
- "home"이라는 사용자가 홈 디렉터리를 소유하게 할 수 없습니다.
/home/home
/home
계층 구조를 탐색하고 심볼릭 링크된 스크립트를 따르는 데 주의해야 합니다 .
답변2
in 및 out 디렉토리와 같은 사용자의 홈 디렉토리에 구조를 생성해야 합니다. 이 디렉토리는 사용자가 소유해야 하며 사용자는 거기에 파일을 배치하고 가져올 수 있습니다.
답변3
우리 서버에도 동일한 설정이 있습니다. 우리는 동일한 SSHD 구성을 사용합니다. 사용자의 홈 디렉토리는 루트가 소유하며 documents
그 안에 public_html
해당 사용자가 소유한 폴더가 있습니다. 그런 다음 사용자는 SFTP를 사용하여 로그인하고 이러한 폴더에 씁니다(홈 디렉터리에 직접 쓰는 대신). SSH를 허용하지 않기 때문에 완전히 작동합니다. /etc/skel/에서 새 사용자를 위해 생성되는 디렉터리를 조정할 수 있습니다(적어도 openSUSE에서는 다른 배포판에 익숙하지 않습니다).
또 다른 가능성은전방십자인대(오픈수세 문서) - 개별 사용자의 홈 디렉터리에 대한 쓰기 권한을 추가할 수 있습니다.
답변4
"디렉터리 권한" 섹션을 참조하세요.@artm의 답변(방금 테스트한 결과)에서 다음을 발견했습니다.
root@server:~ # chmod 111 /home <- Does not work
SFTP 연결이 우분투에서 작동하는 것을 허용하지 않으며 모든 것에 대한 실행 권한(예: 111)만 갖습니다.
내가 찾은 것 :
root@server:~ # chmod 555 /home
읽기 및 실행 권한(예: 555)으로 SFTP에 연결할 수 있습니다. 데비안이 다른 버전과 다른지는 확실하지 않지만, 제가 설치한 우분투에서는 그렇게 합니다.