Isso é simples. Basta criar um novo usuário com seu diretório inicial definido para o que você precisa que ele tenha acesso (este comando deve ser executado em sudo
ou no shell de root):
adduser --home /restricted/directory restricted_user
Isso criará um usuário restricted_user
, o diretório /restricted/directory
e as permissões no diretório serão definidas para que o usuário possa gravar nele. Ele não terá a capacidade de gravar em qualquer outro diretório por padrão.
Se você já tiver o diretório, poderá 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:
chown restricted_user:restricted_user /restricted/directory
chmod 755 /restricted/directory
Se você precisar tornar inacessíveis até mesmo os diretórios graváveis do mundo para esse usuário, existem duas variantes.
1) Se você deseja fornecer uma sessão de shell interativa ao usuário, considere seguir este manual ao criar um chroot jail (no seu /restricted/directory
).
Depois disso, adicione o seguinte ao seu sshd_config
:
Match user restricted_user
ChrootDirectory /restricted/directory
2) Se você só precisa dele para copiar arquivos entre seu terminal de conexão e seu host, tudo fica muito mais fácil. Adicione estas linhas no final do seu sshd_config
:
Match user restricted_user
ForceCommand internal-sftp
ChrootDirectory /restricted/directory
Subsystem sftp internal-sftp
Em seguida, comente o Subsystem sftp /usr/lib/openssh/sftp-server
colocando um sinal de hash ( #
) no início.
Depois de reiniciar o servidor SSH (ele não mata as sessões interativas na reinicialização, portanto, é seguro mesmo que você tenha configurado algo incorretamente; além disso, não fecha a sessão em execução antes de verificar se você ainda consegue efetuar login) tudo deve funcionar como pretendido.