저는 Ubuntu 22.04.3을 실행 중이고 SSHD를 통해 SFTP 서버를 구성했습니다. 저는 여러 개의 사용자 홈 디렉토리를 가지고 있는데 각각 드롭 폴더와 선택 폴더가 있습니다. 내 관리 사용자는 서버를 탐색하고 모든 디렉터리의 내용을 볼 수 있습니다. 관리자는 다른 사용자의 디렉터리에 있는 파일을 추가하거나 삭제할 수 없습니다. 위의 픽업 및 발신 디렉터리는 루트가 소유하고 그룹에는 "sftp"라는 레이블이 지정됩니다. sftp 그룹에는 내 서버에 액세스하고 파일을 선택/삭제하려는 모든 사용자가 포함되어 있습니다. 내 관리 사용자는 sftp 그룹에 속하지 않습니다. SFTP 그룹에 관리자를 추가하면 더 이상 관리자로 서버에 액세스할 수 없습니다. 관리자가 그룹에 속하지 않을 때 서버에 액세스할 수 있지만 sftp 그룹에 속한 디렉터리에서 파일을 추가/제거할 수는 없습니다.
내 sshd.conf는 다음과 같습니다.
AcceptEnv LANG LC_*
Subsystem sftp /usr/lib/openssh/sftp-server
PasswordAuthentication yes
Match group sftp
ChrootDirectory /home/%u
X11Forwarding no
AllowTcpForwarding no
ForceCommand internal-sftp
어떤 지침이라도 대단히 감사하겠습니다.
편집 1:
ls -ld pickup
프로그램drwxrwxr-x 2 root sftp 4096 Dec 18 16:22 pickup
편집 2:
저는 WinSCP와 FileZilla를 사용하여 서버에 연결하고 있습니다. 터미널 사용이 처음이고 클라이언트와 파일을 주고 받아야 하는 사용자가 있습니다. 이 관리자 계정은 현재 서버의 모든 파일을 볼 수 있지만 파일(예: .xlsx)을 추가하거나 삭제할 수는 없습니다. 터미널 경험이 없거나 SFTP가 무엇인지 이해하지 못하는 사람에게는 서버에 대한 전체 액세스 및 제어 권한을 부여하지 않습니다. 그것은 현명하지 못한 일입니다. 제가 하고 싶은 것은 테스트할 계정을 만드는 것입니다. 이렇게 하면 사용자에게 계정을 부여하기 전에 계정에 어떤 권한과 속성을 부여해야 하는지 알 수 있습니다.
현재 계정은 등의 디렉터리에 있는 파일을 볼 수 있지만 /home/client1/dropoff
드롭오프 디렉터리에서 파일을 추가하거나 제거할 수는 없습니다. /home/
모든 클라이언트 디렉터리와 하위 디렉터리를 탐색하고 이동하여 마음대로 파일을 추가하거나 제거하려면 계정이 필요합니다 . 현재 내 클라이언트 사용자는 자신의 홈 디렉터리 /client1/
와 해당 하위 디렉터리 에만 액세스할 수 있습니다 . 고객 계정은 하위 디렉터리와 마찬가지로 "sftp" 그룹의 구성원이므로 문제 없이 파일을 추가하거나 삭제할 수 있습니다.
이 관리자 계정을 sftp 그룹에 추가하려고 시도했지만 이렇게 하면 더 이상 WinSCP 또는 FileZilla를 통해 서버에 연결할 수 없습니다. WinSCP에서 SFTP 환경 설정의 프로토콜 옵션을 "default"에서 "sudo su -c /bin/sftp-server"로 변경하려고 시도했지만 이로 인해 오류가 발생했습니다. Cannot initialize SFTP protocol. Is the host running an SFTP server?
서버와 프로토콜을 확인할 때 이 정보를 알고 있습니다. 파일 전송 프로토콜에는 "SFTP-3"이라는 라벨이 붙어 있습니다.
내 관리자 계정이 속한 그룹은 다음과 같습니다.
sudo adm cdrom dip plugdev lxd ftpadmin
답변1
의견에 따르면 귀하가 말하는 "관리자 사용자"는 "FTP/SFTP 게이트키퍼 사용자"와 같은 이름으로 불려야 합니다.
이 목적을 위해 그룹을 만들고 다음을 수행해야 합니다.둘 다"관리자 사용자" 및 이 그룹의 픽업 디렉터리 구성원인 사용자입니다.
파일 의 조항 이 그룹 구성원을 홈 디렉터리로 제한하고 SFTP 액세스만 허용하므로 이 sftp
그룹은 이 목적에 적합하지 않습니다 . 분명히 "관리자"는 픽업 디렉터리 관리 작업을 수행할 수 없기 때문에 이러한 일이 발생하는 것을 원하지 않을 것입니다.Match
sshd_config
픽업/드롭 오프 디렉토리는 해당 사용자가 소유해야 하며 chgrp
이 새 그룹에 추가되어야 합니다. 그런 다음 를 선택/드롭 디렉터리로 설정해야 합니다 chmod g+swx
. 이렇게 하면 선택/드롭 사용자가 넣은 모든 새 파일이 새 그룹의 그룹 소유권을 갖게 되며 새 그룹의 구성원이 해당 디렉터리(예: 사용자 자체 및 관리자 사용자 선택/삭제) 읽기/쓰기 액세스.
관리 사용자는 새 그룹의 구성원이어야 하지만 이 sftp
그룹에는 속하지 않아야 합니다.
이런 방식으로 권한을 설정한 후에는 명령줄에 능숙하지 않은 관리자 계정에서 강력한 그룹 멤버십을 제거할 수 있습니다 sudo
.adm
관리자가 SFTP에만 액세스하도록 제한하려는 경우(명령줄에 익숙하지 않다고 말했기 때문에) 다음 위치에 있는 관리자에 대한 새 Match
블록을 작성할 수 있습니다.sshd_config
뒤쪽에조각 Match group sftp
:
Match group <new group>
X11Forwarding no
AllowTCPForwarding no
ForceCommand internal-sftp
이렇게 하면 관리자 사용자 계정을 사용한 명령줄 액세스가 방지되어 엄격하게 SFTP 기반 픽업/배송 디렉터리 관리 계정이 됩니다. 이 설정은 그룹 멤버십을 기반으로 하기 때문에 나중에 간단히 사용자를 생성하고 이 새 그룹에 추가하여 새 픽업 관리자 계정을 추가할 수 있습니다.