VSFTPD, 553 Tidak dapat membuat file. - izin?

31

Saya telah menyiapkan VSFTPD di Amazon EC2 dengan Amazon Linux AMI. Saya membuat pengguna dan sekarang berhasil terhubung melalui ftp. Namun, jika saya mencoba mengunggah sesuatu, saya mendapat pesan kesalahan "553 Tidak dapat membuat file."

Saya menganggap ini ada hubungannya dengan izin, tetapi saya tidak cukup tahu tentang hal itu untuk dapat memperbaikinya. Jadi pada dasarnya, apa yang harus saya lakukan untuk dapat mengunggah file?

Jeff Schaller
sumber
Periksa Pengaturan selinux. konfigurasikan boolean allow_ftpd_full_access ke ON

Jawaban:

18

Ada dua kemungkinan alasan hal ini bisa terjadi - Anda tidak memiliki izin menulis dan menjalankan direktori yang mengarah ke direktori yang Anda coba unggah, atau vsftpddikonfigurasikan agar Anda tidak dapat mengunggah.

Dalam kasus sebelumnya, gunakan chmoddan chownjika perlu untuk memastikan bahwa pengguna Anda memiliki izin ini di setiap direktori perantara. Bit tulis memungkinkan pengguna yang terpengaruh untuk membuat, mengubah nama, atau menghapus file dalam direktori, dan memodifikasi atribut direktori, sementara bit baca memungkinkan pengguna yang terpengaruh untuk membuat daftar file dalam direktori. Karena direktori perantara di jalur juga memengaruhi ini, izin harus ditetapkan dengan tepat mengarah ke tujuan akhir yang ingin Anda unggah.

Dalam kasus terakhir, lihat vsftpd.conf. write_enableharus benar untuk mengizinkan penulisan (dan itu salah secara default). Ada dokumentasi yang baik pada file konfigurasi ini di man 5 vsftpd.conf.

Chris Down
sumber
10
Tak satu pun dari ini tampaknya menjadi masalah. Saya mencoba chmoding semuanya ke 777 (tidak aman) dan pengaturan write_enable = YA, tapi saya masih mendapatkan pesan kesalahan yang tidak berguna ini.
Cerin
@ Cerin apakah Anda dapat memperbaikinya? Jika ya, bisakah Anda membagikan detailnya?
unknownerror
34

Bisakah Anda mencoba ini?

chown -R ftpusername /var/www/html
Tacettin Özbölük
sumber
5
chmod 757 -R / var / www / html
Hernán Eche
1
@ Hernáncheche terima kasih atas tipnya, saya telah berburu selama berjam-jam dan ini akhirnya memperbaiki masalah saya.
Tr0yJ
Bisakah Anda menguraikan situasinya, apakah ini di server atau secara lokal?
Édouard Lopez
1
@ Hernáncheche Hei, Itu bekerja untuk saya juga, tetapi apakah itu aman. Itu tidak bekerja dengan 755
viv
1
@ Hernánche Anda harus membuat ini jawaban yang terpisah. Saran Anda bekerja untuk saya di mana tidak ada yang lain lakukan.
Shaul bilang aku Dukung Monica
11

Perintah ftp put /path/to/local_filetidak bekerja vsftpd. Coba yang berikut ini:

ftp put /path/to/local_file remote_file_name 

Anda dapat memilih nama yang Anda inginkan remote_file_name, tetapi Anda harus menentukan satu.

Pemenang
sumber
2
Anda mungkin ingin mempertimbangkan untuk menambahkan lebih detail pada jawaban Anda (misalnya, beberapa dokumentasi yang mendukung validitas solusi Anda).
HalosGhost
Ini terjadi karena (dan jika) /path/to/tidak ada (dan / atau tidak dapat diakses melalui sesi FTP) di server. Inilah sebabnya mengapa ftp put local_file tidak bekerja tanpa tujuan eksplisit. (Petunjuk: periksa local: … remote: …
sambungan
1
Itu berhasil untuk saya! :)
Paulo
3

Direktori home FTP (ftp_home_dir) kemungkinan besar dimatikan di SeLinux. Untuk melihat status ftpdfile kontrol Anda , terbitkan: getsebool -adan temukan bagian ftpd. Anda mungkin melihat ftp_home_dir dimatikan. Untuk menyalakannya, gunakan perintah berikut:setsebool -P ftp_home_dir=1

Verifikasi input Anda menggunakan getsebool -a, lalu Coba unggah lagi.

Catatan: Abaikan tanda baca

Sinar Matahari Cerah
sumber
2

Saya memiliki masalah yang sama dan memperbaiki perubahan SELinux untuk memungkinkan penulisan di folder yang saya konfigurasikan untuk digunakan oleh vsftp = /var/ftp/pub.

Tautan ini dapat membantu:

Jika Anda tidak ingin melangkah lebih jauh dengan SELinux Anda, jangan mengubahnya, jadi Anda akan melihatnya sebagai default /etc/selinux/config

SELINUX=enforcing

kemudian jalankan perintah sebagai root atau dengan sudo:

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

seperti yang sudah dijelaskan di atas di komentar lain.

Eduardo Cerqueira
sumber
1

Periksa vsftpd.confpengaturan Anda untuk ini:

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

Jika disetel ke YES, itu juga akan menyebabkan 553 Could not create file.

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

guest_enable Jika diaktifkan, semua login non-anonim digolongkan sebagai login "tamu". Login tamu dipetakan ulang ke pengguna yang ditentukan dalam pengaturan guest_username.

Default: TIDAK

Henry Parra
sumber
1

Coba ini

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

Kemungkinan lain: periksa kuota disk untuk pengguna / grup

ext:

repquota -a

xfs:

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

Parameter selanjutnya akan memberikan akses ftpd untuk menulis di mana saja:

setsebool -P ftpd_full_acess=true 

Jangan gunakan ftpd_anon_writekecuali Anda ingin unggahan anonim diizinkan.

Neil
sumber
0

Anda kemungkinan memiliki karakter yang tidak didukung dalam nama file

Omkar Dusane
sumber
-1

Untuk Fedora23, jalankan perintah:

setsebool -P ftpd_anon_write 1 
setsebool -P ftpd_full_access 1

Itu berhasil untuk saya.

Prosenjit Paul
sumber