SFTP (chroot) + bindfs / permission d'ecriture sur www-data pour un user/group different

Bonjour a tous,
Je vous présente grosso modo mon projet, qui vous permettra de comprendre mon incompréhension.
Je travail jusqu’a maintenant avec ISPConfig 3.x pour mes serveurs web. Plusieurs fois j’ai ete confronté a la ligne de commande et au fil du temps, je m’y prefere plutot que l’interface graphique.
J’ai donc un serveur de test Kimsufi avec lequel j’apprends et m’améliore. J’en suis plutôt fier, car je met en place certaines fonctionnalités qui sont égales voir mieux que celle d’ISP, par exemple : wildcard SSL, connexion shell avec cle publique, http2, netdata et j’en passe. Ca m’a permis également de mieux comprendre Bind9, l’aspect sécurité renforcée. Bref, cela me motive a continuer ainsi !
Il y a cependant un truc qui m’echape et je ne trouve pas de solution :

  • Je creer un user
  • Je creer un dossier /home/user/site
  • Je chown -R user:user /site
  • Je m’y connecte en SFTP avec user/login

Jusque la tout va bien. Tout est logique, je fais ce que je veux logué en user en SFTP.

Si je veux qu’un site style WordPress fonctionne, il me faut mettre la propriété de /site a www-data, et la c’est le drame ! : Je ne peux plus ecrire en SFTP. Et “C’est put@”"? logique !!!"

Si je met en chown -R www-data:user, ca change rien sauf si je chmod en elevé(770), et c’est encore une fois logique !!!

Hors sur ISPConfig ou même une autre configuration que la mienne, on peut faire les deux, c’est a dire, avoir des dossiers en chmod 755 et des fichiers en 644 et avoir par exemple WP qui fonctionne nikel, tout en pouvant se connecter en ftp et lire écrire etc.

Et la je suis perdu … Quand bien même j’installerai un client FTP style ProFTPd ou VSFTPd, j’aurai forcement les mêmes problèmes de droits. Il y a forcement une étape négligée dans ma config.

Je vous remercie par avance !

pourquoi ne pas ajouter tes utilisateurs à un groupe créer pour l’occasion, et ajouter l’utilisateur apache à ce même groupe ?

Sinon fouille ce forum je sais que ça déjà été débattu.

1 J'aime

Le problème c’est que si tu as plusieurs utilisateurs dans un même groupe, disons au hasard, www-data, chacun des utilisateurs pourra écrire sur les fichiers ayant pour groupe www-data. Y a des méthodes pour faire ça proprement et effectivement ça a été débattu de nombreuses fois sur ce forum. Personnellement je contourne le problème avec des conteneurs ou VM. C’est plus lourd, mais au moins l’isolation au niveau des droits est totale.

1 J'aime

Ben que user soit dans le groupe www-data ou l’inverse, c’est pareil, ca ne change pas grand chose si on veut du chmod 755 sur les dossiers et du 644 sur les fichiers, je me trompe ?

Salut salut,
il semblerai que la commande : usermod -a -G www-data user regle ma question.
Par contre je l’ai trouvé en googlant, me reste a savoir ce qu’apporte de plus le -a -G puisque user etait deja dans le groupe www-data ^^

[EDIT]
le man me renseigne :
-a, --append
Ajouter l’utilisateur aux groupes supplémentaires. N’utilisez cette option qu’avec l’option -G.
-G, --groups GROUPE1[,GROUPE2,…[,GROUPEN]]]
Liste de groupes supplémentaires auxquels appartient également l’utilisateur. Chaque groupe est séparé du suivant par une virgule, sans espace entre eux. Les groupes sont soumis aux mêmes restrictions que celles de
l’option -g.
-g, --gid GROUPE
Nom du groupe ou identifiant numérique du groupe de connexion initial de l’utilisateur. Le groupe doit exister. Tout fichier du répertoire personnel de l’utilisateur appartenant au groupe primaire précédent de l’utilisateur appartiendra à ce nouveau groupe. Le groupe propriétaire des fichiers en dehors du répertoire personnel de l’utilisateur doit être modifié manuellement.

IMPECCABLE !!!
Je ne savait pas que j’allais galerer pour une si petite subtilité !

Vu que 2FR3 cherche à faire du SFTP et permette à apache d’utiliser les fichiers je vois pas où est le problème.
Par contre comme tu le souligne, cette opération est à restreindre pour un site, si il y a du multi site chaque site exige un groupe dans le quel tu mets chaque utilisateur qui doit y avoir accès + www-data.
C’est là que la puissance d’administration d’un panel réside.

A peu de chose près c’est ce que à quoi je pensais mais dans l’autre sens, permettre à apache à pouvoir accéder à tes répertoire couvert par un groupe.

usermod -aG trucmuche www-data

et le chown qui va bien sur le dossier :

chown -R trucmuche:trucmuche /var/www/répertoire_a_trucmuche

Si tu ajoute un utilisateur au groupe www-data ça lui donne accès à tous ce que www-data à accès.

1 J'aime

Oui, et puis en plus je me suis trop haté a repondre car mes chmod ne sont pas bons, si je chown user:user ou root:user, pas de soucis en sftp. Mais pour que apache puisse etre libre d’ecrire, ca me fait du 775 pour les dossier et du 664 pour les fichiers. Dans tous les cas il faut que apache soit proprio pour avoir un chmod dossier/fichier classique (755/644), et c’est la que je ne comprends plus. Je ne voit pas comment je peux ecrire en SFTP sans etre proprio, et a la limite que je soit dans le groupe ou pas n’y change rien, dans un sens comme dans l’autre, a m’en demander a quoi servent les groups !

Je tourne en rond. Bon la c’est single site, mais si je veux remplacer mon ISPConfig, ca le fait pas, je dois pouvoir donné un accès SFTP ou FTP a mes clients. Y’a vraiment un truc qui m’echappe, surtout au niveau des groupages.

salut
pour mes apaches perso je met mon utilisateur dans le groupe www-data ( adduser moi www-data )
ensuite chmod -R 770 /var/www/html/…

mais pour d’autres utilisateurs, à première vue, sans “panel”, je ferais plutot le contraire :

un dossier qui m’appartient, moi dans les groupes de www-data

même si je sens qu’un truc n’est pas bon

1 J'aime

J’ai bien compris le système des permissions, seulement, il y a deux choses qui me chiffonnent :

  • Certains CMS classique type WP ou Prestashop vont afficher qu’il y a un problème de permission au delà de 755/644, et je “pense” qu’il s’agit d’un problème relevant de la sécurité.
  • Si en FTP simple/TLS avec ISP je peux ecrire en tant qu’utilisateur FTP et qu’apache peux en faire autant, c’est que c’est tout a fait possible a réaliser

C’est juste la démarche pour y parvenir que je ne comprend pas. J’ai l’impression que d’ajouter un user dans un group ne change rien dans les droits en ecriture et tu l’as bien compris, un chmod 770/660 ne me parait pas bon du tout.

Je regarde du coté des ACLs

Cela semble fonctionner avec ACL, pouvez vous confirmer SVP que la demarche est bonne :

Chown -R root:root /site
file: home/fred/site/
owner: root
group: root
user::rwx
user:www-data:rwx
user:fred:rwx
group::r-x
mask::rwx
other::r–
default:user::rwx
default:user:www-data:rwx
default:user:fred:rwx
default:group::r-x
default:mask::rwx
default:other::r–

Peut etre aurai-je du chown a fred:fred ?

Et avec le chroot dans sshd_conf et les ACL comme indiqué, ca passe?
J’ai viré user du group www-data et inversement ^^
J’ai un bon serveur, mais je pense que sortir une VM par client (j’y ai songé), je pense que la becane va souffrir pour rien, d’autant plus que je n’ai pas de gros gros sites a gerer (malheureusement)

Bon et bien non, en fait !
Je me casse encore les dents, pour une raison obscure, les nouveaux dossiers/fichiers uplodé en SFTP n’arrive pas avec les chmod que j’ai reglé par default, SFTP ne respecte visiblement pas les ACLs.

Suite de l’aventure avec Bindfs
[EDIT]
Cette fois j’y suis, j’ai passé mon WE la dessus, mais on y est !
Je me suis blindé en doc, mais grossomodo j’ai fait un mélange de ces deux liens pour arrivé a mes fins, la doc elle m’a permis de comprendre ce qu’il se passait :

En googlant, je suis passer par plein de choses intéressantes, notamment les conteneurs. Je pense que je vais effectivement partir la dessus dans mes prochains tests comme un membre l’a cité plus haut.

Meme s’il n’y a pas eu beaucoup de participation (cause WE j’imagine), je vous remerci tous. J’espère que mon thread servira a d’autres. Mes démarches via ACL, même si elles n’ont pas été concluantes m’ont permis d’apprendre un peu plus.