2 votes

Restreindre les utilisateurs SFTP à leur dossier personnel

Je veux restreindre les utilisateurs SFTP à leur dossier personnel afin qu'ils ne voient pas les dossiers/dossiers personnels d'autres personnes. Malheureusement, tous les utilisateurs SFTP peuvent actuellement voir les dossiers d'autres utilisateurs. Tous les messages et exemples indiquent ChrootDirectory mais pour une raison quelconque, je n'arrive pas à le faire fonctionner.

$ sudo nano /etc/ssh/sshd_config

Subsystem sftp internal-sftp
Match Group sftp
  ChrootDirectory %h            # Le %h provoque une erreur "Broken pipe" lors de la tentative de connexion
  ChrootDirectory /var/sftp     # Cela permet la connexion mais tous les dossiers SFTP sont visibles par tous les utilisateurs
  X11Forwarding no
  AllowTcpForwarding no
  AllowAgentForwarding no
  PermitTunnel no
  ForceCommand internal-sftp

Utilisateurs, Autorisations et Dossiers

J'ai utilisé la commande ci-dessous pour créer des utilisateurs et des dossiers.

sudo useradd -m -d /var/sftp/hello -G sftp hello --shell /usr/sbin/nologin

Résultat

ubuntu@linux:~$ grep hello /etc/passwd
hello:x:1001:1002::/var/sftp/hello:/usr/sbin/nologin

ubuntu@linux:~$ grep world /etc/passwd
world:x:1002:1003::/var/sftp/world:/usr/sbin/nologin

ubuntu@linux:~$ ls -l /var/
drwxr-xr-x  4 root root   4096 May  7 14:48 sftp

ubuntu@linux:~$ ls -l /var/sftp/
drwxr-xr-x 3 hello sftp 4096 May  7 14:01 hello
drwxr-xr-x 2 world sftp 4096 May  7 14:48 world

SOLUTION

Le problème ici est que je devais laisser root:root être propriétaire du dossier personnel de mes utilisateurs et créer un autre dossier sous le dossier personnel des utilisateurs (par exemple, uploads) puis le définir en tant que propriétaire hello|world:sftp. À l'origine, les dossiers personnels étaient la propriété de hello|world:sftp.

0 votes

Qu'y a-t-il dans vos journaux sshd lorsque vous obtenez l'erreur "Broken pipe"?

0 votes

linux sshd[3555]: fatale : mauvaise propriété ou modes pour le répertoire de racine "/var/sftp/hello" et linux sshd[3555]: fatale : mauvaise propriété ou modes pour le répertoire de racine "/var/sftp/world"

2 votes

2voto

kubanczyk Points 13302

Pour des raisons de sécurité, les utilisateurs sous chroot ne devraient pas pouvoir créer des fichiers arbitraires (par exemple /etc/shadow et bien d'autres). C'est pourquoi sshd vous oblige à retirer la propriété et les droits d'écriture du répertoire chrooté lui-même:

chown root:root /var/sftp/hello
chmod o-w       /var/sftp/hello

Une solution alternative, sans aucun ChrootDirectory sshd, repose sur le fait que l'utilisateur ne peut lister un répertoire que s'il a la permission r, tandis que l'utilisation de ce répertoire nécessite uniquement la permission x:

chown root:root /var/sftp
chmod o=x       /var/sftp    # supprime implicitement rw, définit uniquement x

0 votes

Si je change la propriété en root:root, mon utilisateur hello peut se connecter. Cependant, je veux que hello puisse écrire/télécharger des fichiers dans le dossier /var/sftp/hello, ce qui ne fonctionne actuellement pas.

2 votes

J'ai dû créer un sous-dossier sous le dossier principal, puis laisser les utilisateurs individuels en être propriétaires. C'était le problème.

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