A outra resposta é bem vaga (também a questão é), então tentarei ser mais detalhado sobre esse fenómeno. Eu sei que este tópico não é para todos, mas para esses interessados é uma coisa muito boa de se conhecer.
Existem dois lugares diferentes onde o chroot
é feito e você está cutucando os dois, então tentarei alinhar suas idéias:
-
Existe separação de privilégios , que é um mecanismo de segurança e parte dele também é
chroot
como uma limitação de criança de rede. Isso geralmente é um diretório vazio, como/var/empty
.A razão é que em poucas palavras, se houver alguma vulnerabilidade, provavelmente não será explorável, porque esse processo não vê o sistema de arquivos e também é limitado de outras maneiras (sandbox, SECCOMP palavras-chave para leituras posteriores).
-
Mais tarde, você poderá
chroot
da sessão do usuário (não apenas SFTP) em um diretório específico para impedir o acesso a todo o sistema de arquivos. Esta é provavelmente a parte em que você está interessado, com base no título.A magia sobre o sftp no chroot é que você pode especificar
Subsystem sftp internal-sftp
(em vez do caminho completoSubsystem sftp /usr/lib/openssh/sftp-server
). Isto implica quesshd
tem todosftp-server
compilado e em vez deexec
no binário, apenas chama a função onde o comportamento do servidor é definido. Isso não requer nenhum arquivo de suporte emchroot
para o usuário (ao contrário da sessão normal, em que você precisa do shell e de seus objetos compartilhados dependentes). Você também pode exigir o registro de soquete, se você estiver interessado em tais informações.