Problème de droits sous Pure-FTPd

Bonjour,

J’ai installé un serveur Pure-FTPd. J’utilise des utilisateurs virtuels via une table MySQL. J’ai toutefois un petit problème de droits :
J’ai le répertoire d’accueil /home/ftp que j’ai attribué à l’utilisateur de montage ftpuser :

drwxr-xr-x 4 ftpuser ftpgroup 4096 2008-01-29 19:38 . drwxr-xr-x 5 root root 4096 2008-01-28 06:35 .. drwxr-xr-x 2 root root 4096 2008-01-29 19:38 files drwxr-xr-x 2 root root 4096 2008-01-29 19:38 others
J’ai également ajouté deux dossiers que j’ai attribué à root. Je souhaiterai que les utilisateurs qui se connecte au ftp puisse les lister et les executer mais ne pas les supprimer (ce qui semble correcte vu le chmod en 755)…
Pourtant, quand je me connecte via Pure-FTPd, je peux les supprimer sans problème !

ftp> rmdir movies 250 The directory was successfully removed
J’ai essayé de chercher sur le net, mais zai rien trouvé :frowning:
Est-ce que quelqu’un aurait une idée, svp ?? :slightly_smiling:

Salut,
si les fichiers on bien été déposés par root alors ils ne peuvent pas les supprimer.
Vérifie avec ton client ftp que le propriétaire a bien un uid et un gid de 0

[ol][li]Test d’un dossier vide, souhaité en lecture et exécution (écriture interdite) :
[ul][*]en local

[li]depuis le ftp

[code]drwxr-xr-x 2 0 0 4096 Jan 30 20:13 files

ftp> rmdir files
250 The directory was successfully removed[/code][/li][/ul][/:m]
[li]Test d’un dossier non vide, souhaité en lecture et exécution (écriture interdite) :
[ul][
]en local
[list][*]le dossier

[li]dans le dossier

[li]depuis le ftp

ftp> rmdir files 550 Can't remove directory: Directory not empty
Et depuis un client lourd, genre Filezilla, ça liste le dossier, mais je ne peut effectivement pas le supprimer.[/li][/list:u][/*:m][/ol]
Ca marche donc, mais c’est une pirouette. Apparement, les droits que j’attribue s’appliquent aux sous-fichiers mais pas au dossier en lui même…

Ok, mais si je fais ça, ça va autoriser explicitement la suppression non ?

Oui puisque la connexion ne s’effectuera que si le dossier parent appartient a ftpuser et ftpgroup.
Si le dossier parent appartient à root:root je doute que tu puisse te connecter au serveur car par la force des choses tous les fichiers et dossiers enfants appartiendrons a root:root aussi car lui seul pourra y ecrire et pure-ftpd ne permet pas la connexion avec root.

Pour résumer, ton dossier parent appartient à ftpuser et ftpgroup donc tout ce qui s’y trouve pourra etre supprimer par ftpuser meme si root y a créer un dossier.

Pour faire ce que tu veux, crée un dossier que tu nommes par exemple ‘dossier’ dans /home/ftp et tu lui donne les droits pour root et comme group ftpgroup ensuite tu donnes à ce dossier un chmod de 555.
Tu créer ensuite un utilisateur quelquonque associé à l’utilisateur physique ftpuser et ftpgroup que tu nomme ‘listing’ par exemple avec l’authentification normal mysql et tu lui donne comme dossier racine le dossier créer par root ‘dossier’, donc les utilisateurs qui s’y connecterons aurons directement comme racine le répertoire qui appartien à root /home/ftp/dossier et ne pourrons rien effacer mais tout voir et exécuter.
Et toi seul auras le droits de supprimer ce dossier en te connectant sur /home/ftp

Je sais pas si ça répond à ta question ?

Ok merci.
Ca répond en tout cas aux questions que je me posais, mais pas à l’architecture de dossiers souhaitée.
Mais je vais utilisé les .deleteforbidden, ça me semble répondre parfaitement à ce que je souhaite faire…
Merci encore.