Ok,
Pardon, c’est pas clair :
ls -l me donne pour le répertoire concerné la chose suivante :
drwxrwxrwx 4 dupont dupont 4096 2008-10-19 17:29 ftp
Il est situé où ce répertoire? Dans /home? /home/dupont? (tu n’aurais pas un frère jumeau dont le nom se terminerait pas un “d”, par hasard?..).
Reprenons depuis le début (tkt à 10 contre 1 que c’est rien du tout comme pb).
Prenons mon cas en exemple (pour comparaison):
Monstre:/# ls -l / | grep home
drwxr-xr-x 13 root root 4096 2008-10-12 23:54 home
Déjà pour remarque :
“root root” =
propriétaire du répertoire : root
groupe de users propriétaires du répertoire : root.
Déjà tu remarqueras que l’utilisateur n’a pas besoin d’un accès à toute l’arborescence de fichiers (sinon j’aurais non pas “root root” comme propriétaire et groupe propriétaire de /home, mais “root vsftpd” comme pour le répertoire /home/vsftpd). Il doit juste avoir accès au répertoire cible. Ca suffit (moi ca marche sans le moindre souci et mes utilisateurs font ce qu’ils veulent dedans - je leur ai accordé des droits rwx et étant chrootés, pas de pb).
Monstre:/# ls -l /home|grep vsftpd
drwxrwx— 5 root vsftpd 4096 2008-10-19 12:56 vsftpd
En revanche, ici, pour le répertoire /home/vsftpd, j’ai un groupe propriétaire qui s’appelle vsftpd.
Ce groupe a tous les droits sur le répertoire : rwx. Les “autres” n’ont rien (et puis quoi, encore?! lol).
Dans ce groupe figure des utilisateurs. C’est comme ça que tu attribues des droits d’accès au répertoire.
Pour visualiser qui fait partie du groupe “vsftpd”, je peux faire :
Monstre:/# cat /etc/group | grep vsftpd
vsftpd:x:1001:toto,marcel,robert,jonas
(par exemple).
Ainsi toto, marcel, robert et Jonas font partie du groupe vsftpd qui est propriétaire du répertoire /etc/vsftpd. Le groupe vsftpd ayant des droits en rwx sur le répertoire du même nom, alors les users toto and cie peuvent lire, ecrire et exécuter dans le répertoire.
Or, ces users, comme je l’ai expliqué tout à l’heure, tu les ajoutes aux groupes en deux étapes.
D’abord, tu modifies leur répertoire de connexion de façon à ce que, lorsqu’il requète l’accès au répertoire distant, ils atterissent bien là où tu veux, à savoir dans ton cas /home/dupont ou /home/dupont/xp, ou /home/dupont/stephanie.
Pour ça, soit c’est déjà fait au moment de la création de l’utilisateur (il y a les options pour ça, dans adduser et useradd), soit ce n’est pas fait et dans ce cas tu utilises “usermod -d” (“d” pour directory. Cf. mes explications).
Ensuite, le répertoire, c’est une chose, mais ils doivent aussi faire partie du groupe qui est propriétaire de ce répertoire pour pouvoir bénéficier des droits dudit groupe (logique). Donc, pour ça, tu utiliseras l’option “usermod -g”. Cette option te permettra de modifier le groupe principal d’un utilisateur.
exemple.
Le groupe principal de titi est grosminet.
disons que tu préfères que son groupe principal devienne le groupe “SpeedyGonzales”.
Tu feras alors un "usermod -g SpeedyGonzales titi"
Si tu fais la vérification, tu verras que titi est à présent dans SpeedyGonzales (qui, depuis, a mal au cul).
Dans le cas que je te présente ensuite, toto, après un usermod -g, se trouve dans le groupe principal “vsftpd”. Ce qui se vérifie comme suit:
Monstre:/# id toto
uid=1006(toto) gid=1001(vsftpd) groupes=1001(vsftpd),1007(toto)
Cette ligne nous dit quoi? que son identifiant est “toto” (ok…), son uid 1006 (ok…) et surtout… sont gid est 1001 (ok…) ce qui correspond au groupe vsftpd (groupe qui bien entendu doit déjà exister, sinon ça ne marche pas).
Ce gid est le groupe principal. Le groupe de connexion, si tu préfères.
La ligne “groupes” nous donne l’ensemble des groupes auxquels appartiennent les users. Autrement dit : le groupe de connexion et les autres groupes.
Le user toto a donc pour groupe de connexion vsftpd, mais il fait aussi partie, en plus, du groupe secondaire “toto”.
Pour modifier le groupe principal : usermod -g.
Pour ajouter ou modifier le groupe secondaire : usermod -G
Simple comme bonjour (la première fois, c’est sans doute un peu abstrait, mais en fait, c’est extrêmement simple… Je t’assure que la gestion de ces mêmes droits sous un Windows server 2003, c’est autrement plus spatial à capter… c’est pourtant le même principe, mais en version click’n touch complètement barré).
Toutefois avec cette commande, tu ne fais qu’indiquer avec quel groupe il se connecte. Pas plus. Donc, pour bien faire, il faut bien sûr qu’il appartienne à ce groupe. Et pour ça, tu utilises la commande “gpasswd -a” (“a” pour add), comme expliqué précédemment.
Pour info, tu peux aussi ajouter un user à un groupe en modifiant directement le fichier /etc/group, mais si tu fais un “grpck”, le serveur va te crier dessus.
Un cat sur /etc/group, voire un cat /etc/group| grep user pourra te permettre de voir qui se trouve dans le groupe.
Inversement, la commande “groups” te permettra de savoir à quel groupe appartient un utilisateur donné. Exemple:
Monstre:/# groups christian
christian : christian dialout cdrom floppy audio video plugdev powerdev netdev
Revenons à ton propre cas.
A priori, je suppose qu’en fait, tu veux que les utilisateurs puisse aller dans :
/home/dupont/stephanie
/home/dupont/xp
tu nous donnes les informations suivantes :
ls -l / | grep home
drwxr-xr-x 5 root root 4096 2008-09-17 09:28 home
ls -l /home | grep dupont
drwxr-xr-x 46 dupont dupont 4096 2008-10-22 12:09 stephanie
dr-xr-xr-x 1 root dupont 24576 2008-10-17 19:55 xp
Vu que t’aimes bien le récursif, j’imagine que ton /home/dupont doit ressembler à ça:
ls -l /home
dr-xr-xr-x 1 root dupont 24576 2008-10-17 19:55 dupont
(plus ou moins)
Visiblement, ce qui nous intéresse le plus, c’est le groupe dupont. Pose toi la question suivante :
-Tu veux donner le droit d’accès à ce répertoire pour qui?
-Ces utilisateurs font-ils partie du groupe dupont (pour ça : /etc/group | grep dupont)
-S’ils font partie du groupe, ce répertoire /home/dupont est-il leur répertoire de connexion? ou au contraire chaque utilisateur doit-il arriver dans leurs répertoire propre (exemple, Stéphanie, lorsqu’elle se connecte avec Filezilla, doit-elle arriver dans /home/dupont ou dans /home/dupont/stephanie? Et si elle doit arriver dans /home/dupont, doit-elle avoir le droit d’aller visiter (ou plus si affinité) les répertoires de xp ou de ftp?)
-S’ils font partie du groupe, ledit groupe (dupont) est-il bien leur groupe de connexion ? (pour ça : id nomduuser)
-S’ils font partie du groupe, toujours, quel droit tu veux leur donner? (Actuellement, je vois un droit de lecture et d’exécution uniquement. Pas de droit d’écriture pour les membres du groupe dupont. Idem pour les répertoires qui sont contenus dans /home/dupont).
Allez, au turf, man! Je t’ai tout expliqué, là! A ton tour de jouer (lis bien tout ce que je t’ai mis. N’hésite pas à surfer un peu partout sur d’autres tuto pour bien tout comprendre
) Pratique et fais des tests, tu vas voir, tu vas bien vite comprendre.