A maneira mais simples de fazer isso é usar ACL negativa , ie , proibindo explicitamente o usuário (chame ele user_no ) de usar qualquer diretório, exceto o que você mencionou.
Depois de instalar o ACL, o seguinte comando
setfacl -m user:user_no:0 /home/my_home
impedirá o acesso à sua casa. Você deve se lembrar de bloquear explicitamente cada lugar que deseja barrar, mas deve se lembrar de permitir o uso de algumas diretivas (/ usr, / bin ..), caso contrário, você também o impedirá de usar comandos comuns do Unix.
Você também deve permitir que ele use seu diretório pessoal (não acho que uma conta possa funcionar com isso) e o diretório que você mencionou acima.
Como alternativa, você pode chroot a conta. Isto pode ser feito de duas maneiras: no primeiro, você só permite o acesso ssh, no segundo você chroot a conta do shell. O segundo método é mais complicado, e eu nunca tentei, então não posso oferecer orientação. Você pode usar o Google conta shell do chroot . O primeiro método é simples, apenas modifique o arquivo / etc / ssh / sshd_config introduzindo estas linhas na parte inferior:
Subsystem sftp internal-sftp
Match Group sftp
ChrootDirectory %h
ForceCommand internal-sftp
AllowTcpForwarding no
Isso liga o usuário ao seu diretório pessoal (% h acima) e garante que ele tenha acesso à ajuda interna do sftp. Além disso, adicione o user_no ao grupo sftp da seguinte forma:
# usermod -G sftp user_no
# usermod -s /bin/false user_no
# chown root:root /home/user_no
# chmod 0755 /home/user_no
O comando importante é o segundo: ele garante que o usuário nunca obterá acesso ao shell.
Por fim, crie um link simbólico, no diretório inicial do usuário, para o diretório ao qual você deseja permitir o acesso:
# cd /home/user_no
# ln -s /var/opt/test/reports work
Isso cria um subdiretório ao qual ele tem acesso, mas não pode criar nenhum arquivo, apenas funciona nos existentes. Se você quiser permitir que ele crie arquivos, terá que alterar as permissões em / var / opt / test / reports.