
Amazon Linux AMI(Red Hat 파생)를 실행 중이고 OpenSSH를 사용하여 새 SFTP 서버를 생성 중입니다. SFTP 사용자가 디렉터리로 제한되고 SFTP 클라이언트에 표시되는 초기 디렉터리에 쓸 수 있기를 바랍니다.
ChrootDirectory를 사용하여 사용자를 /home/customers/srgcompany
. 즉, 이 디렉토리는 루트가 소유해야 하며 루트만 쓸 수 있어야 합니다. 사용자의 passwd 항목은 다음과 같습니다 fflintstone:x:508:515:Fred Flintstone:/home/fflintstone:/sbin/nologin
. 사용자의 공개 키를 /home/fflintstone/.ssh/authorized_keys
. 사용자 그룹( srgcompany
)이 읽기/쓰기/실행/sgid 권한을 가지고 있는 폴더를 에 만들었습니다 /home/customers/srgcompany/fileshere
. OpenSSH의 SFTP를 Subsystem sftp internal-sftp -u 0007 -l INFO
.
따라서 현재 사용자가 SFTP 클라이언트를 사용하여 연결하면 표시되는(그리고 pwd 명령에 의해 반환되는) 디렉터리에 쓸 수 없습니다. 사용자는 fileshere 폴더로 CD를 이동하여 거기에 쓸 수 있습니다. 아래 예와 같이 사용자 SFTP가 로그인하자마자 해당 filehere 폴더를 초기 원격 작업 디렉터리로 만들 수 있는 방법이 있습니까? 아니면 chroot된 폴더를 쓰기 가능하게 만들 수 있나요?
내가 원하는 것:
$ sftp sftpserver.sssprockets.com
Connected to sftpserver.sssprockets.com.
sftp> pwd
Remote working directory: /fileshere
어떤 도움이라도 대단히 감사하겠습니다.
답변1
chroot 또는 Internal-sftp를 사용하지 않는 경우 OpenSSH 패키지는 sftp-server
들어오는 SFTP 세션을 처리하기 위해 명명된 프로그램을 사용합니다. 그만큼sftp-server에 대한 문서시작 디렉터리에 대한 명령줄 옵션을 나열합니다.
-디start_directory는
사용자의 대체 시작 디렉터리를 지정합니다. 경로 이름에는 런타임 시 확장되는 다음 토큰이 포함될 수 있습니다. %%는 리터럴 '%'로 대체되고, %d는 인증되는 사용자의 홈 디렉터리로 대체되며, %u는 해당 사용자의 사용자 이름으로 대체됩니다. 기본값은 사용자의 홈 디렉터리를 사용하는 것입니다. 이 옵션은 sshd_config(5) ChrootDirectory 옵션과 함께 유용합니다.
해당 문서는 하위 시스템에도 적용되므로 internal-sftp
이 옵션을 하위 시스템과 함께 사용할 수도 있습니다. 시스템의 실제 루트가 아닌 chroot를 기준으로 시작 디렉터리를 지정해야 합니다.
Subsystem sftp internal-sftp -u 0007 -l INFO -d /fileshere