VSFTPD, 553 Não foi possível criar o arquivo. - permissões?

31

Eu configurei o VSFTPD no Amazon EC2 com o Amazon Linux AMI. Eu criei um usuário e agora posso conectar com sucesso via ftp. No entanto, se eu tentar fazer o upload de algo, recebo a mensagem de erro "553 Não foi possível criar o arquivo".

Presumo que isso tenha a ver com permissões, mas não sei o suficiente para poder corrigi-lo. Então, basicamente, o que tenho que fazer para poder fazer upload de arquivos?

Jeff Schaller
fonte
Verifique as configurações do selinux. configure o valor booleano allow_ftpd_full_access para ON

Respostas:

18

Há duas razões prováveis ​​para que isso possa 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 fazer o upload ou vsftpdestá configurado para não permitir o upload.

No primeiro caso, use chmode chownconforme apropriado para garantir que seu usuário tenha essas permissões em todos os diretórios intermediários. O bit de gravação permite que o usuário afetado crie, renomeie ou exclua arquivos no diretório e modifique os atributos do diretório, enquanto o bit de leitura permite ao usuário afetado listar os arquivos no diretório. Como os diretórios intermediários no caminho também afetam isso, as permissões devem ser definidas adequadamente, levando ao destino final para o qual você pretende fazer o upload.

Neste último caso, olhe para o seu vsftpd.conf. write_enabledeve ser verdadeiro para permitir a gravação (e é falso por padrão). Há uma boa documentação sobre esse arquivo de configuração em man 5 vsftpd.conf.

Chris Down
fonte
10
Nenhum destes parece ser o problema. Tentei chmoding tudo para 777 (não seguro) e configurações write_enable = YES, mas ainda recebo essa mensagem de erro inútil.
Cerin 5/08/13
@Cerin você conseguiu consertar? Se sim, você pode compartilhar os detalhes?
unknownerror 16/09
34

Você poderia tentar isso

chown -R ftpusername /var/www/html
Tacettin Özbölük
fonte
5
chmod 757 -R / var / www / html
Hernán Eche
1
@ HernánEche obrigado pela dica, eu estava caçando por horas e isso finalmente resolveu o meu problema.
Tr0yJ
Você poderia elaborar a situação, isso é no servidor ou localmente?
Édouard Lopez
1
@ HernánEche Ei, funcionou para mim também, mas é seguro. Não estava funcionando com 755
viv
1
@ HernánEche você deve fazer disso uma resposta separada. Sua sugestão funcionou para mim onde nada mais funcionou.
Shaul diz que eu apoio Monica
11

O comando ftp put /path/to/local_filenão funciona vsftpd. Tente o seguinte:

ftp put /path/to/local_file remote_file_name 

Você pode escolher qualquer nome que desejar remote_file_name, mas deve especificar um.

Vencedor
fonte
2
Você pode considerar adicionar mais detalhes à sua resposta (por exemplo, alguma documentação que suporte a validade da sua solução).
HalosGhost
Isso acontece porque (e se) /path/to/não existe (e / ou não está acessível através da sessão FTP) no servidor. É por isso ftp put local_file que funciona sem destino explícito. (Dica: verifique a local: … remote: …linha no cliente de FTP.)
Skippy le Grand Gourou
1
Funcionou para mim! :)
Paulo
3

O diretório inicial do FTP (ftp_home_dir) provavelmente está desativado no SeLinux. Para ver o status dos seus ftpdarquivos de controle, emita: getsebool -ae localize a seção ftpd. Você pode notar que o ftp_home_dir está desativado. Para ativá-lo, use o seguinte comando:setsebool -P ftp_home_dir=1

Verifique sua entrada usando getsebool -ae tente o upload novamente.

Nota: Ignore os sinais de pontuação

Luz do sol brilhante
fonte
2

Eu tive o mesmo problema e corrigi a alteração do SELinux para permitir a gravação na pasta que eu configurei para ser usada vsftp = /var/ftp/pub.

Esses links podem ser úteis:

Se você não quiser ir mais longe com o seu SELinux, não o altere, então você verá como padrão /etc/selinux/config

SELINUX=enforcing

basta executar os comandos como root ou com sudo:

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

como já descrito acima em outro comentário.

Eduardo Cerqueira
fonte
1

Verifique o seu vsftpd.confpara 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 logons não anônimos são classificados como logons "convidados". Um login de convidado é remapeado para o usuário especificado na configuração guest_username.

Padrão: NÃO

Henry Parra
fonte
1

Tente isto

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

Outra possibilidade: verificar cotas de disco para o usuário / grupo

ext:

repquota -a

xfs:

xfs_quota -x -c 'report' /mount_point
mveroone
fonte
0

O próximo parâmetro dará ao ftpd acesso para gravar em qualquer lugar:

setsebool -P ftpd_full_acess=true 

Não use a ftpd_anon_writemenos que você queira que uploads anônimos sejam permitidos.

Neil
fonte
0

É provável que você tenha caracteres não suportados no nome do arquivo

Omkar Dusane
fonte
-1

Para o Fedora23, execute os comandos:

setsebool -P ftpd_anon_write 1 
setsebool -P ftpd_full_access 1

Funcionou para mim.

Prosenjit Paul
fonte