Eu configurei vsftpd
no Amazon EC2 com o Amazon Linux AMI. Eu criei um usuário e posso agora conecto com sucesso via ftp. No entanto, se eu tentar fazer upload de algo, recebo a mensagem de erro
553 Could not create file.
Presumo que isso tenha a ver com permissões, mas não “Não sei o suficiente sobre isso para ser capaz de consertá-lo. Então, basicamente, o que eu tenho que fazer para poder enviar arquivos?
Comentários
- Verifique as configurações do selinux. configure o booleano allow_ftpd_full_access para ON
- Tive esse problema porque não havia espaço suficiente para gravar os arquivos.
Resposta
Há duas razões prováveis para isso acontecer – você não tem permissões de gravação e execução nos diretórios que levam ao diretório para o qual está tentando enviar ou vsftpd
está configurado para não permitir que você faça upload.
No primeiro caso, use chmod
e chown
conforme apropriado para garantir que seu usuário tenha essas permissões em cada diretório intermediário. O bit de gravação permite que o usuário afetado crie, renomeie ou exclua arquivos dentro do diretório e modifique os atributos do diretório, enquanto o bit de leitura permite que o usuário afetado liste os arquivos dentro do diretório. Como diretórios intermediários no caminho também afetar isso, as permissões devem ser definidas de forma adequada, levando ao destino final para o qual você pretende enviar.
No último caso, olhe para seu vsftpd.conf
. write_enable
deve ser verdadeiro para permitir a gravação (e é falso por padrão). Há uma boa documentação sobre este arquivo de configuração em man 5 vsftpd.conf
.
Comentários
- Nenhum desses parece ser o problema. Tentei fazer chmod tudo para 777 (inseguro) e as configurações write_enable = YES, mas ainda consigo esta mensagem de erro inútil.
- @Cerin você conseguiu consertar? Se sim, você pode compartilhar os detalhes?
Resposta
Você poderia tentar isso
chown -R ftpusername /var/www/html
Comentários
- chmod 757 -R / var / www / html
- @Hern á nEche obrigado pela dica, eu estava caçando por horas e isso finalmente resolveu meu problema.
- Você poderia explicar melhor a situação, é no servidor ou localmente?
- @Hern á nEche Ei, funcionou para mim também, mas é seguro. Não estava ‘ trabalhando com 755
- @Hern á nEche, você deve fazer uma resposta separada. Sua sugestão funcionou para mim onde nada mais funcionou.
Resposta
O comando ftp put /path/to/local_file
não funciona com vsftpd
. Tente o seguinte:
ftp put /path/to/local_file remote_file_name
Você pode escolher qualquer nome que você deseja para remote_file_name
, mas você deve especificar um.
Comentários
- Você pode querer considerar a adição de mais detalhes à sua resposta (por exemplo, alguma documentação que suporte sua solução ‘ validade).
- Isso acontece porque (e se)
/path/to/
não ‘ não existe (e / ou não ‘ acessível através da sessão FTP) em o servidor. É por isso queftp put local_file
funciona sem destino explícito. (Dica: verifique a linhalocal: … remote: …
em o cliente FTP.) - Funcionou para mim! 🙂
Resposta
O diretório inicial do FTP (ftp_home_dir) está provavelmente desligado no SeLinux. Para ver o status de seus ftpd
arquivos de controle, emita: getsebool -a
e localize a seção ftpd. Você pode notar que ftp_home_dir está desligado. Para ativá-lo, use o seguinte comando: setsebool -P ftp_home_dir=1
Verifique sua entrada usando getsebool -a
e tente fazer o upload de novo.
Nota: Ignore os sinais de pontuação
Resposta
Eu tive o mesmo problema e corrigi a alteração do SELinux para permitir a escrita na pasta que configurei para ser usada por vsftp = /var/ftp/pub
.
Esses links podem ser úteis:
- https://fedoraproject.org/wiki/SELinux/ftpd
- http://prithak.blogspot.com/2013/07/installation-and-configuration-of.html
Se você não quiser ir mais longe com seu SELinux, não o altere, então você verá como padrão /etc/selinux/config
SELINUX=enforcing
em seguida, execute os comandos como root ou com sudo
:
sudo setsebool -P ftpd_anon_write 1 sudo setsebool -P ftpd_full_access 1
conforme já descrito acima em outro comentário.
Resposta
Tente isto
chmod 757 -R /var/www/html
Resposta
Verifique seu vsftpd.conf
para esta configuração:
guest_enable=YES # set it to NO then restart the vsftpd service.
Se estiver definido como YES
, também causará o 553 Could not create file
.
De : http://www.vsftpd.beasts.org/vsftpd_conf.html
guest_enable Se ativado, todos os logins não anônimos são classificados como “convidados”. Um login de convidado é remapeado para o usuário especificado no configuração guest_username.
Padrão: NÃO
Resposta
O próximo parâmetro dará acesso ftpd para escrever em qualquer lugar:
setsebool -P ftpd_full_acess=true
Não use ftpd_anon_write
a menos que você queira que uploads anônimos sejam permitidos.
A nswer
No meu caso, o problema era com o sistema de arquivos.
Havia um espaço, mas o sistema de arquivos ficou sem inodes df -i
# df -i Filesystem Inodes IUsed IFree IUse% Mounted on /dev/xvdf1 3276800 3276800 0 100% /ftp-data01
Resposta
Outra possibilidade: verifique as cotas de disco para o usuário / grupo
ext:
repquota -a
xfs:
xfs_quota -x -c "report" /mount_point
Resposta
É provável que você tenha caracteres incompatíveis no nome do arquivo
Resposta
No meu caso, o usuário ftp não tinha permissões no diretório em que estava .
Eu simplesmente tinha esquecido de fazer o cd no diretório de destino, para o qual tinha as permissões corretas.
Resposta
No meu caso (CentOS7 + vsftpd) alterando as permissões do diretório para 775 pelo comando ” chmod 775 / home / u ser / ftpdir / ” não ajudou.
Eu verifiquei o status do selinux pelo comando ” sestatus “, foi ativado, listei as opções relacionadas ao ftp: ” getsebool -a | grep ftp ”
e habilitou a opção ftpd_full_access desabilitada pelo comando ” setsebool ftpd_full_access em “. Em seguida, começou a escrever o arquivo.
Resposta
Para Fedora23, execute os comandos:
setsebool -P ftpd_anon_write 1 setsebool -P ftpd_full_access 1
Funcionou para mim.