안전한 방식으로 클라이언트와 파일을 교환할 수 있도록 회사의 sftp 서버를 구체적으로 구성해야 합니다(서버는 Debian Linux 8.7을 실행 중입니다).
- 모든 지원 직원(각각 별도의 사용자 계정 보유)이 읽기/쓰기 액세스 권한을 갖는 "고객" 폴더가 필요합니다.
- "Customers" 폴더 아래에 각 고객에 대한 하위 폴더를 만들어야 합니다.
- 또한 각 고객은 서버에 자신의 사용자 계정을 가지고 있습니다.
- "지원 사용자"는 "클라이언트" 폴더에서 루트로 지정되어야 합니다.
- 각 "게스트 사용자"는 자신의 디렉터리에서 루트를 변경해야 합니다.
- 인증 방법은 비밀번호로 보호된 인증서를 사용해야 합니다(비밀번호가 아님).
- 지원 사용자와 고객 사용자 모두 최상위 폴더(고객)에 있는 파일 및/또는 폴더를 추가, 변경 또는 삭제할 수 없습니다.
customers <--------- All support personel entry point | +--customer_001 <-------- Customer 1 entry point | | | +--files... | +--customer_002 <-------- Customer 2 entry point | | | +--files... | +--customer_003 <-------- Customer 3 entry point | | | +--files... . . .
sshd를 다음과 같이 구성했습니다.
[...]
PasswordAuthentication yes
[...]
# Subsystem sftp /usr/lib/openssh/sftp-server
Subsystem sftp internal-sftp
[...]
Match Group kunden
ChrootDirectory %h
ForceCommand internal-sftp
Match Group wit-user
ChrootDirectory /var/sftp/customers
ForceCommand internal-sftp
- "고객 사용자"는 홈 디렉터리가 "고객" 아래의 해당 디렉터리가 되도록 구성됩니다.
- 홈 디렉터리가 "고객" 폴더가 되도록 "지원 사용자"를 구성합니다(이것이 중요하거나 올바른지는 확실하지 않지만).
내 문제는 폴더와 파일의 소유권과 권한을 구성하는 방법을 잘 모르겠다는 것입니다. 내가 이해한 바로는 "internal-sftp" 서버에는 (ch)root 디렉토리에 root:root 소유권이 필요합니다. 두 경우 모두 루트 디렉터리가 다르기 때문에:
파일/디렉터리 권한을 구성하는 방법은 무엇입니까?
파일 및 디렉터리의 소유권을 어떻게 구성합니까?
홈 폴더가 해당 sftp chroot 디렉터리인 경우(올바른 해결 방법인 경우) 다양한 사용자의 ~/.ssh 폴더를 어떻게 처리해야 합니까?
이를 위해 ACL이 필요합니까? 그렇다면 위의 요구 사항을 충족하도록 어떻게 구성해야 합니까?
나는 노력했다이것("sshd-configuration"에 대한 독일어 ubunutusers.de wiki 항목) 그러나 이는 "지원 사용자"가 아닌 "고객 사용자" 문제의 일부만 해결합니다.