J'ai créé l'utilisateur MY_USER. Définissez son répertoire personnel sur/var/www/RESTRICTED_DIR, qui est le chemin vers lequel il doit être limité. Ensuite, j'ai édité sshd_config et défini:
Match user MY_USER
ChrootDirectory /var/www/RESTRICTED_DIR
Ensuite, j'ai redémarré ssh. A fait MY_USER propriétaire (et propriétaire du groupe) de RESTRICTED_DIR et l'a modifié à 755. Je reçois
Accepted password for MY_USER
session opened for user MY_USER by (uid=0)
fatal: bad ownership or modes for chroot directory component "/var/www/RESTRICTED_DIR"
pam_unix(sshd:session): session closed for user MY_USER
Si j'ai supprimé les 2 lignes de sshd_config, l'utilisateur peut se connecter avec succès. Bien sûr, il peut accéder à tout le serveur. Quel est le problème? J'ai même essayé de récupérer RESTRICTED_DIR à la racine (comme j'ai lu quelque part que quelqu'un avait résolu ce même problème en le faisant). Pas de chance..
De la page man
:
ChrootDirectory
Spécifie le chemin d'accès d'un répertoire vers lequel chrooter (2) après l'authentification. Tous les composants du nom de chemin doivent être des répertoires appartenant à la racine qui ne sont accessibles en écriture par aucun autre utilisateur ou groupe. Après le chroot, sshd (8) change le répertoire de travail en répertoire personnel de l'utilisateur.
Je suppose qu'un ou plusieurs des répertoires sur le chemin ne répondent pas à ces exigences (je soupçonne que www
est détenu ou accessible en écriture par votre utilisateur Web, pas root).
Revenez en arrière et suivez les instructions, en vous assurant que les exigences ci-dessus dans italique gras sont remplies.
Le répertoire ChrootDirectory doit appartenir à root et avoir le mode 755:
Sudo chown root:root /var/www/RESTRICTED_DIR
Sudo chmod 755 /var/www/RESTRICTED_DIR
Ok, maintenant tous les fichiers dans /var/www/RESTRICTED_DIR
doit appartenir à MY_USER
, qui doit appartenir à www-data
group, et ont le mode 775 pour autoriser les permissions de groupe, comme ceci:
Sudo usermod -a -G www-data MY_USER
Sudo chown MY_USER:www-data /var/www/RESTRICTED_DIR/*
Sudo chmod 775 -R /var/www/RESTRICTED_DIR/*
REMARQUE: N'oubliez pas qu'il est recommandé d'autoriser l'accès uniquement à un dossier htdocs si vous configurez Apache.
Après quelques problèmes de dépannage aujourd'hui, j'ai réalisé que root devait également pouvoir écrire dans les répertoires.
Les éléments suivants n'ont pas fonctionné:
$ ls -ld /mnt/synology03/files/
dr-xr-xr-x 1 root root 156 Oct 8 20:10 /mnt/synology03/files/
$ ls -ld /mnt/synology03
drwxr-xr-x 7 root root 4096 Oct 1 21:26 /mnt/synology03
$ ls -ld /mnt
drwxr-xr-x 6 root root 4096 Feb 8 10:01 /mnt
$ ls -ld /
drwxr-xr-x 24 root root 4096 Jan 14 09:22 /
Dès que j'ai corrigé cela, mon chroot a commencé à fonctionner.
$ Sudo chmod 755 /mnt/synology03/files/
$ ls -ld /mnt/synology03/files/
drwxr-xr-x 1 root root 156 Oct 8 20:10 /mnt/synology03/files/