ข้อความแสดงข้อผิดพลาด“ 500 OOPS: vsftpd: ปฏิเสธที่จะทำงานกับรากที่สามารถเขียนได้ภายใน chroot ()” - ทำให้ผู้ใช้ถูกจำคุก


19

จนถึงตอนนี้ฉันไม่สามารถเก็บผู้ใช้ FTP ไว้ในไดเรกทอรีเว็บไซต์ของตนได้ มีวิธีแก้ไขปัญหาที่ทั้งสองแก้ไขข้อผิดพลาดนี้และทำให้ผู้ใช้จำคุกในไดเรกทอรีของพวกเขา?

การตั้งค่า vsFTPd ของฉันที่ฉันเปลี่ยน:

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

ในตอนท้ายของไฟล์ที่ฉันเพิ่ม:

# 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]

ผู้ใช้ที่มีปัญหา, mybloguserถูกจำคุกในไดเรกทอรีของเธอภายใต้/srv/www/myblogและผู้ใช้นี้ไม่ได้เป็นส่วนหนึ่งของnano /etc/vsftpd.chroot_listไฟล์ โฮมไดเร็กตอรี่ของผู้ใช้นั้น/srv/www/myblogเคยทำงานในอดีตด้วยเช่นกัน

ฉันลองallow_writeable_chroot=YESวิธีแก้ปัญหาที่ใช้งานไม่ได้และจริง ๆ แล้ว vsFTPd ขัดข้องอย่างสมบูรณ์

ฉันเหนื่อย:

เราจะแก้ไขข้อผิดพลาดนี้และให้ผู้ใช้จำคุกได้ที่โฮมไดเร็กตอรี่ได้อย่างไร?


อย่างใดสำหรับฉันอย่างน้อยกับผู้ใช้ "เสมือน" ftp เพียงแค่เพิ่มการตั้งค่าallow_writeable_chroot=YESก็เพียงพอและใช้งานได้จริง "ตามที่คาดไว้" FWIW ...
rogerdpack

คำตอบ:


18

สำหรับ VSFTPD 3

  1. ไปที่: /etc/vsftpd.conf
  2. และเพิ่มสิ่งนี้:

    allow_writeable_chroot=YES
    

    เพียงเพิ่มเข้าไปหากยังไม่มีอยู่

  3. เริ่มบริการ vsftpd ใหม่:

    service vsftpd restart
    

และมันควรจะทำงาน


3
ผู้ถามระบุว่าเขาได้ลองแล้วและมันใช้งานไม่ได้ดังนั้นนี่จึงไม่ใช่คำตอบสำหรับคำถามของเขา
ขอ

2
ฉันจะอ่านเกี่ยวกับผลกระทบด้านความปลอดภัยของตัวเลือกนี้ได้ที่ไหน
flickerfly

ทำงานให้ฉัน (นี้ยังได้กล่าวถึงในความคิดเห็นของคำตอบที่ได้รับการยอมรับ)
สแวร์

16

ทางออกที่แท้จริงของปัญหานี้: โฟลเดอร์บ้านของผู้ใช้ไม่ควรเขียนให้อ่านได้เท่านั้น

ดังนั้นหากเว็บไซต์ของผู้ใช้อยู่ในโฟลเดอร์cat/example.com/http/โฟลเดอร์catจะต้องมีchmod 555และทั้งหมดจะเป็น OK


12
มันไม่สมเหตุสมผลเลย ไดเรกทอรีของผู้ใช้ไม่ควรเขียนได้ ???
Kevin Bowen

6
ผู้ใช้ควรจะอัปโหลดไฟล์อย่างไรหากไม่สามารถเขียนได้!
Cerin

มันทำงานได้ดีสำหรับ ftp นิรนามโดยไม่มีสิทธิ์ในการอัปโหลดขอบคุณ!
palacsint

ขวา! ตอนนี้ก็โอเค
user1406691

5
มันทำงานได้อย่างสมบูรณ์แบบ! เพียงแค่สร้างบ้านสำหรับผู้ใช้ที่มี chmod 555 และจากนั้นสร้างบ้านสำหรับเว็บไซต์ (หรือเว็บไซต์) ด้วย chmod 755 หรือบ้านที่คุณต้องการ: ทุกอย่างจะทำงานและผู้ใช้จะมีสิทธิ์ในการเขียน
lucaferrario

13

หลังจากตรวจสอบเพิ่มเติมของโพสต์นี้ในความคิดเห็นแพคเกจถูกโพสต์ที่แก้ไขปัญหาของฉัน คุณสามารถค้นหาได้โดยทั้งชื่อหรือ "มาร์ค" ฉันเอกสารอ้างอิง: http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/ นี่คือรายละเอียดของฉันเกี่ยวกับวิธีแก้ไขเพิ่มเติม

ผู้ใช้ยังคงได้รับความยินดีกับผู้อำนวยการสำนักที่บ้านของพวกเขา !!!

# ------------------------------------------------------------------------------
# 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
โปรดทราบ:วิธีการแก้ปัญหาของ Chris จะเพิ่มเซิร์ฟเวอร์แพ็คเกจบุคคลที่สามลงในรายการที่เก็บของคุณ! ทำไมติดตั้งระบบรักษาความปลอดภัยเซิร์ฟเวอร์ FTP chrooted เมื่อคุณสุ่มสี่สุ่มห้ายอมรับแพคเกจซอฟต์แวร์ต่างประเทศที่จะติดตั้งในระบบของคุณ (คริส: ฉันไม่คิดว่าคุณจะได้รับประโยชน์ แต่การใช้วิธีการนี้ IMHO เป็นบริการที่ไม่ดี)
reto

1
คุณมีวิธีที่ดีกว่าในการแก้ปัญหาวิกฤตินี้ @reto? เป็นระเบียบเล็ก ๆ ที่จะแก้ปัญหา ขอขอบคุณสำหรับความช่วยเหลือของคุณ.
Chris Hough

หากมีแพ็คเกจที่อัพเดทจากการแจกจ่ายฉันจะลองใช้มัน ดิสทริบิวชันส่วนใหญ่มี backport สำหรับรุ่นเก่ากว่า หากเป็นไปไม่ได้ฉันจะได้รับแหล่งที่มาจากนักพัฒนาดั้งเดิมและสร้างมันขึ้นมาเอง หากมีแพทช์ลอยอยู่รอบ ๆ ฉันอาจใช้มัน (โดยปกติจะมีขนาดเล็กและสามารถตรวจสอบได้ด้วยตนเอง)
reto

เธรดนี้มีจำนวนการดู 12'000 ครั้งสมมติว่า 5% ใช้โซลูชันของคุณและเพิ่ม repo ของคุณ คุณสามารถเพิ่มแพ็คเกจหลักรุ่นใหม่ได้อย่างง่ายดายด้วย backdoor ที่รวมเข้าด้วยกัน ภายในหนึ่งสัปดาห์คุณสามารถเข้าถึงระบบได้ 600 ระบบ ฉันไม่คิดว่าคุณจะทำเช่นนั้น แต่การเพิ่มธุรกรรมซื้อคืนบุคคลที่สามไม่ปลอดภัยนัก
โหลด

1
ฉันไม่จำเป็นต้องอัพเดทจาก repo สำหรับฉันเพิ่มบรรทัด "allow_writeable_chroot = YES" แก้ไขข้อผิดพลาด
abumalick

7

ตามคำตอบก่อนหน้า "การแก้ปัญหาที่แท้จริงของปัญหานี้: โฟลเดอร์บ้านของผู้ใช้ไม่ควรอ่านได้อย่างเดียว" การคิดทั่วไปนั้นถูกต้อง แต่ด้วยความเข้าใจผิด

ด้านล่างฉันจะพยายามยกตัวอย่างง่ายๆ:

สำหรับการเริ่มต้นเราจำเป็นต้องสร้างทอพอโลยีของไดเรกทอรีผู้ใช้:

 / home (ro)
   | -someuser (rw, 700)
         | -ftp_upload (ro, 555) - ch_rooting ที่นี่, ต้องการอ่านอย่างเดียวโดย vsftpd :(
           | -temp (rw, 755)
           | -in_box (rw, 755)
           | -out_box (rw, 755)

vsftpd.conf ตัด:

# เปิดใช้งาน chrooting
chroot_local_user = ใช่

# chroot ผู้ใช้ทั้งหมดยกเว้นฟังใน chroot_list
chroot_list_enable = ใช่

# รายการข้อยกเว้น เป็นการดีที่ควรว่างเปล่า)
chroot_list_file = / etc / vsftpd / chroot_list

# แผนที่ไดเรกทอรีราก ftp ไปยังไดเรกทอรีที่เฉพาะเจาะจง
local_root = / home / someuser ftp /

การกำหนดค่านี้ใช้งานได้ดีกับการกำหนดค่าผู้ใช้คนเดียว สำหรับผู้ใช้หลายคนควรใช้คำสั่ง "user_config_dir" เพิ่มเติม

** อัพเดท 20/09

------ **

นี่เป็นวิธีการแก้ไขที่ยุ่งยากไม่ใช่ความคิดที่ดีที่สุดที่จะใช้ แต่ .... หากคุณต้องการโฟลเดอร์ ftp root ที่เขียนได้เพียงใส่คำสั่งเปลี่ยนสิทธิ์ในคำสั่ง pre-start และ post-start

  1. ก่อนเริ่ม - เปลี่ยนการอนุญาตเป็นแบบอ่านอย่างเดียวซึ่งเซิร์ฟเวอร์ต้องการ (:

  2. เริ่มเซิร์ฟเวอร์

  3. โพสต์เริ่ม - เปลี่ยนสิทธิ์ในการอ่าน - เขียนหรือที่คุณต้องการ


ฉันลองหลายรูปแบบ แต่ไม่สามารถทำงานกับเซิร์ฟเวอร์ WP ได้ สิ่งนี้ใช้ได้กับคุณในการกำหนดค่า WP หรือไม่?
Chris Hough

มองไปที่ส่วนปรับปรุง mauby ตัวแปรนี้สามารถช่วยมึงมันไม่ปลอดภัยอย่างสมบูรณ์จะทำเช่นนั้น แต่ถ้าไม่มีความเป็นไปได้อื่น ๆ ...
Reishin

1

มันพูดถึงอะไรมาก toastboy70 ทำให้ ftp-root dir chown'd เป็น ftp.ftp และไม่สามารถเขียนได้ (/etc/vsftpd.conf): anon_root = / srv / ftp

จากนั้นให้เด็กเขียนได้ dir: / srv / ftp / upload


0

ฉันต้องการเพิ่มสิ่งต่อไปนี้ในไฟล์ /etc/vsftpd.conf เช่นกัน:

seccomp_sandbox=NO

และไม่จำเป็นต้องมี repo ที่กำหนดเอง !!

และ uncomment บรรทัด:

write_enable=YES

0

การแก้ไขอย่างง่ายคือทำตามข้อความแสดงข้อผิดพลาด: ทำให้รูทไม่สามารถเขียนได้และถ้าคุณต้องการเปิดใช้งานการอัปโหลดให้สร้างไดเรกทอรีย่อยที่ไม่มีสิทธิ์ในการเขียน ไม่จำเป็นต้องเปลี่ยนแปลงการกำหนดค่า


0

หลังจาก googling 3 ชั่วโมงฉันได้ใช้ Ubuntu 14.04.2 LTS VSFTPd 3 โฟลเดอร์บ้านจะมองเห็นได้ / home / vimal เมื่อเข้าถึงกับไคลเอนต์ ฉันเข้าสู่ระบบด้วย vimal พร้อมสิทธิ์ root ฉันสร้างโฟลเดอร์ ftpShare แล้ว แต่มีความหมายไม่มาก

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

คำสั่งที่มีประโยชน์:

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

ด้านบนหมายถึง ftp daemon ทำงาน

ฉันมีการกำหนดค่าต่อไปนี้:

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

เมื่อ FTP ทำงานแล้วคุณสามารถปรับแต่งมันตามความต้องการเฉพาะด้านบนได้บางส่วนมีค่าเริ่มต้น แต่ฉันจำไม่ได้แน่นอน

ข้อผิดพลาดที่พบในไคลเอนต์ FTP:

1. 500 OOPS: prctl PR_SET_SECCOMP ล้มเหลว

วิธีการแก้.

seccomp_sandbox=no    

[เพิ่มในบรรทัดแรก vsftpd.conf หลังจากส่วนความเห็นเริ่มต้นสิ้นสุด]

2. 500 OOPS: vsftpd: ปฏิเสธที่จะทำงานด้วยรากที่สามารถเขียนได้ภายใน chroot ()

allow_writeable_chroot=YES

ฉันเพิ่มที่บรรทัดสุดท้าย


0

ฉันแก้ไขปัญหาของ vsFTPd ปฏิเสธที่จะทำงานกับรากที่เขียนได้ภายใน chroot () บนเซิร์ฟเวอร์ Ubuntu ของฉันดังนี้:

ฉันเพิ่งเพิ่มบรรทัดด้านล่างในvsftpd.confไฟล์:

allow_writeable_chroot=YES
โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.