web-dev-qa-db-fra.com

L'installation de vsftpd ne fonctionne pas sur le serveur virtuel à partir de 14.04.

Le processus que j'ai utilisé pour installer vsftpd depuis 12.04 ne fonctionne plus. Je reçois l'erreur stop: Unknown instance lors du redémarrage du service. Je pense que cela signifie que la configuration est incorrecte, mais je ne peux pas détecter le problème. J'ai ce problème sur un serveur virtuel.

De plus, l'exécution de Sudo vsftpd entraîne 500 OOPS: munmap, comme indiqué par @Beltran.


  1. Acquérir les privilèges root

    Sudo -s
    
  2. Installez vsftpd et libpam-pwdfile

    apt-get install vsftpd libpam-pwdfile
    
  3. Editer vsftpd.conf

    mv /etc/vsftpd.conf /etc/vsftpd.conf.bak
    vim /etc/vsftpd.conf
    

    Copiez et collez les lignes suivantes.

    allow_writeable_chroot=YES
    anonymous_enable=NO
    chroot_list_enable=YES
    chroot_local_user=YES
    guest_enable=YES
    guest_username=vsftpd
    hide_ids=YES
    listen=YES
    local_enable=YES
    local_umask=022
    local_root=/var/clients/$USER
    nopriv_user=vsftpd
    pasv_address=127.0.0.1
    pasv_enable=YES
    pasv_min_port=65000
    pasv_max_port=65100
    port_enable=YES
    user_sub_token=$USER
    seccomp_sandbox=NO
    virtual_use_local_privs=YES
    write_enable=YES
    
  4. Enregistrer l'administrateur virtuel

    apt-get install Apache2-utils
    mkdir /etc/vsftpd
    htpasswd -cd /etc/vsftpd/ftpd.passwd admin
    vim /etc/vsftpd.chroot_list
    

    Ajouter 1 ligne pour l'utilisateur admin

    admin
    
  5. Configurer PAM

    mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.bak
    vim /etc/pam.d/vsftpd
    

    Copiez et collez ces 2 lignes.

    auth required pam_pwdfile.so pwdfile /etc/vsftpd/ftpd.passwd
    account required pam_permit.so
    
  6. Créer un utilisateur local sans accès au shell

    useradd --home /home/vsftpd --gid nogroup -m --Shell /bin/false vsftpd
    
  7. Créez un répertoire racine et donnez à l'utilisateur local l'accès approprié.

    mkdir /var/clients
    chmod -R 755 /var/clients
    chown -R vsftpd:nogroup /var/clients
    
  8. Enregistrer les utilisateurs virtuels emprisonnés (au départ, je saute cette étape)

    htpasswd -d /etc/vsftpd/ftpd.passwd {user_name}
    mkdir /var/clients/{user_name}
    
  9. Redémarrer le service

    service vsftpd restart
    
6
roydukkey

Si vous recevez ce problème sur une instance AWS EC2, essayez de créer l'instance avec la virtualisation HVM au lieu du Paravirtual.

Si vous souhaitez toujours une instance paravirtuelle, vous ne saurez pas quand le bogue sera corrigé car il s'agit d'un bogue dans le noyau Xen, qui est utilisé pour exécuter la virtualisation pour AWS.

Voici le fil de discussion traitant plus en détail de ce problème: https://bugs.launchpad.net/ubuntu/+source/vsftpd/+bug/131345

2
roydukkey

Activez Trusty-Proposé dans vos sources de logiciels et réinstallez vsftpd. Je vérifie si cela est acceptable.

Si vous ne souhaitez pas activer les sources proposées dans votre source, les versions de vsftpd sont disponibles sur cette page. https://launchpad.net/ubuntu/trusty/+source/vsftpd/3.0.2-1ubuntu2.14.04.1

3
Elder Geek

Ubuntu 14.04 utilise sessions utilisateur qui était absent dans 12.04, donc service regarde la session utilisateur, pas la session système, et votre utilisateur n’exécute pas vstfpd (root is). Ainsi, vous devrez spécifier --system lorsque vous utiliserez service pour démarrer, arrêter ou vérifier le statut d'un service.

vsftpd est un lien symbolique vers l'utilisateur, vous ne pourrez donc pas l'exécuter en tant qu'utilisateur non privilégié, vous devrez être root pour démarrer, arrêter ou vérifier le statut d'un tel processus.

Faire un ls -l on /etc/init.d/vsftpd révèle:

lrwxrwxrwx 1 root root 21 May 16  2013 /etc/init.d/vsftpd -> /lib/init/upstart-job*

qui est similaire à cron, resolvconf et à quelques autres, qui sont tous des travaux imminents et qui doivent être root pour être démarrés ou arrêtés.

Upstart est un remplacement basé sur les événements du démon/sbin/init qui gère le démarrage des tâches et des services pendant le démarrage, les arrête pendant l'arrêt et les supervise pendant le fonctionnement du système.

Ces services sont généralement lancés au démarrage. Voir ici pour plus d'informations sur les nouvelles technologies:

Reportez-vous à la page de manuel de Upstart si vous voulez encore plus!

Donc, histoire courte, pour commencer, arrêter, vérifier le statut, vous devez être root. Vous pouvez le faire comme suit:

Sudo service vsftpd {start|stop|status|restart}

et entrez votre mot de passe ou utilisez:

service vsftpd {start|stop|status|restart} --system
3
jobin

Encore nouveau pour Ubuntu. Si cela fonctionnait sans problème avec Ubuntu 12.4 mais avec Ubuntu 14.04, voici ce que j’ai fait:

dans le fichier /etc/vsftpd.conf, ajoutez ces 2 lignes:

allow_writeable_chroot = YES
seccomp_sandbox = NO

Modifiez la valeur de pam_service_name en ftp.

J'espère que cela aide quelqu'un

1
isecure

Cela a fonctionné pour moi sur Ubuntu 14.04. Si l'utilisateur est emprisonné dans le répertoire /var/www/html/kofi_site, lancez simplement:

Sudo chmod ugo-w /var/www/html/kofi_site

0
nastycrow