“500 OOPS: vsftpd: chroot () içindeki yazılabilir kökle çalıştırmayı reddetme” hata iletisi - kullanıcıyı hapsedin


19

Şimdiye kadar bir FTP kullanıcısını web sitesi dizinine hapsedemedim. Bu hatayı düzelten ve kullanıcıyı dizinlerine hapseden bir çözüm var mı?

Değiştirdiğim vsFTPd ayarlarım:

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

Eklediğim dosyanın sonuna:

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

Söz konusu kullanıcı, mybloguseraltındaki web sitesi dizinine hapsedilir /srv/www/myblogve bu kullanıcı nano /etc/vsftpd.chroot_listdosyanın bir parçası değildir . Kullanıcının ana dizini de /srv/www/myblogeskiden çalışırdı.

Ben allow_writeable_chroot=YESişe yaramadı çözümü denedim ve aslında vsFTPd tamamen kırdı.

Denedim:

Bu hatayı nasıl düzeltebiliriz ve kullanıcıyı ana dizinlerine hapsedebiliriz?


Her nasılsa, benim için, en azından "sanal" ftp kullanıcıları ile, sadece ayarı eklemek allow_writeable_chroot=YESyeterliydi ve aslında "FWIW ..." beklendiği gibi çalıştı "
rogerdpack

Yanıtlar:


18

VSFTPD 3 için,

  1. Şuraya git: /etc/vsftpd.conf
  2. ve şunu ekleyin:

    allow_writeable_chroot=YES
    

    Henüz yoksa ekleyin.

  3. Vsftpd hizmetini yeniden başlatın:

    service vsftpd restart
    

Ve işe yaramalı.


3
Sorgulayan aslında bunu zaten denediğini ve işe yaramadığını belirtiyor, bu yüzden bu sorunun cevabı değil.
Gerekli

2
Bu seçimin güvenlikle ilgili etkilerini nereden okuyabilirim?
flickerfly

benim için çalıştı (bu da kabul edilen cevabın yorumunda belirtildi)
Sverre

16

Bu sorunun gerçek çözümü: giriş klasörü kullanıcının gerektiğini yazılabilir olmayacak sadece okunabilir.

Bu nedenle, kullanıcı sitesi klasördeyse cat/example.com/http/, klasörde catolmalıdır chmod 555ve hepsi iyi olacaktır.


12
Bu hiç mantıklı değil. Kullanıcının dizini yazılabilir olmamalı ???
Kevin Bowen

6
Kullanıcının yazamazsa tam olarak YÜKLEME dosyalarını nasıl kullanması gerekir ?!
Cerin

Yükleme hakları olmadan anonim bir ftp için iyi çalışıyor, teşekkürler!
palacsint

sağ! şimdi sorun yok
user1406691

5
Mükemmel çalışıyor! Sadece chmod 555 ile kullanıcı için bir ev oluşturun ve ardından bunun için web sitesi (veya web siteleri), chmod 755 veya ihtiyacınız olan bir ev için bir ev oluşturun: her şey çalışacak ve kullanıcının yazma izinleri olacaktır.
lucaferrario

13

Bu yazının daha sonra gözden geçirilmesinden sonra, yorumlarda sorunumu gideren bir paket yayınlandı. : Sen benim adını veya "Markalar" Belgeler biri tarafından arayabilmek http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/ . İşte bunu nasıl düzelttiğime dair detaylar.

KULLANICILAR HALA MÜDÜRLÜKLERİNE AİT OLDU!

# ------------------------------------------------------------------------------
# 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
Lütfen Dikkat: Chris'in çözümü depo listenize bir üçüncü taraf paket sunucusu ekleyecektir! Sisteminize yüklenecek yabancı yazılım paketlerini körü körüne kabul ettiğinizde neden güvenli, kroşe edilmiş bir FTP sunucusu kurmalısınız . (Chris: Bu avantajdan yararlanacağınızı sanmıyorum, ancak bu çözümü kullanmak IMHO kötü bir sistemdir)
reto

1
@reto adlı bu ikilemi çözmek için daha iyi bir yaklaşımınız var mı? Çözmek küçük bir karmaşa oldu. Yardımın için teşekkürler.
Chris Hough

dağıtımdan güncellenmiş bir paket varsa bunu kullanmaya çalışacağım. Çoğu dağıtım eski sürümler için backport sağlar. Bu mümkün değilse, kaynağı orijinal geliştiriciden alıp kendim inşa ederim. Etrafta yüzen bir yama varsa onu uygulayabilirim (genellikle küçüktür ve manuel olarak kontrol edilebilir).
reto

Bu iş parçacığının 12.000 görünümü vardır,% 5'inizin çözümünüzü kullandığını ve repo'nuzu eklediğini varsayalım. Arka kapı entegre edilmiş bir çekirdek paketin yeni sürümünü kolayca ekleyebilirsiniz. Bir hafta içinde orada 600 sisteme erişebilirsiniz. Bunu yapacağınızı sanmıyorum, ancak üçüncü taraf repo eklemek çok güvenli değil.
reto

1
Repodan güncelleme yapmam gerekmiyordu. Benim için "allow_writeable_chroot = YES" satırını ekleyerek hatayı düzelttim
abumalick

7

Bir önceki cevaba göre "Bu sorunun GERÇEK çözümü: kullanıcının ana klasörü sadece okunabilir olmamalıdır.". Genel düşünce doğrudur, ancak yanlış bir idrakle.

Aşağıda basit bir örnek vermeye çalışacağım:

Başlangıç ​​olarak, kullanıcı dizininin bir topolojisi oluşturmamız gerekir:

 / ev (ro)
   | -someuser (rw, 700)
         | -ftp_upload (ro, 555) - ch_rooting burada, vsftpd tarafından salt okunur gereklidir :(
           | -temp (rw, 755)
           | -in_kutusu (rw, 755)
           | -out_box (rw, 755)

vsftpd.conf kesimi:

# Rootlamayı etkinleştir
chroot_local_user = EVET

# chroot_list içinde dinlenenler dışındaki tüm kullanıcılar
chroot_list_enable = EVET

# İstisna listesi. İdeal olarak boş olmalıdır;)
chroot_list_file = / etc / vsftpd / chroot_list

# Ftp kök dizinini belirli bir dizine eşleme
local_root = / home / someuser / ftp

Bu yapılandırma, tek kullanıcılı bir yapılandırmada mükemmel çalışır . Çok kullanıcılı olarak, "user_config_dir" yönergesi ek olarak kullanılmalıdır.

** GÜNCELLEME 20/09

------ **

İşte zor geçici çözüm, kullanmak için en iyi fikir değil, ama .... Yazılabilir ftp kök klasörüne ihtiyacınız varsa, sadece başlangıç ​​öncesi ve başlangıç ​​sonrası komutlarına izin değiştirme komutları ekleyin.

  1. Başlama öncesi - sunucunun gerektirdiği salt okunur izinleri değiştirin (:

  2. Sunucuyu başlat

  3. Başlangıç ​​sonrası - okuma-yazma iznini veya ihtiyacınız olanı değiştirin.


Birçok varyasyon denedim ama bir WP sunucusu için çalıştıramadı. Bu sizin için bir WP yapılandırmasında çalışıyor mu?
Chris Hough

Güncelleme bölümüne bakın, bu varyant size yardımcı olabilir mauby, bunu yapmak tamamen güvenli değil, ama başka olasılıklar yoksa ...
Reishin

1

Toastboy70'in bahsettiği hemen hemen bu. Ftp-root dizinini ftp.ftp'ye ve yazılamaz hale getirin (/etc/vsftpd.conf): anon_root = / srv / ftp

Sonra yazılabilir bir alt dizin oluşturun: / srv / ftp / upload


0

Ben de /etc/vsftpd.conf dosyasına eklemek için gerekli:

seccomp_sandbox=NO

VE özel repo gerek yok !!

Ve hattı aç:

write_enable=YES

0

Basit düzeltme, hata mesajının önerdiği gibi yapmaktır: Kökü yazılamaz hale getirin ve yüklemeleri etkinleştirmeniz gerekiyorsa, yazma iznine sahip bir alt dizin yapın. Yapılandırma değişikliği gerekmez.


0

3 saat çalıştıktan sonra Ubuntu 14.04.2 LTS VSFTPd 3'ü çalıştırdım. Giriş klasörü, bir istemciyle erişildiğinde görünür / home / vimal olur. Vimal ile root yetkisi ile giriş yaptım. FtpShare klasörü oluşturdum, ancak fazla bir anlamı yok.

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

bazı yararlı komutlar:

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

Yukarıda ftp daemon çalışıyor demektir

Aşağıdaki yapılandırmaya sahibim:

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 çalıştıktan sonra belirli gereksinimlere göre ayarlayabilirsiniz, yukarıdakilerin bazıları varsayılan değerlere sahiptir, ancak tam olarak hatırlamıyorum.

FTP İstemcisinde görülen hatalar:

1.500 OOPS: prctl PR_SET_SECCOMP başarısız oldu

Çözüm.

seccomp_sandbox=no    

[ilk yorumlanan bölüm sona erdikten sonra ilk satırda vsftpd.conf ekleyin]

2. 500 OOPS: vsftpd: chroot () içindeki yazılabilir kökle çalışmayı reddetme

allow_writeable_chroot=YES

Son satıra ekledim.


0

Ubuntu sunucumdaki chroot () ile yazılabilir bir kökle çalıştırmayı reddeden vsFTPd sorununu şu şekilde çözdüm:

vsftpd.confDosyaya aşağıdaki satırı ekledim :

allow_writeable_chroot=YES
Sitemizi kullandığınızda şunları okuyup anladığınızı kabul etmiş olursunuz: Çerez Politikası ve Gizlilik Politikası.
Licensed under cc by-sa 3.0 with attribution required.