Thông báo lỗi Lỗi 500 OOPS: vsftpd: từ chối chạy với root có thể ghi bên trong chroot () - - giữ cho người dùng bị bỏ tù


19

Cho đến nay tôi không thể giữ một người dùng FTP bị bỏ tù vào thư mục trang web của họ. Có giải pháp nào khắc phục được lỗi này và khiến người dùng bị tống vào thư mục của họ không?

Cài đặt vsFTPd của tôi mà tôi đã thay đổi:

listen_port=9000
Set: anonymous_enable=NO
Uncomment: local_enable=YES
Uncomment: write_enable=YES
Uncomment: local_umask=022
Set: connect_from_port_20=NO
Uncomment: idle_session_timeout=600
Uncomment: data_connection_timeout=120
Comment out: #ftpd_banner=Welcome to blah FTP service. [should be on line 104]
Added: banner_file=/etc/issue.net
Uncomment: chroot_local_user=YES
Uncomment: chroot_local_user=YES
Uncomment: chroot_list_enable=YES
Uncomment : chroot_list_file=/etc/vsftpd.chroot_list

Cuối tập tin tôi đã thêm:

# Show hidden files and the "." and ".." folders.
# Useful to not write over hidden files:
force_dot_files=YES

# Hide the info about the owner (user and group) of the files.
hide_ids=YES

# Connection limit for each IP address:
max_per_ip=10

# Maximum number of clients:
max_clients=5

# FTP Passive Settings
pasv_enable=YES
#If your listen_port is 9000 set this range to 7500 and 8500
pasv_min_port=[port range min]
pasv_max_port=[port range max]

Người dùng trong câu hỏi, mybloguserbị bỏ tù vào thư mục trang web của cô ấy /srv/www/myblogvà người dùng này không phải là một phần của nano /etc/vsftpd.chroot_listtập tin. Thư mục nhà của người dùng cũng /srv/www/myblogđược sử dụng để làm việc trong quá khứ.

Tôi đã thử allow_writeable_chroot=YESgiải pháp không hiệu quả và thực sự đã phá vỡ hoàn toàn vsFTPd.

Tôi đã thử:

Làm thế nào chúng ta có thể sửa lỗi này và giữ cho người dùng bị bỏ tù vào thư mục chính của họ?


Bằng cách nào đó, đối với tôi, ít nhất là với người dùng ftp "ảo", chỉ cần thêm cài đặt allow_writeable_chroot=YESlà đủ và thực sự hoạt động "như mong đợi" FWIW ...
rogerdpack

Câu trả lời:


18

Đối với VSFTPD 3,

  1. Đi đến: /etc/vsftpd.conf
  2. và thêm cái này:

    allow_writeable_chroot=YES
    

    Chỉ cần thêm nó nếu nó chưa tồn tại.

  3. Khởi động lại dịch vụ vsftpd:

    service vsftpd restart
    

Và nó nên hoạt động.


3
Người hỏi thực sự nói rằng anh ta đã thử điều này và nó không hoạt động, vì vậy đây không phải là một câu trả lời cho câu hỏi của anh ta.
Yêu cầu

2
Tôi có thể đọc ở đâu về ý nghĩa bảo mật của sự lựa chọn này?
flickerfly

làm việc cho tôi (điều này cũng đã được đề cập trong phần bình luận của câu trả lời được chấp nhận)
Sverre

16

Giải pháp thực sự của vấn đề này: thư mục nhà của người dùng không thể ghi chỉ đọc được.

Vì vậy, nếu trang web của người dùng nằm trong thư mục cat/example.com/http/, thư mục catphải có chmod 555và tất cả sẽ ổn.


12
Điều đó không có ý nghĩa. Thư mục người dùng không nên ghi ???
Kevin Bowen

6
Chính xác thì người dùng phải xử lý các tệp UPLOAD như thế nào nếu họ không thể viết?!
Cerin

Nó hoạt động tốt cho một ftp ẩn danh mà không có quyền tải lên, cảm ơn!
palacsint

đúng! bây giờ thì ổn rồi
user1406691

5
Điều này hoạt động hoàn hảo! Chỉ cần tạo một ngôi nhà cho người dùng với chmod 555 và sau đó, bên trong đó, tạo một ngôi nhà cho trang web (hoặc trang web), với chmod 755 hoặc cái bạn cần: mọi thứ sẽ hoạt động và người dùng sẽ có quyền ghi.
lucaferrario

13

Sau khi xem xét thêm về bài đăng này, trong các bình luận, một gói đã được đăng mà đã khắc phục vấn đề của tôi. Bạn có thể tìm kiếm nó bằng tên của tôi hoặc Tài liệu "Marks": http://www.benscobie.com/fixing-500-oops-vsftpd-refuses-to-run-with-writable-root-inside-chroot/ . Dưới đây là chi tiết của tôi về cách tôi sửa lỗi này hơn nữa.

NGƯỜI DÙNG VẪN CÒN BỎ QUA CÁC GIÁM ĐỐC CỦA NHÀ !!!

# ------------------------------------------------------------------------------
# SETUP FTP USERS --------------------------------------------------------------
# ------------------------------------------------------------------------------

# create the ftp users and lock them to the website directories
useradd -d /srv/www/[website/appname] -m [ftp user name]

# set the ftp account passwords
passwd [ftp user name]

# add the ftp users to the www-data user/group
adduser [ftp user name] www-data

# BUG FIX: 500 OOPS: vsftpd: refusing to run with writable root inside chroot()
sudo add-apt-repository ppa:thefrontiergroup/vsftpd
sudo apt-get update
sudo apt-get install vsftpd

# Edit the vsftpd.conf and append this setting to the end of the file to keep users' jailed!
nano /etc/vsftpd.conf

# add all of the text between the starting [[ and ending ]]
# [[

# Keep non-chroot listed users jailed
allow_writeable_chroot=YES

# ]]

# restart the service for changes to take effect
sudo service vsftpd restart

#test ftp via secondary terminal window:
ftp [ftp user name]@[server ipaddress] [ftp port]

11
Xin lưu ý: Giải pháp của Chris sẽ thêm máy chủ gói của bên thứ ba vào danh sách kho lưu trữ của bạn! Tại sao phải cài đặt một máy chủ FTP an toàn, được chọn lọc khi bạn chấp nhận một cách mù quáng các gói phần mềm nước ngoài được cài đặt trên hệ thống của bạn. (Chris: Tôi không nghĩ rằng bạn sẽ tận dụng lợi thế, nhưng sử dụng giải pháp này IMHO rất tệ trong việc sysadmining)
reto

1
Bạn có cách tiếp cận nào tốt hơn để giải quyết vấn đề nan giải này @reto không? Nó đã là một mớ hỗn độn nhỏ để giải quyết. Cảm ơn sự giúp đỡ của bạn.
Chris Hough

nếu có một gói cập nhật từ bản phân phối, tôi sẽ cố gắng sử dụng gói đó. Hầu hết các bản phân phối cung cấp backport cho các bản phát hành cũ hơn. Nếu điều đó là không thể, tôi sẽ lấy nguồn từ nhà phát triển ban đầu và tự mình xây dựng nó. Nếu có một bản vá nổi xung quanh tôi có thể áp dụng nó (thường thì chúng nhỏ và có thể được kiểm tra thủ công).
reto

Chủ đề này có 12.000 lượt xem, giả sử rằng 5% sử dụng giải pháp của bạn và thêm repo của bạn. Bạn có thể dễ dàng thêm phiên bản mới của gói lõi có tích hợp cửa sau. Trong vòng một tuần, bạn có thể có quyền truy cập vào 600 hệ thống ngoài kia. Tôi không nghĩ rằng bạn sẽ làm điều đó, nhưng thêm repo của bên thứ ba thì không an toàn lắm.
reto

1
Tôi không cần cập nhật từ repo. Đối với tôi, việc thêm dòng "allow_writitable_chroot = YES" đã sửa lỗi
abumalick

7

Theo câu trả lời trước "Giải pháp THỰC SỰ của vấn đề này: thư mục nhà của người dùng không nên ghi chỉ đọc được.". Suy nghĩ chung là đúng, nhưng với một nhận thức sai.

Dưới đây tôi sẽ cố gắng đưa ra một ví dụ đơn giản:

Để bắt đầu, chúng ta cần xây dựng một cấu trúc liên kết của thư mục người dùng:

 / nhà (ro)
   | -momeuser (rw, 700)
         | -ftp_upload (ro, 555) - ch_root ở đây, chỉ cần đọc bởi vsftpd :(
           | -temp (rw, 755)
           | -in_box (rw, 755)
           | -out_box (rw, 755)

cắt vsftpd.conf:

# Kích hoạt chroot
chroot_local_user = CÓ

# chroot tất cả người dùng ngoại trừ được nghe bên trong chroot_list
chroot_list_enable = CÓ

# Danh sách ngoại lệ. Tốt nhất, nó nên để trống;)
chroot_list_file = / etc / vsftpd / chroot_list

# Ánh xạ thư mục gốc ftp vào thư mục cụ thể
local_root = / home / someuser / ftp

Cấu hình này hoạt động tuyệt vời với cấu hình một người dùng . Đối với nhiều người dùng, nên sử dụng lệnh "user_config_dir".

** CẬP NHẬT 20/09

------ **

Đây là cách giải quyết phức tạp, không nên sử dụng ý tưởng tốt nhất, nhưng .... Nếu bạn cần thư mục gốc ftp có thể ghi, chỉ cần chèn các lệnh thay đổi quyền trong các lệnh trước khi bắt đầu và sau khi bắt đầu.

  1. Trước khi bắt đầu - thay đổi quyền thành chỉ đọc, mà máy chủ yêu cầu (:

  2. Máy chủ bắt đầu

  3. Sau khi bắt đầu - thay đổi quyền đọc-ghi hoặc bạn cần.


Tôi đã thử nhiều biến thể nhưng không thể làm cho nó hoạt động được với máy chủ WP. Đây có phải là làm việc cho bạn trên một cấu hình WP?
Chris Hough

Hãy xem phần cập nhật, biến thể này có thể giúp bạn, nó không hoàn toàn an toàn để làm như vậy, nhưng nếu không có khả năng nào khác ...
Reishin

1

Đó là khá nhiều những gì toastboy70 đã đề cập. Tạo thư mục gốc ftp chown'd thành ftp.ftp và không thể ghi (/etc/vsftpd.conf): anon_root = / srv / ftp

Sau đó tạo một thư mục con có thể ghi: / srv / ftp / upload


0

Tôi cũng cần thêm phần sau vào tệp /etc/vsftpd.conf:

seccomp_sandbox=NO

VÀ không cần repo tùy chỉnh !!

Và bỏ ghi chú dòng:

write_enable=YES

0

Cách khắc phục đơn giản là thực hiện như thông báo lỗi cho thấy: làm cho root không thể ghi và sau đó nếu bạn cần kích hoạt tải lên, hãy tạo một thư mục con có quyền ghi. Không có thay đổi cấu hình cần thiết.


0

Sau 3 giờ googling tôi đã nhận được trên Ubuntu 14.04.2 LTS VSFTPd 3 hoạt động. Thư mục chính sẽ hiển thị / home / vimal sau khi được truy cập với máy khách. Tôi đã đăng nhập với vimal với quyền root. Tôi đã tạo thư mục ftpShare, nhưng không có nhiều ý nghĩa.

sudo chown vimal:vimal /home/vimal/ftpShare/

một số lệnh hữu ích:

sudo nano /etc/vsftpd.conf
sudo service vsftpd restart
sudo apt-get purge vsftpd
netstat -a | grep ftp
tcp        0        0        *:ftp         *:*        LISTEN
ftp://12.345.23.xxx/  for browser login

Trên có nghĩa là ftp daemon đang làm việc

Tôi có cấu hình sau:

seccomp_sandbox=no
listen=YES
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
use_localtime=YES
xferlog_enable=YES
connect_from_port_20=YES
chroot_local_user=YES
chroot_list_enable=NO
secure_chroot_dir=/var/run/vsftpd/empty
rsa_private_key_file=/etc/ssl/private/ssl-cert-snakeoil.key
allow_writeable_chroot=YES

Khi FTP hoạt động, bạn có thể điều chỉnh nó theo nhu cầu cụ thể, một số ở trên có giá trị mặc định, nhưng tôi không nhớ chính xác.

Lỗi nhìn thấy trong FTP Client:

1. 500 OOPS: prctl PR_SET_SECCOMP không thành công

Dung dịch.

seccomp_sandbox=no    

[thêm nó vào dòng đầu tiên vsftpd.conf, sau khi phần nhận xét ban đầu kết thúc]

2. 500 OOPS: vsftpd: từ chối chạy với root có thể ghi bên trong chroot ()

allow_writeable_chroot=YES

Tôi đã thêm nó ở dòng cuối cùng.


0

Tôi đã giải quyết vấn đề vsFTPd từ chối chạy với một root có thể ghi bên trong chroot () trên máy chủ Ubuntu của tôi như sau:

Tôi chỉ cần thêm dòng dưới đây trong vsftpd.conftập tin:

allow_writeable_chroot=YES
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.