Je veux donner à un client l'accès à mon serveur, mais je veux limiter ces utilisateurs à leurs répertoires personnels. Je vais lier-monter dans tous les fichiers que je veux qu'ils puissent voir.
J'ai créé un utilisateur appelé bob
et l'a ajouté à un nouveau groupe appelé sftponly
. Ils ont un répertoire personnel à /home/bob
. J'ai changé leur shell /bin/false
pour arrêter les connexions SSH. Voici leur /etc/passwd
ligne:
bob:x:1001:1002::/home/bob:/bin/false
J'ai également changé le /etc/ssh/sshd_config
pour inclure les éléments suivants:
Match Group sftponly
ChrootDirectory /home/%u
ForceCommand internal-sftp
AllowTcpForwarding no
Quand j'essaie de me connecter comme eux, voici ce que je vois
$ sftp bob@server
bob@server's password:
Write failed: Broken pipe
Couldn't read packet: Connection reset by peer
Si je commente la ChrootDirectory
ligne, je peux utiliser le protocole SFTP, mais ils ont alors toute liberté sur le serveur. J'ai trouvé que cela ChrootDirectory /home
fonctionne, mais cela leur donne toujours accès à n'importe quel répertoire personnel. J'ai explicitement essayé ChrootDirectory /home/bob
mais ça ne marche pas non plus.
Qu'est-ce que je fais mal? Comment puis-je limiter bob
à /home/bob/
?
----MODIFIER-----
Bon alors j'ai juste regardé /var/log/auth.log
et vu ceci:
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session opened for user bob by (uid=0)
May 9 14:45:48 nj sshd[5091]: fatal: bad ownership or modes for chroot directory component "/home/bob/"
May 9 14:45:48 nj sshd[5074]: pam_unix(sshd:session): session closed for user bob
Je ne suis pas tout à fait sûr de ce qui se passe là-bas, mais cela suggère que quelque chose ne va pas dans le répertoire des utilisateurs. Voici la ls -h /home
sortie:
drwxr-xr-x 26 oli oli 4096 2012-01-19 17:19 oli
drwxr-xr-x 3 bob bob 4096 2012-05-09 14:11 bob
ChrootDirectory /home/%u
peut être remplacéChrootDirectory %h
.