broncowdd/BoZoN

Configuration des permissions pour BoZon + FTP

Opened this issue · 10 comments

Bonjour !

Un collègue m'a fait découvrir BoZon, et j'en suis ravi (même si ça ne colle pas exactement à mon besoin personnel) !

J'ai cependant une question concernant la possibilité de pousser des fichiers via un client FTP dans les dossiers de BoZon. Je n'arrive pas à obtenir une configuration satisfaisante.

Pour faire simple, voici ma configuration :

  • le tout est installé sur un RPi 3b à la maison avec raspbian
  • serveur web avec nginx (j'ai d'ailleurs une autre question mais j'ouvrirai un autre ticket pour ça plus tard car c'est secondaire ;) )
  • serveur FTP avec vsftpd (configuration testée via ce tuto http://www.installerunserveur.com/configuration-vsftpd)
  • BoZon installé dans /var/www/html/
  • utilisateur créé dans Linux pour les accès FTP, avec un home qui pointe sur /var/www/html/uploads/user_name; cet utilisateur est modifié pour lui attribuer "www-data" comme groupe primaire (c'est donc le même groupe que celui de l'utilisateur utilisé par le serveur web pour accéder aux fichiers et dossiers de BoZon)

Mon problème est sur les permissions du dossier "uploads" (et de ses enfants) de BoZon.

  • Si je veux pouvoir me connecter via un client FTP, il faut que les droits soient minimum à x11 (x pour tout le monde).
  • Si je veux pouvoir consulter mes fichiers sur BoZon, les droits mini doivent être x44 (r pour tout le monde).
  • Si je veux pouvoir transférer des fichiers via FTP, les droits mini doivent être x22 (w pour tout le monde).

=> Au final je me retrouve à devoir passer le dossier "uploads" de BoZon en 777 (rwx pour tout le monde) si je veux pouvoir tout faire... ce qui vous l'admettrez est loin d'être viable en termes de sécurité... (surtout pour le dernier 7, je ne vois pas l'utilité).
Autre problème que cela génère : quand je me connecte avec mon client FTP dans le dossier de mon utilisateur, je peux remonter au niveau de "uploads" et ainsi naviguer librement dans le dossier des autres utilisateurs, ce qui de la même manière n'est pas souhaitable !

Bref voilà, je me demandais si vous auriez des conseils pour configurer tout ça proprement :)

Merci beaucoup d'avance !
Brice

C'est plus un problème de droits FTP qu'un problème lié à BoZoN. Pour ton FTP, si tu utilises comme utilisateur le même que le propriétaire de ton dossier /var/www/html, est-ce que le problème persiste ?

Merci pour la réponse !
Tout d'abord, on est bien d'accords, et pardon si je n'ai pas été clair à ce sujet, je n'ai jamais dit que le problème (si problème il y a) vient de BoZoN. Je suis simplement en quête d'aide pour coupler ça au mieux avec BoZoN ;)

Pour les détails techniques, j'ai essayé tellement de choses que je ne sais pas dire avec certitude si j'ai essayé de me connecter avec le même utilisateur que le propriétaire du dossier /var/www/html/, mais j'ai tout de même un doute là-dessus car il s'agit de l'utilisateur par défaut qu'utilise le serveur nginx (et donc BoZoN) : www-data. Comme je l'ai dit, j'ai attribué à mon utilisateur FTP le même groupe primaire que cet utilisateur nginx : www-data.

Parce qu'au final, j'arrive à faire ce que je veux, à savoir :

  • accéder à BoZoN et parcourir les fichiers (même ceux envoyés par FTP)
  • envoyer des fichiers via FTP
    Le problème réel est que je me retrouve avec le dossier global des uploads de BoZoN en accès complet (chmod 777) pour tout le monde, et ça, en termes de sécurité, c'est vraiment désastreux !

J'ai lu plusieurs sujets par ici où les utilisateurs parlent de FTP, donc j'imagine que ça doit être faisable, mais je n'arrive pas à trouver la configuration adéquate :p

Si tu utilises le propriètaire du dossier, tu ne dois pas être en 777.
Tu as quoi dans ton fichier de configuration de vsFTP (/etc/vsftpd.conf) ? Est-ce que tu utilises une base de données pour gérer tes utilisateurs FTP ?

Si j'utilise le propriétaire du dossier, ça signifie que je suis limité à un seul compte possible pour l'accès FTP. L'idée serait d'en avoir plusieurs (autant que de comptes sur BoZon potentiellement), même s'il n'y en aura pas des tonnes.
Je n'ai pas accès facilement à mon fichier de conf de vsftpd ce soir, je le posterai demain. Qu'entends-tu par "base de données" ? Pour le moment j'ai suivi le tuto dont j'ai mis le lien sur mon post initial ici, et j'ai créé un nouvel utilisateur dans Linux directement. J'avais essayé précédemment de créer une liste des utilisateurs contenue dans un fichier à lier avec les paramètres chroot_list_enable et chroot_list_file, sans grande conviction...

Dans ton tuto, il est dit que les utilisateurs peuvent être enregistrés dans une base de données...

Pour ce qui est de ta demande, je ne pense pas que ce soit possible car du point de vue du serveur, il n'y a qu'un seul utilisateur/propriétaire des fichiers et c'est celui qui posséde /var/www/html (typiquement www-data).
C'est celui qui fait "tourner" les fichiers php.

Il faudrait que BoZoN modifie le CHOWN et le CHMOD des dossiers utlisateurs mais que ces utilisateurs soient créés au préalable sur le serveur en tant qu'utilisateurs du système (et qu'ils appartiennent au groupe www-data, mais alors ils auront la possibilité de remonter toute l'arborescence de www-data).

Je ne sais pas si tu vois ce que je veux dire ?

Salut !
Voici mon fichier de config de vsftpd en PJ.
vsftpd_conf.txt

Pour l'histoire du tuto sur vsftpd, il s'agit d'une énumération des moyens possibles pour gérer les utilisateurs. Il cite la méthode de la bdd mais ne l'utilise pas.

Sinon oui je vois carrément ce que tu veux dire, c'était une réponse que je craignais.
Ceci étant la nuit ayant peut-être un peu porté conseil, j'ai au moins une autre option à explorer : laisser le serveur FTP indépendant (du point de vue des répertoires) de BoZoN, et créer un script local qui scrute ce qui se passe dans les répertoires du serveur FTP et déplace ensuite dans les répertoires de BoZoN.

Je vous tiens au jus !
Merci

Ah oui pas con. Par contre, il faudra lancer le rafraichissement de la base de BoZoN lors de la connexion car sinon, les fichiers uploadés via FTP ne seront pas visibles.

Si ça marche, n'hésite pas à partager ;-)

Bonsoir !
Oui effectivement j'ai bien pensé qu'il faudrait "regénérer" la base une fois les fichier déplacés, je me doute qu'il doit y avoir une URL appelable sans forcément être authentifié sur l'interface web.

Je teste tout ça et je vous poste bientôt mes résultats !

Bonjour !
Juste pour tenir au courant de mes avancées, je bloque sur le fait que je n'arrive pas à exporter la base de BoZoN pour utiliser un autre répertoire de stockage que celui par défaut (configuration modifiable dans le config.php à la variable $default_path).
Pour la partie synchronisation entre les répertoires du serveur FTP et les répertoires de BoZoN, un coup de inotify-tools pour ceux qui connaissent, un script qui gère tout ça et le tour est joué normalement sans trop de complications ;)
La suite bientôt (avec les fêtes qui arrivent c'est plus compliqué de trouver du temps) !

Oui, le temps manque pour tout faire !