GNU/Linux >> Tutoriels Linux >  >> Linux

Chroot SFTP - Possibilité d'autoriser l'utilisateur à écrire dans le répertoire courant (chroot)

Solution 1 :

Hey @emmdee Il m'a fallu une éternité pour réaliser qu'il y avait une astuce simple et agréable à cela. Il vous suffit de faire de root le propriétaire d'un dossier parent vers lequel vous voulez sFTP, puis d'utiliser la commande force pour dire à un utilisateur spécifique de charger un DIR spécifique dans le répertoire CHROOT.

Dans votre cas au cas où vous voudriez /home/sftpuser pour être le répertoire inscriptible, vous devrez faire de root le propriétaire de /home répertoire puis continuez et forcez la commande he /sftpuser comme répertoire de destination pour cet utilisateur ou un groupe.

Votre /etc/ssh/sshd_conf ressemblera à ceci :

Match User sftpuser
    ChrootDirectory /home
    ForceCommand internal-sftp -d /sftpuser
    AllowTCPForwarding no
    X11Forwarding no

Une fois cela fait, vous devez donner les bonnes autorisations comme indiqué précédemment, la racine doit posséder le répertoire parent (chroot) /home tandis que l'utilisateur doit posséder le répertoire final(-d) /sftpuser . Je vais supposer que vous avez un groupe d'utilisateurs sFTP appelé sftpusers , sinon; omettez simplement le groupe des commandes suivantes ou remplacez-le par les utilisateurs à la place (root dans le premier et sftpusers dans la seconde). Comme nous utilisons -R dans la ligne de commande pour l'héritage, vous devrez commencer par la propriété racine avant la propriété utilisateur comme suit :

sudo chown -R root:sftpusers /home

alors pour l'utilisateur vous pouvez exécuter :

sudo chown -R sftpuser:sftpusers /home/sftpuser

Je ne suis pas certain que cela soit nécessaire, mais vous pouvez toujours redémarrer le service sshd pour vous assurer que tous les paramètres sont rechargés :

sudo systemctl restart sshd.service

J'espère que cela devrait fonctionner comme un charme, j'ai eu un problème similaire et la solution était là, me regardant dans les yeux la plupart du temps.

Santé !

Solution 2 :

Je sais que cela fait quelques années, mais cet article m'a permis d'atteindre 98 % du chemin. après une longue recherche.

Pour faire en sorte que je puisse chrooter les utilisateurs et les placer automatiquement dans leur propre répertoire avec des autorisations d'écriture, j'ai utilisé la méthode suggérée par African Idiot, et j'ai également créé le répertoire chroot d'origine appartenant à l'utilisateur root et au groupe ftp.

Mais la clé pour moi de les garder dans ce dossier et de ne pas pouvoir .. et essayer de parcourir les dossiers des autres utilisateurs, était de créer le dossier chmod 710 (rwx--x---) de sorte que le groupe ftp ait exécuté pour faire le internal-sftp -d /%u (c'est-à-dire cd dans le sous-répertoire des utilisateurs) et maintenant si j'essaie de cd .. dans le répertoire supérieur, car il n'y a pas de lecture pour personne d'autre que root, cela échoue.

drwx--x---  6 root        sftpusers   uarch  6 Feb 19 15:34 ./
drwxr-xr-x  5 root        root        uarch  5 Feb  4 09:13 ../
drwxrwx---  3 anotheruser anotheruser uarch  3 Feb 24 15:34 anotheruser/
drwxrwx---  3 ftpuser     ftpuser     uarch 12 Feb 25 10:55 ftpuser/

j'espère que cela aidera quelqu'un d'autre aussi.


Linux
  1. Ssh – Restreindre un utilisateur Ssh/scp/sftp à un répertoire ?

  2. La fonction de la racine du groupe d'utilisateurs ? ?

  3. Lier monter un utilisateur SFTP après avoir utilisé chroot

  4. Comment configurer Chroot SFTP sous Linux (Autoriser uniquement SFTP, pas SSH)

  5. Répertoire courant du script shell ?

Comment créer un utilisateur SFTP pour une racine de document de serveur Web

Comment limiter l'utilisateur root dans CentOS

SFTP avec chroot en fonction de la clé publique de l'utilisateur qui se connecte

Monter et modifier un fichier loopback sans sudo/root, est-ce possible ?

Autorisations d'écriture des utilisateurs SFTP chrootés

Autoriser l'accès root mysql à l'utilisateur root linux sans mot de passe