Gentoo Forums
Gentoo Forums
Gentoo Forums
Quick Search: in
[Pure-FTP] Permission par utilisateur
View unanswered posts
View posts from last 24 hours

 
Reply to topic    Gentoo Forums Forum Index French
View previous topic :: View next topic  
Author Message
Jamesbch
Apprentice
Apprentice


Joined: 30 Sep 2007
Posts: 185

PostPosted: Sat Jul 18, 2009 3:35 pm    Post subject: [Pure-FTP] Permission par utilisateur Reply with quote

Bonjour à tous,

J'ai un petit soucis de permissions avec pure-ftpd. J'ai un script php qui a besoin d'avoir les permissions d'écritures sur les dossiers et fichiers qui sont uploadés par FTP (pour pouvoir créer des vignettes et les déplacer notamment). Actuellement j'utilise pureftp avec des utilisateurs virtuels stockés dans MySQL. L'utilisateur qui upload est maître de ses fichiers et ils ont comme permissions -rw-r--r-- (211) pour les fichiers et drwxr-xr-x (743) pour les dossiers. J'aurais besoin que cet utilisateur virtuel créé du 771:773 par exemple. Est-ce qu'il y a moyen de faire ça directement dans la BDD, ou en créant l'utilisateur virtuel avec un umask particulier (j'ai tenté useradd ... -K UMASK=113 sans succès, même avec sudo -u user touch file...) ? Notez aussi que je n'aimerais pas interférer avec les autres utilisateurs virtuels, donc je ne voudrais éviter de mettre un umask qui affecte tous les utilisateurs.

En espérant que vous pourrez m'aider, merci d'avance.
_________________
Desktop: Gigabyte EX38-DS4, Intel Q9450 2.6 GHz, 4 GiB DDR2, Nnvidia GTX 285.
Home-Server: Gigabyte 945GCM-S2L, Intel E2180 2.2 GHz, 2 GiB DDR2, Intel 82945G.
Laptop: Asus 1215N, Atom D525 1.4 Ghz, 2 GiB, Intel + Ion2
Back to top
View user's profile Send private message
Jamesbch
Apprentice
Apprentice


Joined: 30 Sep 2007
Posts: 185

PostPosted: Sat Jul 18, 2009 11:03 pm    Post subject: Reply with quote

Je me répondrais moi même,

j'ai trouvé une solution temporaire que je trouve moyennement propre. J'utilise l'option UPLOAD_SCRIPT que propre pure-ftpd. J'ai quelque chose comme ceci :

Code:
#!/bin/sh

# Upload script for gillesracine
# -- Chmod files to use it with IGalerie
if [ "$UPLOAD_VUSER" == "virtualuser" ];
then
 if [ "$1" -d ];
 then
  # For folders (dont work)
  chmod 770 "${1}";
 else
  # For files
  chmod 660 "${1}";
  # And apply chmod for the directory
  # where the file is too -TO FIX-
  chmod 770 `dirname "${1}"`
 fi
fi


Donc j'applique un chmod sur les fichiers que je veux seulement pour l'utilisateur virtualuser. Seulement le script n'est lancé que sur les fichiers uploadés, la création de dossiers ne lançant pas le script je dois ruser et chmod'er à chaque fois sur le dossier contenant le nouveau fichier uploadé. Je trouve ça peu propre mais pas trop le choix. Peut-être y'aura-t-il moyen de modifier le code source de pure-ftpd et de le patcher pour faire appel au script à la création de dossier aussi ? Qu'est-ce que vous en pensez ? Faisable ou pas ?
_________________
Desktop: Gigabyte EX38-DS4, Intel Q9450 2.6 GHz, 4 GiB DDR2, Nnvidia GTX 285.
Home-Server: Gigabyte 945GCM-S2L, Intel E2180 2.2 GHz, 2 GiB DDR2, Intel 82945G.
Laptop: Asus 1215N, Atom D525 1.4 Ghz, 2 GiB, Intel + Ion2
Back to top
View user's profile Send private message
Jamesbch
Apprentice
Apprentice


Joined: 30 Sep 2007
Posts: 185

PostPosted: Wed Aug 05, 2009 11:32 am    Post subject: Reply with quote

*bump*

Je relance le topic car je viens de remarquer que si on doit créer des sous-dossiers c'est impossible de cette façon ! Il faudrait uploader un fichier dedans à chaque nouveau dossier pour pouvoir créer des sous-dossiers ensuite. C'est très ennuyeux j'aurais impérativement besoin d'une solution fonctionnelle (et plus propre) ! Des idées ? Peut-être qu'un autre serveur FTP gère ceci ?
_________________
Desktop: Gigabyte EX38-DS4, Intel Q9450 2.6 GHz, 4 GiB DDR2, Nnvidia GTX 285.
Home-Server: Gigabyte 945GCM-S2L, Intel E2180 2.2 GHz, 2 GiB DDR2, Intel 82945G.
Laptop: Asus 1215N, Atom D525 1.4 Ghz, 2 GiB, Intel + Ion2
Back to top
View user's profile Send private message
kernelsensei
Bodhisattva
Bodhisattva


Joined: 22 Feb 2004
Posts: 5619
Location: Woustviller/Moselle/FRANCE (49.07°N;7.02°E)

PostPosted: Wed Aug 05, 2009 2:29 pm    Post subject: Reply with quote

Oh tiens, t'as un souci pas mal similaire à celui que j'avais. Utilisant piwigo (anciennement phpwebgallery), j'avais des soucis de permissions avec les vignettes créées par apache (je ne pouvais plus les supprimer).

Une manière de gérer le problème c'est d'utiliser les ACLs. Tu sets des default ACLs au répertoire parent, puis tout ce qui sera créé dans le répertoire héritera des default ACLs du parent. Les ACLs du système de fichier permettent une gestion fine des droits (dire que tel user peut écrire, tel user executer, tel groupe lire, ...). Ton script php est exécuté par le user apache non ? Dans ce cas t'as qu'a donner le droit d'écriture au user apache pour un répertoire donné via les ACLs.

Il faut que le support des ACLs pour ton FS soit activé dans le kernel et que t'ais monté la partoche avec l'option acl.

Est-ce que tu peux donner une idée de l'arborescence du truc et dire quel répertoire doit être modifiable par apache, etc. ?

EDIT : Si tu n'as jamais bossé avec les ACLs : http://www.suse.de/~agruen/acl/chapter/fs_acl-en.pdf
_________________
$ ruby -e'puts " .:@BFegiklnorst".unpack("x4ax7aaX6ax5aX15ax4aax6aaX7ax2aX5aX8 \
axaX3ax8aX4ax6aX3aX6ax3ax3aX9ax4ax2aX9axaX6ax3aX2ax4ax3aX4aXaX12ax10aaX7a").join'
Back to top
View user's profile Send private message
Jamesbch
Apprentice
Apprentice


Joined: 30 Sep 2007
Posts: 185

PostPosted: Wed Aug 05, 2009 9:00 pm    Post subject: Reply with quote

salut kernelsensei,

merci beaucoup pour cette information. Je ne connaissais pas les ACL et j'ai honte de moi de pas avoir découvert plus tôt :oops:. Ca risque de m'être fort utile dans le futur. Je me suis plongé dans le document, et j'ai essayé d'appliquer ça à mon problème. Je ne sais pas pourquoi mais les droits en w ne se transmettent pas. Je dois appliquer ces droits dans un dossier et tout ce qui est dedans. J'ai fais ainsi :

Code:
JamesbOVH albums # setfacl -m user:apache:rwx .
JamesbOVH albums # setfacl -d -m user:apache:rwx .
JamesbOVH albums # getfacl .
# file: .
# owner: gilleracine
# group: webftp
user::rwx
user:apache:rwx
group::rwx
mask::rwx
other::---
default:user::rwx
default:user:apache:rwx
default:group::rwx
default:mask::rwx
default:other::---


Donc j'ai rajouté en access et default permission apache en rwx. Maintenant je créé un fichier et un dossier depuis mon client FTP :

Code:
JamesbOVH albums # ls -lh
total 228K
-rw-r-----+ 1 gilleracine webftp 211K août  5 22:56 photo.jpg
drwxr-x---+ 2 gilleracine webftp 4,0K août  5 22:56 testb
JamesbOVH albums # getfacl photo.jpg testb/
# file: photo.jpg
# owner: gilleracine
# group: webftp
user::rw-
user:apache:rwx         #effective:r--
group::rwx         #effective:r--
mask::r--
other::---

# file: testb/
# owner: gilleracine
# group: webftp
user::rwx
user:apache:rwx         #effective:r-x
group::rwx         #effective:r-x
mask::r-x
other::---
default:user::rwx
default:user:apache:rwx
default:group::rwx
default:mask::rwx
default:other::---


Donc je ne sais pas pourquoi c'est pas effectif en rwx !? Pourtant je vois que les masks et default mask du dossier parent sont bon et pas ceux des objets créés...
_________________
Desktop: Gigabyte EX38-DS4, Intel Q9450 2.6 GHz, 4 GiB DDR2, Nnvidia GTX 285.
Home-Server: Gigabyte 945GCM-S2L, Intel E2180 2.2 GHz, 2 GiB DDR2, Intel 82945G.
Laptop: Asus 1215N, Atom D525 1.4 Ghz, 2 GiB, Intel + Ion2
Back to top
View user's profile Send private message
kernelsensei
Bodhisattva
Bodhisattva


Joined: 22 Feb 2004
Posts: 5619
Location: Woustviller/Moselle/FRANCE (49.07°N;7.02°E)

PostPosted: Fri Aug 07, 2009 7:36 am    Post subject: Reply with quote

J'avais pas pensé à ça, mais oui, le mask est modifié par le chmod (valeur du groupe), donc ça craint un peu. Par contre j'ai regardé du coté de la doc de Pure-Ftpd, si tu enlèves l'option -R tu peux autoriser tes utilisateurs à utiliser chmod. Donc après un upload tu aurais juste à faire le chmod -R qui va bien.
_________________
$ ruby -e'puts " .:@BFegiklnorst".unpack("x4ax7aaX6ax5aX15ax4aax6aaX7ax2aX5aX8 \
axaX3ax8aX4ax6aX3aX6ax3ax3aX9ax4ax2aX9axaX6ax3aX2ax4ax3aX4aXaX12ax10aaX7a").join'
Back to top
View user's profile Send private message
Jamesbch
Apprentice
Apprentice


Joined: 30 Sep 2007
Posts: 185

PostPosted: Fri Aug 07, 2009 1:21 pm    Post subject: Reply with quote

Le problème c'est que n'est pas moi qui upload les fichiers et ceux qu'ils le font ne savent pas ce que sont les droits ou les chmod. Donc en gros la solution serait de coupler les ACL et le script UPLOADSCRIPT de pure-ftpd. Suffit que j'y mette un chmod -R sur la racine du dossier. Pour l'option -R je ne veux pas permettre aux utilisateurs de changer le chmod par raison de sécurité déjà. Enfin je préfère pas pour l'instant.
Par contre, ce serait bien de faire un patch qui permette de chmod'er les fichiers/dossiers pour personnaliser les droits par utilisateur virtual selon ses préfères :)
_________________
Desktop: Gigabyte EX38-DS4, Intel Q9450 2.6 GHz, 4 GiB DDR2, Nnvidia GTX 285.
Home-Server: Gigabyte 945GCM-S2L, Intel E2180 2.2 GHz, 2 GiB DDR2, Intel 82945G.
Laptop: Asus 1215N, Atom D525 1.4 Ghz, 2 GiB, Intel + Ion2
Back to top
View user's profile Send private message
Display posts from previous:   
Reply to topic    Gentoo Forums Forum Index French All times are GMT
Page 1 of 1

 
Jump to:  
You cannot post new topics in this forum
You cannot reply to topics in this forum
You cannot edit your posts in this forum
You cannot delete your posts in this forum
You cannot vote in polls in this forum