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 é
chrootcomo 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á
chrootda 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 quesshdtem todosftp-servercompilado e em vez deexecno binário, apenas chama a função onde o comportamento do servidor é definido. Isso não requer nenhum arquivo de suporte emchrootpara 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.