VSFTPD, 553 Impossible de créer le fichier. - autorisations?


31

J'ai configuré VSFTPD sur Amazon EC2 avec Amazon Linux AMI. J'ai créé un utilisateur et je peux maintenant me connecter avec succès via ftp. Cependant, si j'essaie de télécharger quelque chose, j'obtiens le message d'erreur "553 Impossible de créer le fichier."

Je suppose que cela a à voir avec les autorisations, mais je n'en connais pas assez pour pouvoir y remédier. Donc, fondamentalement, que dois-je faire pour pouvoir télécharger des fichiers?


Vérifiez les paramètres selinux. configurer boolean allow_ftpd_full_access sur ON

Réponses:


18

Il y a deux raisons probables à cela: vous n'avez pas d'autorisations d'écriture et d'exécution sur les répertoires menant au répertoire vers lequel vous essayez de télécharger, ou vsftpdest configuré pour ne pas vous permettre de télécharger.

Dans le premier cas, utilisez chmodet chownselon le cas pour vous assurer que votre utilisateur dispose de ces autorisations sur chaque répertoire intermédiaire. Le bit d'écriture permet à l'utilisateur affecté de créer, renommer ou supprimer des fichiers dans le répertoire et de modifier les attributs du répertoire, tandis que le bit de lecture permet à l'utilisateur affecté de répertorier les fichiers dans le répertoire. Étant donné que les répertoires intermédiaires du chemin affectent également cela, les autorisations doivent être définies de manière appropriée jusqu'à la destination finale vers laquelle vous souhaitez télécharger.

Dans ce dernier cas, regardez votre vsftpd.conf. write_enabledoit être vrai pour autoriser l'écriture (et il est faux par défaut). Il existe une bonne documentation sur ce fichier de configuration à man 5 vsftpd.conf.


10
Aucun de ces éléments ne semble être le problème. J'ai essayé de tout changer en 777 (dangereux) et les paramètres write_enable = YES, mais je reçois toujours ce message d'erreur inutile.
Cerin

@Cerin avez-vous pu le réparer? Si oui, pouvez-vous partager les détails?
unknownerror

34

Pourriez-vous essayer ceci

chown -R ftpusername /var/www/html

5
chmod 757 -R / var / www / html
Hernán Eche

1
@ HernánEche merci pour le conseil, je chassais depuis des heures et cela a finalement résolu mon problème.
Tr0yJ

Pourriez-vous expliquer la situation, est-ce sur le serveur ou localement?
Édouard Lopez

1
@ HernánEche Hé, cela a fonctionné pour moi aussi, mais est-ce sécurisé? Ça ne fonctionnait pas avec 755
viv

1
@ HernánEche, vous devriez en faire une réponse distincte. Votre suggestion a fonctionné pour moi là où rien d'autre n'a fait.
Shaul dit que je soutiens Monica le

11

La commande ftp put /path/to/local_filene fonctionne pas avec vsftpd. Essayez ce qui suit:

ftp put /path/to/local_file remote_file_name 

Vous pouvez choisir le nom de votre choix remote_file_name, mais vous devez en spécifier un.


2
Vous pouvez envisager d'ajouter plus de détails à votre réponse (par exemple, une documentation qui prend en charge la validité de votre solution).
HalosGhost

Cela se produit car (et si) /path/to/n'existe pas (et / ou n'est pas accessible via la session FTP) sur le serveur. C'est pourquoi ftp put local_file ne travail sans destination explicite. (Astuce: vérifiez la local: … remote: …ligne dans le client FTP.)
Skippy le Grand Gourou

1
Ça a marché pour moi! :)
Paulo

3

Le répertoire de base FTP (ftp_home_dir) est très probablement désactivé dans SeLinux. Pour voir l'état de vos ftpdfichiers de contrôle, lancez: getsebool -aet recherchez la section ftpd. Vous remarquerez peut-être que ftp_home_dir est désactivé. Pour l'activer, utilisez la commande suivante:setsebool -P ftp_home_dir=1

Vérifiez votre saisie à l'aide de getsebool -a, puis réessayez le téléchargement.

Remarque: ignorez les signes de ponctuation


2

J'ai eu le même problème et corrigé la modification de SELinux pour permettre l'écriture dans le dossier que j'ai configuré pour être utilisé par vsftp = /var/ftp/pub.

Ces liens peuvent être utiles:

Si vous ne voulez pas aller plus loin avec votre SELinux, ne le changez pas, vous verrez donc par défaut /etc/selinux/config

SELINUX=enforcing

puis exécutez simplement les commandes en tant que root ou avec sudo:

sudo setsebool -P ftpd_anon_write 1
sudo setsebool -P ftpd_full_access 1

comme déjà décrit ci-dessus dans d'autres commentaires.


1

Vérifiez votre vsftpd.confpour ce paramètre:

guest_enable=YES # set it to NO then restart the vsftpd service.

S'il est défini sur YES, il provoquera également le 553 Could not create file.

De: http://www.vsftpd.beasts.org/vsftpd_conf.html

guest_enable Si cette option est activée, toutes les connexions non anonymes sont classées en tant que connexions "invité". Une connexion d'invité est remappée à l'utilisateur spécifié dans le paramètre guest_username.

Par défaut: NON



0

Autre possibilité: vérifier les quotas de disque pour l'utilisateur / groupe

ext:

repquota -a

xfs:

xfs_quota -x -c 'report' /mount_point

0

Le paramètre suivant donnera à ftpd un accès pour écrire n'importe où:

setsebool -P ftpd_full_acess=true 

Ne l'utilisez ftpd_anon_writeque si vous souhaitez autoriser les téléchargements anonymes.


0

Vous avez probablement des caractères non pris en charge dans le nom de fichier


-1

Pour Fedora23, exécutez les commandes:

setsebool -P ftpd_anon_write 1 
setsebool -P ftpd_full_access 1

Ça a marché pour moi.

En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.