Definir o Diretório de Trabalho Remoto Inicial no SFTP

4

Estou executando o Amazon Linux AMI (derivativo do Red Hat) e estou criando um novo servidor SFTP usando o OpenSSH. Eu gostaria que o usuário do SFTP fosse restrito a um diretório e pudesse gravar no diretório inicial mostrado pelo seu cliente SFTP.

Estou usando o ChrootDirectory para fazer o chroot do usuário em /home/customers/srgcompany . Isso significa que este diretório deve ser de propriedade de root e somente gravável por root. A entrada passwd do usuário se parece com fflintstone:x:508:515:Fred Flintstone:/home/fflintstone:/sbin/nologin . Coloquei a chave pública do usuário em /home/fflintstone/.ssh/authorized_keys . Eu criei uma pasta em que o grupo do usuário ( srgcompany ) tem permissão de leitura / gravação / execução / sgid em /home/customers/srgcompany/fileshere . Eu configurei o SFTP do OpenSSH com Subsystem sftp internal-sftp -u 0007 -l INFO .

Então, agora, quando o usuário usa um cliente SFTP para se conectar, o diretório que é mostrado (e é retornado pelo comando pwd) não pode ser gravado. O usuário pode criar um cd para a pasta fileshere e escrever lá. Existe alguma maneira de fazer essa pasta fileshere ser o diretório de trabalho remoto inicial assim que o SFTP do usuário entrar, como no exemplo abaixo? Ou posso fazer com que a pasta chrooted seja gravável?

O que eu quero:

$ sftp sftpserver.sssprockets.com
Connected to sftpserver.sssprockets.com.
sftp> pwd
Remote working directory: /fileshere

Qualquer ajuda é muito apreciada.

    
por pgn674 30.04.2015 / 21:53

1 resposta

3

Quando não estiver usando o chroot ou o interno-sftp, o pacote OpenSSH usa um programa chamado sftp-server para tratar de sessões SFTP de entrada. A documentação do sftp -server lista uma opção de linha de comando para o diretório inicial:

-d start_directory
specifies an alternate starting directory for users. The pathname may contain the following tokens that are expanded at runtime: %% is replaced by a literal '%', %d is replaced by the home directory of the user being authenticated, and %u is replaced by the username of that user. The default is to use the user's home directory. This option is useful in conjunction with the sshd_config(5) ChrootDirectory option.

Essa documentação também se aplica ao subsistema internal-sftp , então você também pode usar essa opção com isso. Note que você deve especificar o diretório inicial relativo ao chroot, não a raiz real do sistema:

Subsystem sftp internal-sftp -u 0007 -l INFO -d /fileshere
    
por 30.04.2015 / 23:26