web-dev-qa-db-fra.com

Pourquoi vsftpd ne fonctionne pas lorsque pam_service_name = vsftpd?

J'ai fait une configuration de vsftpd sur mon serveur domestique. J'ai eu une erreur d'authentification alors j'ai cherché sur ce forum et j'ai trouvé une solution. Cette solution a fonctionné pour moi

Comme dans la solution. le réglage par défaut

pam_service_name=vsftpd

ne fonctionne pas et le serveur FTP ne me permet pas de me connecter.

Et après je l'ai changé pour

pam_service_name=ftp

Cela fonctionne et je peux me connecter en tant qu'utilisateur local au serveur FTP. Quelle est la raison derrière cela? Pourquoi le défaut ne fonctionne pas? J'apprends Linux afin que votre bonne explication puisse m'aider beaucoup

7
Anbu

J'ai rencontré la même erreur d'authentification avec pam_service_name=vsftpd.

Suite aux conseils en ligne, je ne comprenais pas pourquoi la définition de pam_service_name=ftp corrigeait le problème. J'ai donc testé la définition de pam_service_name=foobar. Le problème a également été résolu!

Disclaimer: Moi aussi je suis nouveau sur linux cependant Je crois que le conseil généralement accepté de définir pam_service_name=ftp est faux .

pam_service_name=vsftpd sélectionne le fichier de configuration existant /etc/pam.d/vsftpd. Cependant, pam_service_name=ftp cherchera le /etc/pam.d/ftp qui n'existe pas (du moins sur mon système - Ubuntu 14.04.2 LTS). Je soupçonne qu'il s'agit en réalité de contourner l'authentification PAM sans se plaindre de ne pas trouver le fichier.

En n'utilisant pas une configuration PAM valide, elle risque d'être moins sécurisée.

Solution finale

J'ai fini par garder pam_service_name=vsftpd et je me suis assuré que le shell de l'utilisateur existait dans le fichier /etc/shells. http://www.cyberciti.biz/tips/howto-linux-Shell-restricting-access.html

En regardant /etc/pam.d/vsftd

# Standard behaviour for ftpd(8).
auth    required    pam_listfile.so item=user sense=deny file=/etc/ftpusers onerr=succeed

# Note: vsftpd handles anonymous logins on its own. Do not enable pam_ftp.so.

# Standard pam includes
@include common-account
@include common-session
@include common-auth
auth    required    pam_shells.so

Mon problème était qu'il échouait à l'étape auth required pam_shells.so. J'avais obligé tous mes utilisateurs FTP à utiliser le shell /usr/sbin/nologin qui n'existait pas dans le fichier /etc/shells (non-ubuntu, il pourrait s'agir simplement de /sbin/nologin). Si vous n'êtes pas sûr, essayez de commenter le auth required pam_shells.so pour voir si c'est la cause de pam_service_name=vsftpd.

Remarque: Des lectures supplémentaires suggèrent qu'il est plus propre de créer des utilisateurs virtuels, mais cela nécessite une configuration différente de vsftpd et de PAM - http://www.sigerr.org/linux/setup-vsftpd-custom-multiple-directories-users- comptes-ubuntu-étape par étape / .

6
Josef P.

Dans /etc/pam.d/vsftpd, vous pouvez spécifier

auth required pam_nologin.so

ainsi, les utilisateurs dont la connexion est désactivée via/usr/sbin/nologin peuvent uniquement se connecter au système par le biais de ftp.

Remarque: J'ai lu que l'ajout de nologin à/etc/shells pouvait constituer une menace pour la sécurité de Serverfault .

2
dexin

Pour moi, le problème était que j'ai créé la configuration de PAM (/etc/pam.d/vsftpd) sur un ordinateur Windows, ce qui a abouti à \r\n fins de ligne.

Une fois que j'ai converti les fins de ligne au style Linux (seulement \n), la configuration de PAM a commencé à fonctionner.

J'ai aussi d'abord pensé que le nom du service PAM était erroné et essayé avec pam_service_name=ftp au lieu de pam_service_name=vsftpd, mais cela n'a pas aidé du tout et je suis d'accord avec l'évaluation de Josef P. que ce n'est pas la voie à suivre.

1
Reto Höhener