Droits ftp

Bonjour,

Voici le problème :
Une persone landa veut transférer chez elle des fichiers présents dans un dossier x sur mon serveur (gproftpd). Elle se connecte en tant que landa et…droits en écriture refusés ! elle ne peut rien copier.
Je me connecte en root, je fais un : " chown -R landa . Elle peut à ce moment là y accéder.
Mais, moi du coup je n’y est plus accès !! Je dois donc faire la manip inverse à la fin du transfert : " chown -R dupont .

Je pense que je dois pouvoir à la fois autoriser une personne à transférer des dossiers de mon serveur tout en y ayant accès sans passer à chaque fois par cette commande.
Mais je ne sais pas comment faire.
Un coup de main ?

Salut,

Ce sont les droits d’accès que tu dois modifier, pas le propriétaire :slightly_smiling:

Regardes du côté de chmod :slightly_smiling:

Alors,

ls -l me donne pour le répertoire concerné la chose suivante :

drwxrwxrwx 4 dupont dupont 4096 2008-10-19 17:29 ftp

Donc si je comprends la syntaxe rwx (read write execution) tous les droits sont ouvert à tous les utilisateurs.

Tiré de linux-france.org/article/deb … html#chmod

  1. La première partie fixe les droits de propriétés pour le propriétaire du fichier.
  2. La deuxième partie fixe les droits accordés aux utilisateurs faisant partie du groupe auquel appartient le fichier.
  3. La dernière partie fixe les droits des autres utilisateurs.

C’est pour cela que je ne comprends pas que les utilisateurs n’y aient pas accès ! A moins que l’accès par ftp ne rentre pas dans les utilisateurs.

Re,

Ce n’est pas seulement le répertoire mais le chemin complet qui doit être accessible.

Dans /home/dupont home doit être accessible et pas seulement dupont :slightly_smiling:

Pour être plus précis :

tu as un répertoire qui sert à acceuillir tes fichiers. Ce répertoire est accessible via un accès ftp distant par un ou plusieurs utilisateurs.

Pour que ces utilisateurs puissent accéder au dossier, ils doivent donc avoir les droits pour le faire. Ces droits, tu peux les lister avec un “ls -l” (si tu as placé ce répertoire dans /home, et que tu as appellé ce répertoire "monrépertoire, tu peux faire un :

ls -l /home | grep monrepertoire

Ce faisant tu verras le propriétaire et le groupe propriétaire du répertoire. Met “root” comme propriétaire du répertoire (chown root monrepertoire). Quand au groupe - on va l’appeller “mongroupe” pour faire simple, il doit être “groupe propriétaire” du répertoire.

Dans ce groupe, tu dois ajouter tes utilisateurs : utilise la commande

gpasswd -a user groupe

Les membres du groupes doivent aussi avoir le groupe de connexion mongroupe. Pour ça :

usermod -g mongroupe user
(user étant un utilisateur “lambda” - avec un “d”, lambda, lol)

tu pourras faire un “id” sur l’utilisateur pour voir de quoi il retourne. Ainsi, si tu veux remettre un groupe secondaire, tu feras un

usermod -G mongroupe user

Une fois le user ajouté dans le groupe propriétaire du répertoire, tu vérifie les droits avec ls -l, comme indiqué ci-dessus. Les droits peuvent être :

r : droit de lecture (read)
w : droit d’écriture (write)
x : droit d’exécution (Xecute? :slightly_smiling:

le droit x est indispensable s’il faut que le user puisse surfer dans le répertoire. Si par exemple, il y a un répertoire à l’intérieur du répertoire de connexion, sans le droit x, il ne pourra pas y pénétrer (ça devient porno, c’t’histoire…). Il est aussi nécessaire s’il doit pouvoir y exécuter un programme.

Voilà, tu sais tout.

juste une précision supplémentaire :

Les droits se présentent ainsi :

-rwxrwxrwx (pour un fichier)
drwxrwxrwx (pour un répertoire, avec le “d” pour directory)
(après, y a aussi des variantes - et bien sûr, ici, nous avons des droit en 777, autrement dit, tous les droits).

Ce qui importe, c’est que le premier rwx représente les droit du proprio. Le second du groupe propriétaire et le troisième des “autres”. Ainsi, si tu as fait tout ce que j’ai indiqué précédemment, mais que tu as :

-rwxr-----
(par exemple)

Alors seul le owner (propriétaire) aura tous les droits. Le groupe n’aura qu’un droit de lecture et les autres auront peau de balle.

A ce stade, ce sera à toi de rajouter les droits qui t’intéresse. Et pour ça, en effet, il faut utiliser la commande chmod. Tu regarderas les tutos sur la toile pour savoir commen faire, mais c’est simple comme bonjour.

:slightly_smiling:
Si tu ne t’en sors pas avec tout ça…

A cela j’ajouterai que si tu ne vois toujours pas, n’hésite pas à nous montrer tes droits sur ton répertoire.

ls -l / | grep home
ls -l /home | grep dupont

Ce n’est pas seulement le répertoire mais le chemin complet qui doit être accessible.

Dans /home/dupont home doit être accessible et pas seulement dupont

D’accord,

Dans ce cas un : chown -g 755 /home/dupont/ftp
devrait donné les droits en rwx à tous les utilisateurs du repertoire ftp se trouvant dans /home/dupont, non ?
C’est compliqué tout çà !!

zut, je me suis trompé :

c’est chmod -g 755 /home/dupont/ftp que je voulais dire

non, pas 755 mais 777 !

non, c’était bien un 755 !!

J’vais laisser tomber si çà continu !

Bon, je reprends où j’en était :

Pour modifier les droits sur le chemin complet :

#chmod 750 /home/dupont/ftp

7 pour tous les droits à l’utilsateur
5 uniquement lecture et execution pour les utilisateurs
0 pour les autres.

je mets le chemin complet car je veux que ces droits s’appliquent non pas uniquement au répertoire ftp mais au chemin complet.

Si çà se trouve j’ai rien compris ; mais c’est pas grave çà ira mieux demain !!!

ls -l / | grep home
drwxr-xr-x 5 root root 4096 2008-09-17 09:28 home

çà <5 root root> je ne sais pas comment le lire !!
çà oui !

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

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 :slightly_smiling:) Pratique et fais des tests, tu vas voir, tu vas bien vite comprendre.