Comment savoir si un utilisateur est «autorisé à se connecter» sous Linux?

12

La question est simple, je veux lister tous les comptes d'utilisateurs qui peuvent se connecter à mon système, mais je ne sais pas si tous les utilisateurs de / etc / passwd sont des utilisateurs "pourraient se connecter"?

Détails:

Je peux voir les utilisateurs dont les shells sont définis sur /usr/sbin/nologinet /bin/falsedans /etc/passwd, cela signifie-t-il qu'ils ne peuvent pas se connecter?

Je sais aussi que je peux mettre le mot de passe crypté d'utilisateur *ou !en /etc/shadowdésactiver un compte, de sorte que le « utilisateur désactivé » devrait également être traiter comme « ne peut pas se connecter » utilisateur, non?

harryz
la source

Réponses:

13

Beaucoup de cela dépend de votre définition de « journal dans » - techniquement tout utilisateur qui existe dans /etc/passwdet /etc/shadowest un « utilisateur valide » et pourrait théoriquement se connecter sous l'ensemble de circonstances.

Les méthodes dont vous parlez entrent dans les grandes catégories suivantes:

  • Les utilisateurs avec « verrouillés » comptes
    Un utilisateur dont le mot de passe est défini sur *, !ou un autre hachage qui ne sera jamais match « lock - out » (dans les jours de soleil la convention était souvent *LK*, pour « verrouillé »).
    Ces utilisateurs ne peuvent pas se connecter en tapant un mot de passe , mais ils peuvent toujours se connecter en utilisant d'autres mécanismes d'authentification (clés SSH, par exemple).

  • Utilisateurs avec un shell "non interactif"
    Un utilisateur dont le compte a un "shell non interactif" ( /bin/false, /sbin/nologin) ne peut pas se connecter de manière interactive - c'est-à-dire qu'il ne peut pas obtenir une invite shell pour exécuter des commandes (cela empêche également SSH exécution de la commande si l'utilisateur possède des clés SSH sur le système).
    Ces utilisateurs peuvent toujours se connecter pour faire des choses comme lire / envoyer des e-mails (via POP / IMAP & SMTP AUTH). La définition d'un shell non interactif pour les utilisateurs qui ne devraient jamais avoir besoin d'utiliser le shell (et pour la plupart des "comptes de service") est généralement considérée comme une bonne pratique.

Ainsi, en fonction de vos critères pour «pouvoir vous connecter», vous voudrez peut-être vérifier une ou les deux choses.

voretaq7
la source
6

Il existe une différence entre désactiver l'utilisateur et définir le shell sur / bin / false ou similaire.

La définition du shell sur / bin / false empêche l'utilisateur d'obtenir un shell, mais il peut toujours se connecter au système si des utilisateurs locaux sont utilisés pour autre chose (authentification de messagerie, ftp, etc.). La désactivation de l'utilisateur ne lui permet pas d'utiliser les services du serveur qui utilisent des utilisateurs locaux.

Pentium100
la source
donc, en fait, tous les utilisateurs de / etc / passwd sont des utilisateurs "pourraient se connecter", mais certains sont désactivés (*!) et certains sont restreints (/ bin / false)?
harryz
3

En plus de ce qui précède, les utilisateurs peuvent être verrouillés d'un système même si leur entrée de mot de passe semble correcte en utilisant plusieurs méthodes différentes.

/etc/security/access.conf peut être utilisé pour limiter qui peut se connecter.

Il existe de nombreux modules PAM qui peuvent être configurés pour restreindre des utilisateurs spécifiques ou modifier le comportement de connexion en fonction des besoins. (c'est-à-dire qu'aucun répertoire personnel sur le serveur n'autorise la connexion.)

billq
la source