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.
Acquérir les privilèges root
Sudo -s
Installez vsftpd et libpam-pwdfile
apt-get install vsftpd libpam-pwdfile
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
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
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
Créer un utilisateur local sans accès au shell
useradd --home /home/vsftpd --gid nogroup -m --Shell /bin/false vsftpd
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
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}
Redémarrer le service
service vsftpd restart
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
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
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
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
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