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

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 que ftp put local_file funciona sem destino explícito. (Dica: verifique a linha local: … 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:

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.

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *