J'ai configuré VSFTPD sur Amazon EC2 avec l'AMI Amazon Linux. 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 suffisamment pour pouvoir y remédier. Donc, fondamentalement, que dois-je faire pour pouvoir télécharger des fichiers?
Cela peut se produire pour deux raisons: vous ne disposez pas des autorisations d'écriture et d'exécution sur les répertoires menant au répertoire dans lequel vous essayez de télécharger, ou vsftpd
est configuré pour ne pas vous permettre de télécharger.
Dans le premier cas, utilisez chmod
et chown
selon 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 dans le chemin affectent également cela, les autorisations doivent être définies de manière appropriée jusqu'à la destination finale vers laquelle vous avez l'intention de télécharger.
Dans ce dernier cas, regardez votre vsftpd.conf
. write_enable
doit être vrai pour permettre l'écriture (et il est faux par défaut). Il existe une bonne documentation sur ce fichier de configuration à man 5 vsftpd.conf
.
Pourriez-vous essayer ceci
chown -R ftpusername /var/www/html
La commande ftp put /path/to/local_file
ne 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 pour le remote_file_name
, mais vous devez en spécifier un.
Le répertoire de base FTP (ftp_home_dir) est très probablement désactivé dans SeLinux. Pour afficher l'état de vos fichiers de contrôle ftpd
, entrez: getsebool -a
et 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
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.
Essaye ça
chmod 757 -R /var/www/html
Vérifier votre vsftpd.conf
pour 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
Vous avez probablement des caractères non pris en charge dans le nom de fichier
Le paramètre suivant donnera un accès ftpd pour écrire n'importe où:
setsebool -P ftpd_full_acess=true
Ne pas utiliser ftpd_anon_write
sauf si vous souhaitez autoriser les transferts anonymes.
Autre possibilité: vérifier les quotas de disque pour l'utilisateur/groupe
ext:
repquota -a
xfs:
xfs_quota -x -c 'report' /mount_point
Dans mon cas, l'utilisateur ftp n'avait aucune autorisation dans le répertoire où il se trouvait.
J'avais juste oublié de cd dans le répertoire cible, pour lequel j'ai ai les bonnes autorisations.