89 votes

mauvaise propriété ou modes pour le composant répertoire chroot

J'ai créé l'utilisateur MY_USER. J'ai défini son répertoire personnel à /var/www/RESTRICTED_DIR, qui est le chemin auquel il doit être restreint. Puis j'ai édité sshd_config et mis :

Match user MY_USER
  ChrootDirectory /var/www/RESTRICTED_DIR

Puis j'ai redémarré ssh. J'ai fait de MY_USER le propriétaire (et le propriétaire du groupe) de RESTRICTED_DIR, et je l'ai modifié en 755. J'obtiens

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 je supprime les 2 lignes de sshd_config, l'utilisateur peut se connecter avec succès. Bien sûr, il peut accéder à tous les serveurs. Quel est le problème ? J'ai même essayé de chown RESTRICTED_DIR à root (comme j'ai lu quelque part que quelqu'un a résolu ce même problème en le faisant). Pas de chance.

125voto

voretaq7 Points 78924

Desde le site man page :

ChrootDirectory
Spécifie le chemin d'accès d'un répertoire vers lequel chrooter(2) après que l'authentification. Tous les composants du chemin d'accès doivent appartenir à la racine. qui ne peuvent être écrits par aucun autre utilisateur ou groupe. groupe . Après le chroot, sshd(8) change le répertoire de travail en répertoire personnel de l'utilisateur.

Je pense qu'un ou plusieurs des répertoires du chemin d'accès ne répondent pas à ces exigences (je soupçonne que www est détenu ou accessible en écriture par votre utilisateur web, et non par root).
Revenez en arrière et suivez les instructions, en vous assurant que les exigences ci-dessus en gras italique sont respectées.

0 votes

Ça me rend fou. J'ai fait "chown root:root -R /var/www" ; "chmod 775 -R /var/www/" ; "usermod -a -G root www-data". Mais je ne peux toujours pas me connecter avec MY_USER

0 votes

Est-ce que les besoins incluent les groupes SUPPLEMENTAIRES (celui que j'ai ajouté avec usermod) ? ? Si oui, c'est inutilisable.. :(

1 votes

L'exigence porte sur les composants du chemin ( / , /var , /var/www et /var/www/RESTRICTED_DIR doivent tous répondre aux exigences de sécurité ci-dessus). Il s'agit d'un vrai chroot (consultez la page du manuel) - le répertoire d'origine de votre utilisateur doit exister. dans le chroot comme il se doit /bin & toutes les autres choses dont votre utilisateur aura besoin...

49voto

Blondy314 Points 1

Le répertoire ChrootDirectory doit être détenu par root et avoir un 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 être détenu par MY_USER qui doit appartenir à www-data_ et avoir 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/*

NOTE : Rappelez-vous que c'est une bonne pratique de ne permettre l'accès qu'à un dossier htdocs si vous configurez apache.

4 votes

Je suis sûr que ça devrait être sudo usermod -a -G www-data MY_USER car le groupe doit venir après -G

3 votes

Cela fonctionne mais je ne peux pas télécharger de nouveaux fichiers dans le répertoire, je peux seulement modifier des fichiers créés auparavant avec le compte root et avec la propriété de l'utilisateur.

1 votes

@dlopezgonzalez La même chose se produit pour moi. La meilleure solution que j'ai trouvée est de créer un autre répertoire (par ex. /var/www/RESTRICTED_DIR/uploads ) qui appartient à l'utilisateur. Si cela n'est pas idéal pour vous, vous pouvez relocaliser le ChrootDirectory et utiliser un lien symbolique (par ex. /var/www/RESTRICTED_DIR est un lien symbolique qui pointe vers /sftp/uploads (donde /sftp est la propriété de root et /sftp/uploads appartient à l'utilisateur)

4voto

W R Points 21

Dans mon cas, les étapes ci-dessous ont fonctionné.

  1. useradd -d /data/ftp/user1 -s /bin/false -g users -G sftponly user1
  2. passwd user1
  3. chown root:root /data/ftp/user1
  4. droits pour le groupe et les autres chmod go+rx /data/ftp/user1
  5. mkdir /data/ftp/user1/{upload,download}
  6. chown user1:users /data/ftp/user1/{upload,download}
  7. sftp user1@ipaddress_server

Vérifier si user1 peut écrire sur /data/ftp/user1/{upload,download}

Il est préférable que l'utilisateur 1 soit uniquement autorisé à accéder à sftp et non à ssh. En outre, l'utilisateur 1 devrait être chroot à son directeur de la maison. Cela aidera https://medium.com/tensult/configure-ftp-on-aws-ec2-85b5b56b9c94

4voto

Magnus Points 41

Après quelques dépannages aujourd'hui, j'ai réalisé que root doit aussi pouvoir écrire aux répertoires.

Ce qui suit n'a 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/

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X