A diretiva ChrootDirectory
espera que o diretório chroot seja de propriedade de root
e não seja gravável por mais ninguém. Então você não pode jailar um usuário para um diretório e permitir que o usuário tenha permissão para gravar nesse diretório. Você pode:
Chroot para casa, faça o upload para upload/
O primeiro conjunto de comandos que você tentou está correto:
sudo chown root /home/james
sudo chmod go-w /home/james
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwX /home/james/upload
No entanto, a opção em sshd_config
seria:
Match Group sshusers
ChrootDirectory %h
ForceCommand internal-sftp
( %h
é substituído pelo diretório inicial do usuário que está sendo autenticado, equivalente a /home/%u
na maioria dos casos.)
Além disso, para limitar a visibilidade das pastas em /home/james
e restringir a permissão de gravação, use as opções recursivas para chown
e chmod
no primeiro comando para /home/james
e remova read
permissions. O conjunto modificado ficaria assim:
sudo chown root /home/james -R
sudo chmod go-rwx /home/james -R # Disallow traversing any directory in home
sudo chmod go+x /home/james # Allow traversing this directory
sudo mkdir /home/james/upload
sudo chown james:sshusers /home/james/upload
sudo chmod ug+rwx /home/james/upload
Agora, o usuário só deve conseguir acessar /home/james/upload
ou /upload
.
Chroot para upload, upload para upload/some_directory
Quase o mesmo que acima, substituindo /home/james/
por /home/james/upload
e /home/james/upload
por /home/james/upload/some_directory
. Nenhum ganho particular.
Altere o diretório inicial de james
para /upload
O comportamento usual do ChrootDirectory é: "Depois do chroot, o sshd (8) altera o diretório de trabalho para o diretório pessoal do usuário."
Então, alteramos o diretório inicial de james
:
usermod -d /upload user
Em seguida, defina o ChrootDirectory
para /home/%u
. Use as mesmas restrições na primeira opção.