VSFTPD, 553 Không thể tạo tệp. - quyền?


31

Tôi đã thiết lập VSFTPD trên Amazon EC2 với Amazon Linux AMI. Tôi đã tạo một người dùng và bây giờ có thể kết nối thành công qua ftp. Tuy nhiên, nếu tôi cố tải lên một cái gì đó, tôi nhận được thông báo lỗi "553 Không thể tạo tệp."

Tôi cho rằng điều này có liên quan đến quyền, nhưng tôi không biết đủ về nó để có thể sửa nó. Vậy về cơ bản, tôi phải làm gì để có thể tải lên các tập tin?


Kiểm tra Cài đặt selinux. cấu hình boolean allow_ftpd_full_access thành ON

Câu trả lời:


18

Có hai lý do có thể xảy ra - bạn không có quyền ghi và thực thi quyền trên các thư mục dẫn đến thư mục bạn đang cố tải lên hoặc vsftpdđược định cấu hình không cho phép bạn tải lên.

Trong trường hợp trước, sử dụng chmodchownkhi thích hợp để đảm bảo rằng người dùng của bạn có các quyền này trên mọi thư mục trung gian. Bit ghi cho phép người dùng bị ảnh hưởng tạo, đổi tên hoặc xóa các tệp trong thư mục và sửa đổi các thuộc tính của thư mục, trong khi bit đọc cho phép người dùng bị ảnh hưởng liệt kê các tệp trong thư mục. Vì các thư mục trung gian trong đường dẫn cũng ảnh hưởng đến điều này, các quyền phải được đặt một cách thích hợp dẫn đến đích cuối cùng mà bạn định tải lên.

Trong trường hợp sau, nhìn vào của bạn vsftpd.conf. write_enablephải đúng để cho phép viết (và theo mặc định là sai). Có tài liệu tốt về tập tin cấu hình này tại man 5 vsftpd.conf.


10
Cả hai điều này dường như không phải là vấn đề. Tôi đã thử mã hóa mọi thứ thành 777 (không an toàn) và cài đặt write_enable = CÓ, nhưng tôi vẫn nhận được thông báo lỗi vô dụng này.
Cerin

@Cerin bạn đã có thể sửa nó chưa? Nếu có, bạn có thể chia sẻ chi tiết?
Unknownerror

34

Bạn có thể thử cái này không

chown -R ftpusername /var/www/html

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

1
@ HernánEche cảm ơn vì tiền boa, tôi đã săn lùng hàng giờ và điều này cuối cùng đã khắc phục vấn đề của tôi.
Tr0yJ

Bạn có thể giải thích về tình huống này, đây là trên máy chủ hoặc cục bộ?
Édouard Lopez

1
@ HernánEche Này, nó cũng làm việc cho tôi, nhưng nó có an toàn không. Nó không hoạt động với 755
viv

1
@ HernánEche bạn nên làm điều này một câu trả lời riêng biệt. Đề nghị của bạn làm việc cho tôi, nơi không có gì khác đã làm.
Shaul nói rằng tôi ủng hộ Monica

11

Lệnh ftp put /path/to/local_filekhông hoạt động với vsftpd. Hãy thử như sau:

ftp put /path/to/local_file remote_file_name 

Bạn có thể chọn bất kỳ tên nào bạn muốn cho remote_file_name, nhưng bạn phải chỉ định một tên.


2
Bạn có thể muốn xem xét thêm chi tiết vào câu trả lời của mình (ví dụ: một số tài liệu hỗ trợ tính hợp lệ của giải pháp của bạn).
HalosGhost

Điều này xảy ra vì (và nếu) /path/to/không tồn tại (và / hoặc không thể truy cập thông qua phiên FTP) trên máy chủ. Đây là lý do tại sao ftp put local_file làm việc mà không có đích rõ ràng. (Gợi ý: kiểm tra local: … remote: …đường dây trong ứng dụng khách FTP.)
Skippy le Grand Gourou

1
Nó làm việc cho tôi! :)
Paulo

3

Thư mục chính FTP (ftp_home_dir) rất có thể đã bị tắt trong SeLinux. Để xem trạng thái của các ftpdtệp kiểm soát của bạn , hãy phát hành: getsebool -avà định vị phần ftpd. Bạn có thể nhận thấy ftp_home_dir bị tắt. Để bật nó lên, sử dụng lệnh sau:setsebool -P ftp_home_dir=1

Xác minh đầu vào của bạn bằng cách sử dụng getsebool -a, sau đó Thử tải lên lại.

Lưu ý: Bỏ qua các dấu chấm câu


2

Tôi đã có cùng một vấn đề và đã sửa lỗi SELinux để cho phép ghi vào thư mục mà tôi đã cấu hình để sử dụng vsftp = /var/ftp/pub.

Các liên kết này có thể hữu ích:

Nếu bạn không muốn đi xa hơn với SELinux của mình, đừng thay đổi nó, vì vậy bạn sẽ thấy như mặc định /etc/selinux/config

SELINUX=enforcing

sau đó chỉ cần chạy các lệnh như root hoặc với sudo:

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

như đã mô tả ở trên trong bình luận khác.


1

Kiểm tra vsftpd.confcài đặt của bạn :

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

Nếu nó được đặt thành YES, nó cũng sẽ gây ra 553 Could not create file.

Từ: http://www.vsftpd.beasts.org/vsftpd_conf.html

guest_enable Nếu được bật, tất cả các thông tin đăng nhập không ẩn danh được phân loại là thông tin đăng nhập "khách". Thông tin đăng nhập của khách được ánh xạ lại cho người dùng được chỉ định trong cài đặt tên khách.

Mặc định: KHÔNG



0

Một khả năng khác: kiểm tra hạn ngạch đĩa cho người dùng / nhóm

máy lẻ

repquota -a

xfs:

xfs_quota -x -c 'report' /mount_point

0

Tham số tiếp theo sẽ cung cấp quyền truy cập ftpd để ghi bất cứ nơi nào:

setsebool -P ftpd_full_acess=true 

Không sử dụng ftpd_anon_writetrừ khi bạn muốn cho phép tải lên ẩn danh.


0

Bạn có thể có các ký tự không được hỗ trợ trong tên tệp


-1

Đối với Fedora23 chạy các lệnh:

setsebool -P ftpd_anon_write 1 
setsebool -P ftpd_full_access 1

Nó làm việc cho tôi.

Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.