내가 시작한다면 -
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 서비스가 궁극적으로 여기에서 하려는 작업의 메커니즘을 분명히 오해하고 있습니다. 누군가 이것을 설명할 수 있나요-
- 'chmod -R 640 /testdir' 및 소유자 'test_user:test_group'(rw- r-- --- test_user test_group) 사례가 나에게 필요한 것 같습니다('test_user'는 읽고 쓸 수 있고 'test_group의 다른 구성원은 ' 읽을 수 있음) - 그렇죠? - 그런데 왜 SFTP 연결이 실패합니까?
- "d rwx rx rx 루트 루트" 케이스가 사용자 "test_user"에 대한 성공적인 SFTP 연결을 활성화하는 경우 그 이유는 무엇입니까?넓히다rwx r 권한을 부여했습니다.승x rx root root'(775)를 입력하면 SFTP 연결이 실패하게 됩니까?
- SFTP 연결을 통해 이러한 "/testdir/..." 디렉터리에 대한 "test_user" 읽기/쓰기 액세스를 허용하지만 다른(루트가 아닌) 사용자에 대한 액세스는 허용하지 않는 올바른/가장 좋은 방법은 무엇입니까?
- SFTP 서버(아마도 다른 사용자로 실행 중)의 전체 SFTP 연결/인증 단계에 대한 일련의 단계 및 프로세스에 대해 더 자세히 설명하면 여기서 무슨 일이 일어나고 있는지 더 명확하고 직관적으로 이해할 수 있습니까?
답변1
이것ChrootDirectory
sshd 옵션에 대한 문서부분적으로는 다음과 같이 말합니다.
세션 시작 시 sshd(8)는 경로 이름의 모든 구성 요소가 다른 사용자나 그룹이 쓸 수 없는 루트가 소유한 디렉터리인지 확인합니다.
즉, /testdir
디렉터리는 그룹이나 기타 쓰기 권한 없이 루트가 소유해야 합니다. 이러한 조건이 충족되지 않으면 sshd
회의가 취소될 것이라고 생각합니다.
이러한 제한 사항은 chroot 디렉터리와 해당 상위 디렉터리에만 적용됩니다. /testdir
원하는 소유권과 권한으로 파일과 디렉터리를 만들 수 있습니다 .