Criei o usuário MY_USER. Defina seu diretório inicial como /var/www/RESTRICTED_DIR, que é o caminho ao qual ele deve ser restrito. Então eu editei sshd_config e configurei:
Match user MY_USER
ChrootDirectory /var/www/RESTRICTED_DIR
Então eu reiniciei o ssh. Tornou o proprietário MY_USER (e proprietário do grupo) de RESTRICTED_DIR e modificou-o para 755. Eu recebo
Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER
Se eu removi as 2 linhas de sshd_config o usuário pode fazer login com sucesso. É claro que ele pode acessar todo o servidor. Qual é o problema? Eu até tentei chown RESTRICTED_DIR para fazer o root (como li em algum lugar que alguém resolveu esse mesmo problema fazendo isso). Sem sorte..
Da página : _
man
Meu palpite é que um ou mais diretórios no caminho não atendem a esses requisitos (minha suspeita
www
é de propriedade ou gravável pelo seu usuário da web, não pelo root).Volte e siga as instruções, garantindo que os requisitos acima em negrito e itálico sejam atendidos.
O diretório ChrootDirectory deve ser de propriedade do root e ter o modo 755:
Ok, agora todos os arquivos em
/var/www/RESTRICTED_DIR
devem ser de propriedade deMY_USER
, que deve pertencer aowww-data
grupo, e ter o modo 775 para permitir permissões de grupo, assim:NOTA: Lembre-se de que é uma boa prática permitir o acesso apenas a uma pasta htdocs se você estiver configurando o apache.
Após algumas soluções de problemas hoje, percebi que o root também deve poder gravar nos diretórios.
O seguinte não funcionou:
Assim que consertei isso, meu chroot começou a funcionar.
No meu caso, as etapas abaixo funcionaram.
useradd -d /data/ftp/user1 -s /bin/false -g users -G sftponly user1
passwd user1
chown root:root /data/ftp/user1
chmod go+rx /data/ftp/user1
mkdir /data/ftp/user1/{upload,download}
chown user1:users /data/ftp/user1/{upload,download}
sftp user1@ipaddress_server
Verifique se o usuário1 pode gravar em /data/ftp/user1/{upload,download}
Melhor se user1 só tiver acesso sftp e não ssh. Além disso, o user1 deve ser chroot para seu diretor inicial. Isso ajudará https://medium.com/tensult/configure-ftp-on-aws-ec2-85b5b56b9c94