Messaggio di errore "500 OOPS: vsftpd: rifiuto di eseguire con root scrivibile all'interno di chroot ()" - mantenere l'utente imprigionato


19

Finora non sono stato in grado di mantenere un utente FTP imprigionato nella sua directory del sito Web. Esiste una soluzione che risolve entrambi questo errore e mantiene l'utente imprigionato nella propria directory?

Le mie impostazioni vsFTPd che ho modificato:

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

Alla fine del file ho aggiunto:

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

L'utente in questione, mybloguserviene imprigionato nella sua directory del sito Web /srv/www/mybloge questo utente non fa parte del nano /etc/vsftpd.chroot_listfile. La home directory dell'utente è anche quella /srv/www/myblogche funzionava in passato.

Ho provato la allow_writeable_chroot=YESsoluzione che non ha funzionato e in realtà ho rotto completamente vsFTPd.

Ho provato:

Come possiamo sia correggere questo errore sia mantenere l'utente imprigionato nella sua home directory?


In qualche modo, per me, almeno con gli utenti ftp "virtuali", basta aggiungere l'impostazione allow_writeable_chroot=YESe in realtà ha funzionato "come previsto" FWIW ...
rogerdpack

Risposte:


18

Per VSFTPD 3,

  1. Vai a: /etc/vsftpd.conf
  2. e aggiungi questo:

    allow_writeable_chroot=YES
    

    Aggiungilo se non esiste ancora.

  3. Riavvia il servizio vsftpd:

    service vsftpd restart
    

E dovrebbe funzionare.


3
L'interrogante in realtà afferma di aver già provato questo e non ha funzionato, quindi questa non è una risposta alla sua domanda.
Requist

2
Dove posso leggere le implicazioni sulla sicurezza di questa scelta?
flickerfly,

ha funzionato per me (questo è stato menzionato anche nel commento della risposta accettata)
Sverre,

16

La vera soluzione di questo problema: la cartella home dell'utente non deve essere scrivibile ma solo leggibile.

Quindi, se il sito dell'utente è nella cartella cat/example.com/http/, la cartella catdeve avere chmod 555e tutto andrà bene.


12
Non ha senso. La directory dell'utente non dovrebbe essere scrivibile ???
Kevin Bowen,

6
Come esattamente l'utente dovrebbe caricare i file se non può scrivere ?!
Cerin,

Funziona bene per un ftp anonimo senza diritti di upload, grazie!
palacsint,

giusto! ora va bene
user1406691,

5
Funziona perfettamente! Basta creare una home per l'utente con chmod 555 e, al suo interno, creare una home per il sito Web (o i siti Web), con chmod 755 o quello di cui hai bisogno: tutto funzionerà e l'utente avrà i permessi di scrittura.
lucaferrario,

13

Dopo un'ulteriore revisione di questo post, nei commenti è stato pubblicato un pacchetto che ha risolto il mio problema. Puoi cercarlo con il mio nome o con la documentazione "Marks": http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside-chroot/ . Ecco i miei dettagli su come ho risolto ulteriormente questo problema.

GLI UTENTI SONO ANCORA MARCATI ALLE LORO DIRECTORIES !!!

# ------------------------------------------------------------------------------
# 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
Nota: la soluzione di Chris aggiungerà un server di pacchetti di terze parti all'elenco dei repository! Perché installare un server FTP sicuro e chroot quando si accettano ciecamente pacchetti software esterni da installare sul proprio sistema. (Chris: Non credo che ne trarrai vantaggio, ma usare questa soluzione IMHO è un brutto sysadmining)
reto

1
hai un approccio migliore per risolvere questo dilemma @reto? È stato un piccolo pasticcio da risolvere. Grazie per l'aiuto.
Chris Hough,

se c'è un pacchetto aggiornato dalla distribuzione, proverei a usarlo. La maggior parte delle distribuzioni fornisce backport per versioni precedenti. Se ciò non fosse possibile, otterrei la fonte dallo sviluppatore originale e la costruirò da solo. Se c'è una patch fluttuante, potrei applicarla (di solito sono piccoli e possono essere controllati manualmente).
reto

Questa discussione ha 12'000 visualizzazioni, supponiamo che il 5% usi la tua soluzione e abbia aggiunto il tuo repository. È possibile aggiungere facilmente una nuova versione di un pacchetto principale con una backdoor integrata. Entro una settimana potresti avere accesso a 600 sistemi là fuori. Non penso che lo faresti, ma l'aggiunta di repository di terze parti non è molto sicura.
reto

1
Non ho avuto bisogno di aggiornare dal repository. Per me l'aggiunta della riga "allow_writeable_chroot = YES" risolto il bug
abumalick,

7

Secondo la risposta precedente "La soluzione REALE di questo problema: la cartella home dell'utente non deve essere solo leggibile in scrittura". Il pensiero generale è giusto, ma con una realizzazione sbagliata.

Di seguito proverò a fare un semplice esempio:

Per cominciare, dobbiamo creare una topologia della directory utente:

 / home (ro)
   | -someuser (rw, 700)
         | -ftp_upload (ro, 555) - ch_rooting qui, richiesto in sola lettura da vsftpd :(
           | -temp (rw, 755)
           | -in_box (rw, 755)
           | -out_box (rw, 755)

taglio vsftpd.conf:

# Abilita il chrooting
chroot_local_user = SI

# chroot tutti gli utenti tranne quelli ascoltati all'interno di chroot_list
chroot_list_enable = SI

# Elenco eccezioni. Idealmente, dovrebbe essere vuoto;)
chroot_list_file = / etc / vsftpd / chroot_list

# Mappa la directory radice ftp su una directory specifica
local_root = / home / QualcheUtente / ftp

Questa configurazione funziona perfettamente con una configurazione per utente singolo . Per utenti multipli, la direttiva "user_config_dir" dovrebbe essere utilizzata in aggiunta.

** AGGIORNAMENTO 20/09

------ **

Ecco una soluzione complicata, non è la migliore idea da usare, ma .... Se hai bisogno di una cartella root ftp scrivibile, inserisci i comandi di modifica delle autorizzazioni nei comandi pre-avvio e post-avvio.

  1. Pre-avvio: modifica le autorizzazioni in sola lettura, richieste dal server (:

  2. Avvia il server

  3. Post-start: modifica l'autorizzazione per leggere / scrivere o di cui hai bisogno.


Ho provato molte varianti ma non sono riuscito a farlo funzionare per un server WP. Funziona per te su una configurazione WP?
Chris Hough,

guarda per aggiornare la sezione, ma questa variante può aiutarti, non è del tutto sicuro farlo, ma se non ci sono altre possibilità ...
Reishin,

1

È praticamente ciò di cui ha parlato Toastboy70. Rendi la directory ftp-root indicata su ftp.ftp e non scrivibile (/etc/vsftpd.conf): anon_root = / srv / ftp

Quindi crea una directory figlio scrivibile: / srv / ftp / upload


0

Ho dovuto aggiungere anche quanto segue al file /etc/vsftpd.conf:

seccomp_sandbox=NO

E non è necessario il repository personalizzato !!

E decommenta la linea:

write_enable=YES

0

La semplice correzione è fare come suggerisce il messaggio di errore: rendere la radice non scrivibile e quindi, se è necessario abilitare i caricamenti, creare una sottodirectory che abbia il permesso di scrittura. Non sono necessarie modifiche alla configurazione.


0

Dopo 3 ore di google ho iniziato a lavorare su Ubuntu 14.04.2 LTS VSFTPd 3. La cartella home sarà visibile / home / vimal dopo l'accesso con un client. Ho effettuato l'accesso con Vimal con il privilegio di root. Ho creato la cartella ftpShare, ma non ha molto significato.

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

alcuni comandi utili:

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

Sopra significa che il demone ftp funziona

Ho la seguente configurazione:

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

Una volta che FTP funziona, puoi ottimizzarlo ulteriormente su esigenze specifiche, alcuni dei precedenti hanno valori predefiniti, ma non ricordo esattamente.

Errori riscontrati nel client FTP:

1. 500 OOPS: prctl PR_SET_SECCOMP non riuscito

Soluzione.

seccomp_sandbox=no    

[aggiungilo sulla prima riga vsftpd.conf, al termine della sezione commentata iniziale]

2. 500 OOPS: vsftpd: rifiuto di funzionare con root scrivibile all'interno di chroot ()

allow_writeable_chroot=YES

L'ho aggiunto all'ultima riga.


0

Ho risolto il problema del rifiuto di vsFTPd di funzionare con un root scrivibile all'interno di chroot () sul mio server Ubuntu come segue:

Ho appena aggiunto la riga seguente nel vsftpd.conffile:

allow_writeable_chroot=YES
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.