다른 FTP 디렉토리 chmod 설정과 결합된 SFTP 로그인 성공/실패 동작을 설명하는 방법은 무엇입니까?

다른 FTP 디렉토리 chmod 설정과 결합된 SFTP 로그인 성공/실패 동작을 설명하는 방법은 무엇입니까?

내가 시작한다면 -

sudo groupadd test_group
sudo useradd -g test_group -s /sbin/nologin test_user
sudo passwd test_user
    ...(some password)...
sudo mkdir -p /testdir/dev

또한 다음과 같이 "/etc/ssh/sshd_config"가 있습니다.

Include /etc/ssh/sshd_config.d/*.conf
ChallengeResponseAuthentication no
UsePAM yes
X11Forwarding no
PrintMotd no
AcceptEnv LANG LC_*
Subsystem sftp internal-sftp
Match User test_user
        ChrootDirectory /testdir
        PermitTunnel no
        ForceCommand internal-sftp -d /dev
        X11Forwarding no
        AllowTcpForwarding no

또한 "iptables" 규칙이 없으면 "test_user" 사용자 이름과 비밀번호를 지정하여 다른 컴퓨터(이 경우 filezilla를 사용하는 Windows PC)에서 SFTP 연결을 성공적으로 만들 수 있습니다. /testdir/dev 디렉토리의 내용만.

그러나 SFTP 세션에는 디렉터리 내용만 나열되어 있으며 실제로 파일을 보내거나 쓸 수 있는 권한은 없습니다. 즉, 나는 -

drwxr-xr-x  root root ... /testdir
drwxr-xr-x  root root ... /testdir/dev

그럴 수 있지. 이제 내 "test_user"가 "/testdir"에서 읽고 쓸 수 있고 모든 "test_group" 사용자가 읽을 수 있지만 다른 사용자는 액세스할 수 없도록 소유권과 권한을 적용하려고 합니다. 그럼 난-

sudo chown -R test_user:test_group /testdir
sudo chmod -R 640 /testdir

이제 이전에 성공했던 SFTP 연결이 "오류: 서버에 연결할 수 없습니다"라는 메시지와 함께 실패합니다.

이유는 모르겠지만 더 많은 자유와 모든 것에 대한 무료 액세스는 어떻습니까?

sudo chown -R test_user:test_group /testdir
sudo chmod -R 777 /testdir

"test_user" 연결에서도 동일한 SFTP 오류가 발생했습니다.

약간 혼란스러워서 소유권을 원래 케이스에 다시 넣었지만 이제 액세스 권한이 더 넓어졌습니다.

sudo chown -R root:root /testdir
sudo chmod -R 775 /testdir

그래도 연결되지 않습니다. 이전에 기억해 두세요사용자: rwx, 그룹: rx, 기타: rx 루트 루트성공적으로, 나는 지금사용자: rwx, 그룹: rwx, 기타: rx 루트 루트, 더 넓은 범위이지만 이제 SFTP가 실패합니다.

그런 다음 확인을 위해 다음을 사용하여 액세스 권한을 강화했습니다.

sudo chown -R root:root /testdir
sudo chmod -R 755 /testdir

내 sftp/filezilla 'test_user' + pw 연결이 다시 성공하여 /testdir/dev 디렉토리의 내용을 표시하지만 쓰기 권한은 여전히 ​​허용되지 않습니다.

나는 소유권과 액세스, 그리고 sftp 서비스가 궁극적으로 여기에서 하려는 작업의 메커니즘을 분명히 오해하고 있습니다. 누군가 이것을 설명할 수 있나요-

  1. 'chmod -R 640 /testdir' 및 소유자 'test_user:test_group'(rw- r-- --- test_user test_group) 사례가 나에게 필요한 것 같습니다('test_user'는 읽고 쓸 수 있고 'test_group의 다른 구성원은 ' 읽을 수 있음) - 그렇죠? - 그런데 왜 SFTP 연결이 실패합니까?
  2. "d rwx rx rx 루트 루트" 케이스가 사용자 "test_user"에 대한 성공적인 SFTP 연결을 활성화하는 경우 그 이유는 무엇입니까?넓히다rwx r 권한을 부여했습니다.x rx root root'(775)를 입력하면 SFTP 연결이 실패하게 됩니까?
  3. SFTP 연결을 통해 이러한 "/testdir/..." 디렉터리에 대한 "test_user" 읽기/쓰기 액세스를 허용하지만 다른(루트가 아닌) 사용자에 대한 액세스는 허용하지 않는 올바른/가장 좋은 방법은 무엇입니까?
  4. SFTP 서버(아마도 다른 사용자로 실행 중)의 전체 SFTP 연결/인증 단계에 대한 일련의 단계 및 프로세스에 대해 더 자세히 설명하면 여기서 무슨 일이 일어나고 있는지 더 명확하고 직관적으로 이해할 수 있습니까?

답변1

이것ChrootDirectorysshd 옵션에 대한 문서부분적으로는 다음과 같이 말합니다.

세션 시작 시 sshd(8)는 경로 이름의 모든 구성 요소가 다른 사용자나 그룹이 쓸 수 없는 루트가 소유한 디렉터리인지 확인합니다.

즉, /testdir디렉터리는 그룹이나 기타 쓰기 권한 없이 루트가 소유해야 합니다. 이러한 조건이 충족되지 않으면 sshd회의가 취소될 것이라고 생각합니다.

이러한 제한 사항은 chroot 디렉터리와 해당 상위 디렉터리에만 적용됩니다. /testdir원하는 소유권과 권한으로 파일과 디렉터리를 만들 수 있습니다 .

관련 정보