Chroot SFTP 사용자 쓰기 권한

Chroot SFTP 사용자 쓰기 권한

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/usernamechroot가 없을 때와 동일한 디렉터리를 가리킵니다. SFTP를 사용하여 로그인한 제한된 사용자의 경우 로 표시됩니다 /username. 디렉토리는 소유자(제한된 사용자)가 쓸 수 있습니다. 제한된 사용자는 형제 사용자의 상위 또는 홈 디렉토리를 이름별로 나열할 수 없습니다.

사용자의 유일한 특별한 점은 그룹에 참여한다는 sftponly것입니다 . sftponly솔루션 1보다 작업하기가 더 쉽다는 것을 알았습니다.

노트 2

  1. "home"이라는 사용자가 홈 디렉터리를 소유하게 할 수 없습니다./home/home
  2. /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에 연결할 수 있습니다. 데비안이 다른 버전과 다른지는 확실하지 않지만, 제가 설치한 우분투에서는 그렇게 합니다.

관련 정보