Isto é simples. Basta criar um novo utilizador com o seu directório home definido para aquele a que precisa de ter acesso (este comando deve ser executado sob sudo
ou na shell raiz):
adduser --home /restricted/directory restricted_user
Isto criará um utilizador restricted_user
, o directório /restricted/directory
e depois as permissões no directório serão definidas para que o utilizador possa escrever para ele. Não terá a capacidade de escrever para qualquer outro directório por defeito.
Se já tiver o directório, pode executar o comando adduser
com uma opção --no-create-home
anexada e definir permissões manualmente (também com privilégios de root), como por exemplo:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Se precisar de tornar inacessíveis para este utilizador directórios escrevíveis mesmo a nível mundial, existem duas variantes.
1) Se quiser fornecer uma sessão de shell interactiva ao utilizador, então considere seguir este manual ao criar uma cadeia de chroot (no seu /restricted/directory
).
Depois disso, adicione o seguinte ao seu sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Se precisar apenas dele para copiar ficheiros entre o seu ponto final de ligação e o seu anfitrião, tudo é muito mais fácil. Adicione estas linhas no final da sua sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Depois comente o Subsystem sftp /usr/lib/openssh/sftp-server
colocando um sinal de hash (#
) no início.
Depois de reiniciar o seu servidor SSH (não mata sessões interactivas no reinício, por isso é seguro mesmo que tenha configurado mal alguma coisa; também, não fecha a sua sessão em execução antes de ter verificado que ainda é capaz de iniciar sessão), tudo deve funcionar como pretendido.