Comparez les prix des domaines et des services informatiques des vendeurs du monde entier

Utilisateur FTP Impossible de modifier des fichiers, mais a les bonnes autorisations

J'ai créé un nouvel utilisateur (

foo

), et quand il entre dans le système à travers ftp, Il ne peut pas modifier des fichiers dans le répertoire auquel il a accès.

Dans le catalogue, il peut se connecter

ls -l

Donne moi:

-rw-rw-r-- 1 root www-pub  6427 Nov 17 04:21 index.html

L'utilisateur appartient au groupe

www-pub

. Voici le résultat

cat /etc/group

Pour démontrer que c'est vraiment dans ce groupe:

...
www-pub:x:1001:ftpuser,www-data,foo
foo:x:1002:

* Modifiez les droits d'accès au catalogue contenant:

drwxrwsr-x  5 root www-pub  4096 Nov 17 02:53 thecontainingdir

Et celui ci-dessus:

drwxrwsr-x 49 root www-pub  4096 Nov 16 02:40 thenextdirup

Donc, comme il peut se connecter à travers ftp, et puisque le dossier qu'il doit modifier a les bonnes autorisations pour permettre au groupe

www-pub

lit et enregistre le fichier et il est membre de ce groupe, pourquoi il ne peut pas le modifier (ou télécharger quoi que ce soit)?

Seulement quand je change le fichier sur

777

Il peut le modifier. Comme si ce n'était pas dans le groupe ... Mais il est! Quel est le problème?
Invité:

Alice

Confirmation de:

Bref, v3.2.5 vsftpd ne fonctionnera pas avec la racine enregistrée à l'intérieur chroot (), Par conséquent, vous devez soit rendre le dossier racine de l'utilisateur inaccessible à enregistrer, soit aller à la nouvelle version. (et installer certains paramètres conf), Ou aller à la version ancienne. version.

Des détails

Eh bien, le problème s'est posé à cause de ce que j'ai utilisé vsftpd version 2.3.5 (Dernier package disponible pour mon serveur). Cette version vsftpd Nécessite un répertoire domestique de l'utilisateur ftp N'a pas eu le droit d'enregistrer. Oui, vous le lisez correctement. Donc, dans mon cas, je voulais que l'utilisateur se connecte au serveur Web root par ftp Et commencer à éditer. Je ne peux pas le faire. J'ai dû créer un autre répertoire sur le répertoire Web racine, en faire un répertoire utilisateur fait maison, le rendre inaccessible à enregistrer, puis l'utilisateur pourrait se connecter. ftp, Aller au catalogue Web racine et modifier / Téléchargez comme prévu.

Dans mon cas, cette solution est en train de sucer, car j'ai plusieurs utilisateurs travaillant à différentes profondeurs de plusieurs répertoires virtuels, mais au moins cela fonctionne (Et j'utilise l'écrasement pour que les gens ne confondent pas). Maintenant, j'ai besoin de toujours suivre le fait que tout ce que je veux attribuer un utilisateur spécifique, il y a un catalogue de shell.

Les principales offres que j'ai trouvées sur Internet:

add `allow_writeable_chroot=YES` to your conf file

(Cela ne fonctionnait pas non seulement, mais a également causé des problèmes de redémarrage du démon. Je soupçonne que cela fonctionne si vous avez une version ultérieure (3.0+) vsftpd)

Aller à la version précédente vsftpd

(J'ai supprimé la version actuelle et j'ai commencé à essayer de forcer l'ancienne version à travailler avec mon serveur, mais j'ai rencontré un tel certain nombre de dépendances manquantes et infructueuses, qui les ont refusé. D'autres utilisateurs en ligne ont eu la chance de revenir à la version. 2.3.2 ou à la version 3. x, Si vous pouvez compiler votre propre)

Quelques autres solutions proposées proposées par l'un des développeurs vsftpd, Que j'ai trouvé sur Internet:

Déterminer l'option local_root = Dans le fichier de configuration. ça devrait être / home ou autre moyen du répertoire avec des dossiers utilisateur. De cette façon, vsftpd va dans le répertoire racine / home.

(Cela ne fonctionnera pas pour moi, car je ne peux pas avoir la seule racine locale)

Déterminer l'option passwd_chroot_enable = yes Dans le fichier de configuration et modifiez le répertoire de base de l'utilisateur dans le fichier / etc / passwd avec «/ home / user» sur le «/home/./user» (sans quavichek). De cette façon, vsftpd va dans le répertoire racine / home.

(Cela ne fonctionnera tout simplement pas sur mon serveur.)

Code de la source de charge vsftpd-ext, Compiler et redémarrer les fichiers binaires existants vsftpd Ou prenez-le des référentiels et ajoutez au fichier de configuration

option allow_writeable_root = yes.

(Je ne peux pas compiler sur ce serveur.)

Pour répondre aux questions, connectez-vous ou registre