Bonjour,
J'ai un utilisateur "toto" et je souhaiterais avec SFTP donner l'accès uniquement à un dossier précis ("/home/toto/dossier") à un utilisateur n'ayant pas d'accès shell à la machine.
J'ai regardé les exemples d'utilisation de SFTP en mode chroot mais il semblerait que ce je veuille faire ne soit pas possible.
Auriez-vous des suggestions ?
Cordialement.
# une piste
Posté par NeoX . Évalué à 2.
[^] # Re: une piste
Posté par gzgtrhe . Évalué à 1. Dernière modification le 22 mars 2021 à 18:46.
Déjà tenté… avant de poster mon message.
Mais merci d'avoir participé :-)
Edit:
J'arrive à créer un utilisateur SFTP et à le confiner dans son chroot (par exemple "/mnt") mais ensuite la création d'un lien symbolique vers "/home/toto/dossier" ne marche pas : sftp refuse de suivre le lien :-(
Même chose si je créé l'utilisateur SFTP avec son chroot directement dans "/home/toto/dossier".
Dans les deux, sftp annonce une erreur relative aux droits d'accès…
[^] # Re: une piste
Posté par NeoX . Évalué à 4. Dernière modification le 22 mars 2021 à 19:02.
heu, c'est normal non ?
tu veux le bloquer dans le dossier /mnt (c'est le but du chroot)
et puis tu lui demandes de suivre le lien qui va vers /home/toto/dossier (donc qui SORT du dossier /mnt)
il faut là, que le dossier /home/toto/dossier ait les bons droits pour l'utilisateur sftpuser
NB : je viens de faire la procedure car elle m'intéresse aussi pour remplacer mon vieux FTP qui traine dans un coin, et ca fonctionne comme prévu.
j'arrive bien dans le dossier /sftp/monuser/incoming
sur debian10, ssh/sftp-server 7.9p1-10+deb10u2
[^] # Re: une piste
Posté par gzgtrhe . Évalué à 1.
Oui… mais non :-(
Selon le lien que tu as posté, il est indiqué (section 6) de faire :
chown guestuser:sftpusers /sftp/guestuser/incoming.
Donc si je transpose, cela donnera :
chown nouveau_user:sftpusers /home/toto/dossier
Du coup, sauf erreur de ma part, l'utilisateur toto ne sera plus propriétaire de "dossier" et ne pourra plus créer/effacer les fichiers dans "dossier" comme il le fait actuellement.
[^] # Re: une piste
Posté par NeoX . Évalué à 3.
c'est exactement le sens du toto faire arriver l'utilisateur dans un dossier qui lui appartient.
ensuite il faut adapter à TON besoin
1°) dans la config ssh, régler le chroot (racine du "système" sur /home/toto
et le dossier home de l'utilisateur visiteurs sur /dossier (pour qu'il arrive à la fin dans /home/toto/dossier
2°) donner les droits à cet utilisateur sur le dossier /home/toto/dossier
en comprenant la gestion des droits linux
chown monuser:sftpusers /home/toto/dossier
va donner la propriété à tonuser et au groupe sftpusers sur le /dossier dans /home/toto
si tu adaptes cela en chown toto:sftpusers pour que toto garde la main, et que les gens du groupe sftpusers puisse intervenir dessus
il ne te reste plus qu'à autoriser l'écriture (si nécessaire) au gens du groupe
chmod 775 /home/toto/dossier
[^] # Re: une piste
Posté par gzgtrhe . Évalué à 1.
Bah ça ne veut toujours pas…
Voila ce que je vois dans "/var/log/auth.log" :
Mar 22 20:29:09 server sshd[28440]: Accepted password for new_user from xxxxxxxxx port 28062 ssh2
Mar 22 20:29:09 server sshd[28440]: pam_unix(sshd:session): session opened for user new_user by (uid=0)
Mar 22 20:29:09 server sshd[28446]: fatal: bad ownership or modes for chroot directory "/home/toto"
Mar 22 20:29:09 server sshd[28440]: pam_unix(sshd:session): session closed for user new_user
Voici mes settings :
root@server:/home/toto# grep new_user /etc/group /etc/passwd
/etc/group:ssh-user:x:1001:toto,new_user
/etc/passwd:new_user:x:1002:1003::/dossier:/sbin/nologin
root@server:/home/toto# grep ssh-user /etc/group /etc/passwd
/etc/group:ssh-user:x:1001:toto,new_user
root@server:/home/toto# grep sftp-user /etc/group /etc/passwd
/etc/group:sftp-user:x:1003:
root@server:/home/toto# ls /home/
total 4.0K
drwxr-xr-x 14 toto toto 4.0K 22-03-2021 20:01 toto
root@server:/home/toto# ls /home/toto/
drwxr-xr-x 270 new_user sftp-user 56K 22-03-2021 00:12 dossier
root@server:/home/toto# cat /etc/ssh/sshd_conf
…
Subsystem sftp internal-sftp
Match Group sftp-user
ChrootDirectory /home/toto
ForceCommand internal-sftp
PasswordAuthentication yes
PermitEmptyPasswords no
Je précise que le résultat est le même avec "dossier" appartenant à toto:sftp-user.
[^] # Re: une piste
Posté par NeoX . Évalué à 3.
un bug avec ta version de SSH alors ?
parce que hier j'ai fait tout le test
creer un utilisateur1
fait un dossier dans /home/utilisateur1 (donc /home/utilisateur1/dossier)
donner les droits sur ce dossier à utilisateur1 en plus de son home
creer le nouvel utilisateur2 avec son chroot sur /home/utilisateur1 et son home en /dossier
par defaut il pouvait l'ouvrir mais pas écrire dedans,
d'ou ma suggestions de regarder les problèmes de droits,
que j'ai réglé avec un chown utilisateur1:sftpusers /home/utilisateur1/dossier
et un chmod 775 /home/utilisateur1/dossier
à partir de là mon utilisateur2 pouvait écrire dans /home/utilisateur1/dossier
# Proftpd
Posté par cg . Évalué à 2.
Je pense que prodftpd est un bon choix si tu veux faire des choses sophistiquées.
Le truc à prévoir c'est soit d'avoir une IP dédiée au service, qui permettent d'utiliser protftpd et sshd sur le port 22, ou mettre proftpd sur le port 2222 par exemple, avec si tu veux un NAT de port en entrée de réseau.
# Work around trouvé
Posté par gzgtrhe . Évalué à 4. Dernière modification le 22 mars 2021 à 23:54.
En lisant des tutoriaux pour monter un serveur FTP, j'ai repéré un truc prometteur : "mount --bind".
Au final, j'obiens ça :
/home/new_user/dossier
Lors de sa création, "new_user" a son $HOME en "/home" et la valeur de ChrootDirectory est "/home/%u".
Puis "mount --bind /home/toto/dossier /home/new_user/dossier".
Et ça marche comme souhaité.
Suivre le flux des commentaires
Note : les commentaires appartiennent à celles et ceux qui les ont postés. Nous n’en sommes pas responsables.