
Estou executando o Amazon Linux AMI (derivado do Red Hat) e criando um novo servidor SFTP usando OpenSSH. Gostaria que o usuário SFTP ficasse restrito a um diretório e pudesse gravar no diretório inicial mostrado pelo cliente SFTP.
Estou usando ChrootDirectory para fazer chroot do usuário /home/customers/srgcompany
. Isso significa que este diretório deve pertencer ao root e ser gravável apenas pelo 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 na qual o grupo do usuário ( srgcompany
) tem permissão de leitura/gravação/execução/sgid em /home/customers/srgcompany/fileshere
. Configurei o SFTP do OpenSSH com Subsystem sftp internal-sftp -u 0007 -l INFO
.
Portanto, agora, quando o usuário usa um cliente SFTP para se conectar, o diretório mostrado (e retornado pelo comando pwd) não pode ser gravado. O usuário pode fazer cd para a pasta fileshere e escrever lá. Existe alguma maneira de fazer com que a pasta fileshere seja o diretório de trabalho remoto inicial assim que o usuário SFTP entrar, como no exemplo abaixo? Ou posso tornar a pasta chroot 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.
Responder1
Quando não estiver usando chroot ou internal-sftp, o pacote OpenSSH usa um programa nomeado sftp-server
para lidar com sessões SFTP recebidas. Odocumentação para servidor sftplista uma opção de linha de comando para o diretório inicial:
-dstart_directory
especifica um diretório inicial alternativo para usuários. O nome do caminho pode conter os seguintes tokens que são expandidos em tempo de execução: %% é substituído por um literal '%', %d é substituído pelo diretório inicial do usuário que está sendo autenticado e %u é substituído pelo nome de usuário desse usuário. O padrão é usar o diretório inicial do usuário. Esta opção é útil em conjunto com a opção sshd_config(5) ChrootDirectory.
Essa documentação também se aplica ao internal-sftp
subsistema, portanto você também pode usar esta opção com ele. Observe 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