web-dev-qa-db-fra.com

Message d'erreur "500 OOPS: vsftpd: refus de s'exécuter avec une racine en écriture dans chroot ()" - maintien de l'utilisateur en prison

Jusqu'à présent, je n'ai pas pu garder un utilisateur FTP emprisonné dans le répertoire de leur site Web. Existe-t-il une solution permettant à la fois de corriger ce bogue et de garder l'utilisateur en prison dans son répertoire?

Mes paramètres vsFTPd que j'ai modifiés:

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

A la fin du fichier, j'ai ajouté:

# 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'utilisateur en question, mybloguser, est emprisonné dans son répertoire de site Web sous /srv/www/myblog et cet utilisateur ne fait pas partie du fichier nano /etc/vsftpd.chroot_list. Le répertoire personnel de l’utilisateur est également /srv/www/myblog qui fonctionnait jadis.

J'ai essayé la solution allow_writeable_chroot=YES qui n'a pas fonctionné et qui a en réalité complètement cassé vsFTPd.

J'ai essayé:

Comment pouvons-nous à la fois corriger cette erreur et garder l’utilisateur emprisonné dans son répertoire personnel?

19
Chris Hough

Après un examen plus approfondi de ce message, un paquet a été posté dans les commentaires et a corrigé le problème. Vous pouvez le rechercher par mon nom ou par "Marques" Documentation: http://www.benscobie.com/fixing-500-oops-vsftpd-refusing-to-run-with-writable-root-inside -chroot / . Voici mes détails de la façon dont j'ai résolu ce problème.

LES UTILISATEURS SONT TOUJOURS JAPES DES RÉPERTOIRES À LA MAISON !!!

# ------------------------------------------------------------------------------
# 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]
13
Chris Hough

Pour VSFTPD 3,

  1. Allez à: /etc/vsftpd.conf
  2. et ajoutez ceci:

    allow_writeable_chroot=YES
    

    Ajoutez-le s'il n'existe pas encore.

  3. Redémarrez le service vsftpd:

    service vsftpd restart
    

Et ça devrait marcher.

18
Carlos Sura

La vraie solution à ce problème: le dossier de départ de l'utilisateur doit ne pas être en écriture uniquement lisible.

Ainsi, si le site de l'utilisateur se trouve dans le dossier cat/example.com/http/, le dossier cat doit avoir chmod 555 et tout ira bien.

16
nikita

Selon la réponse précédente "La solution RÉELLE de ce problème: le dossier de base de l'utilisateur ne doit pas être accessible en écriture, mais seulement en lecture.". La pensée générale est juste, mais avec une mauvaise réalisation.

Ci-dessous, je vais essayer de donner un exemple simple:

Pour commencer, nous devons créer une topologie du répertoire d'utilisateurs:

/home (ro) 
 | -someuser (rw, 700) 
 | -ftp_upload (ro, 555) - ch_root ici, requis en lecture seule par vsftpd: (
 | -temp (rw, 755) 
 | -in_box (rw, 755) 
 | -out_box (rw, 755) 
 

vsftpd.conf coupé:

 # Activer le chrootage 
 Chroot_local_user = YES 
 
 # Chrooter tous les utilisateurs sauf écouter dans chroot_list 
 Chroot_list_enable = OUI 
 
 # Liste des exceptions. Idéalement, il devrait être vide;) 
 Chroot_list_file =/etc/vsftpd/chroot_list 
 
 # Mappe le répertoire racine ftp au répertoire spécifique 
 Local_root =/home/someuser /ftp

Cette configuration fonctionne très bien avec une configuration tilisateur unique. Pour les utilisateurs multiples, la directive "user_config_dir" doit également être utilisée.

** MISE À JOUR 20/09

------ **

Voici une solution de contournement difficile, pas la meilleure idée à utiliser, mais .... Si vous avez besoin d'un dossier racine ftp enregistrable, insérez simplement les commandes de changement d'autorisation dans les commandes de pré-démarrage et de post-démarrage.

  1. Pré-démarrage - modifiez les autorisations en lecture seule, requises par le serveur (:

  2. Démarrer le serveur

  3. Post-start - modifiez l’autorisation de lecture-écriture ou celle dont vous avez besoin.

7
Reishin

Après 3 heures de recherches sur Google, j’ai utilisé Ubuntu 14.04.2 LTS VSFTPd 3. Le dossier de départ sera visible/home/vimal une fois accessible avec un client. Je me suis connecté avec vimal avec le privilège root. J'ai créé un dossier ftpShare, mais cela n'a pas beaucoup de sens.

Sudo chown vimal:vimal /home/vimal/ftpShare/

quelques commandes utiles:

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

Ci-dessus, le démon ftp fonctionne

J'ai la configuration suivante:

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

Une fois que FTP fonctionne, vous pouvez l’accorder à des besoins spécifiques, certains des éléments ci-dessus ont des valeurs par défaut, mais je ne me souviens pas exactement.

Erreurs vues dans le client FTP:

1. 500 OOPS: échec de prctl PR_SET_SECCOMP

Solution.

seccomp_sandbox=no    

[ajoutez-le à la toute première ligne vsftpd.conf, après la fin de la première section commentée]

2. 500 OOPS: vsftpd: refus de s'exécuter avec une racine en écriture dans chroot ()

allow_writeable_chroot=YES

Je l'ai ajouté à la dernière ligne.

0
vimal krishna

La solution simple consiste à faire ce que le message d'erreur suggère: rendre la racine non accessible en écriture, puis si vous devez activer les téléchargements, créez un sous-répertoire disposant de l'autorisation d'écriture. Aucune modification de configuration nécessaire.

0
toastboy70

J'ai résolu le problème de vsFTPd refusant de s'exécuter avec une racine accessible en écriture dans chroot () sur mon serveur Ubuntu, comme suit:

Je viens d'ajouter la ligne ci-dessous dans le fichier vsftpd.conf:

allow_writeable_chroot=YES
0
Somnath Das

J'avais besoin d'ajouter ce qui suit au fichier /etc/vsftpd.conf:

seccomp_sandbox=NO

ET pas besoin de repo personnalisé !!

Et décommentez la ligne:

write_enable=YES
0
MuffinMan

C'est à peu près ce que toastboy70 a mentionné. Faites en sorte que le répertoire ftp-root chown'd soit en ftp.ftp et non accessible en écriture (/etc/vsftpd.conf): anon_root =/srv/ftp

Puis créez un répertoire enfant accessible en écriture:/srv/ftp/upload

0
AsifHaswarey