Désactiver la connexion d'un utilisateur sans désactiver le compte

87

Supposons que je crée un utilisateur nommé "faux" à l'aide de la addusercommande. Comment puis-je m'assurer que cet utilisateur ne sera PAS une option de connexion viable sans désactiver le compte? En bref, je veux que le compte soit accessible via su - bogus, mais je ne veux pas qu'il soit accessible via une invite de connexion régulière.

En cherchant, il me semble que je dois désactiver le mot de passe de cet utilisateur, mais cela passwd -d bogusn'a pas aidé. En fait, cela a aggravé les choses, car je pouvais maintenant me connecter à de faux sans même taper de mot de passe.

Existe-t-il un moyen de désactiver les connexions régulières pour un compte donné?

Remarque: Par souci de clarté, je sais comment supprimer un utilisateur des options de menu des écrans de connexion graphiques tels que gdm, mais ces méthodes masquent simplement le compte sans désactiver réellement la connexion. Je cherche un moyen de désactiver complètement la connexion normale, y compris en mode texte.

Malabarba
la source
2
Votre -dest le drapeau pour supprimer le mot de passe. C'est différent de le désactiver (référant à verrouillage, voir la réponse de Chad).
Caleb
1
Vous voudrez probablement les désactiver complètement: unix.stackexchange.com/questions/7690/… Voir aussi cette question Ask Ubuntu: askubuntu.com/questions/282806/how-to-enable-or-disable-a-user
Simon Woodside

Réponses:

102
passwd -l user

c'est ce que tu veux.

Cela verrouille le compte de l'utilisateur. Mais vous pourrez toujours

su - user

mais vous devrez en su - usertant que root.

Alternativement, vous pouvez accomplir la même chose en ajoutant un !mot de passe au mot de passe de l'utilisateur /etc/shadow(tout cela se passwd -lfait en coulisse). Et passwd -uva défaire cela.

Chad Feller
la source
27
En utilisant l' passwd -loption, vous devez savoir que l'utilisateur peut se connecter à l'aide d'un autre jeton d'authentification (par exemple, une clé SSH).
Pl1nk
2
S'il vous plaît voir ma réponse ci-dessous sur une solution recommandée sur la façon d'éviter cela.
Jörg Gottschlich
2
Cela ne fonctionne pas sur Ubuntu 16.04. Cela changera la date d'expiration et n'autorisera plus su-user.
Merlin
1
Est-ce la même chose que l' --disabled-passwordoption donnée à adduser? La création d'un utilisateur sans --disabled-password, puis l'exécution passwd -lsur cet utilisateur, produit-elle le même résultat que l'exécution adduseravec --disabled-password?
haridsv
39

La page de manuel de passwd(1)dit à propos de passwd -l:

Notez que cela ne désactive pas le compte. L'utilisateur peut toujours se connecter en utilisant un autre jeton d'authentification (par exemple, une clé SSH). Pour désactiver le compte, les administrateurs doivent utiliser usermod --expiredate 1 (définissez la date d'expiration du compte sur 2 janvier 1970).

Alors

usermod --expiredate 1 [LOGIN]

Cela me semble être la bonne façon de désactiver un compte qu'un utilisateur ne devrait plus pouvoir utiliser (par exemple, parce qu'il a quitté la société).

Jörg Gottschlich
la source
4
Sur mon CentOs 6.3, passwd -lbloque la sshconnexion d’un utilisateur et usermod --expiredate 1ne le fait pas!
fduff
1
Sur mon CentOS 7.4, passwd -lne bloque plus les sshconnexions pour un utilisateur et le usermod --expiredate 1 userbloque. Par man passwdvous pouvez également utiliser chage -E 0 userpour bloquer un utilisateur. Après avoir postulé usermodou chageje suis capable desudo su user
user12345
usermod --expiredate 0 [LOGIN]fonctionne également, il fixe la date de fin au 1er janvier 1970 alors que le
chiffre
"La valeur 0 ne doit pas être utilisée car elle est interprétée soit comme un compte sans expiration, soit comme une expiration le 1er janvier 1970." - ombre (5)
Johannes
28

Il existe deux méthodes pour empêcher un utilisateur de pouvoir se connecter:

  1. vous pouvez verrouiller l'utilisateur en modifiant /etc/passwd
  2. en émettant directement la passwdcommande avec le -lcommutateur

Dans le second cas, l'utilisateur peut se connecter à l'aide d'un autre jeton d'authentification (par exemple, une clé SSH).

Méthode n ° 1

  1. Trouver où se trouve nologin: / bin / nologin ou / bin / sbin / nologin
  2. Ouvrez un terminal et connectez-vous en tant que root
  3. Type vi /etc/passwd

Vous êtes maintenant dans le passwdfichier, appuyez sur Inspour éditer le fichier.

Modifiez la ligne ci-dessous avec l' nologinoption ( /bin/bashsignifie que l'utilisateur peut se connecter).

root:x:0:0:root:/root:/bin/bash

pour ça. nologinsignifie que l'utilisateur est incapable de se connecter.

root:x:0:0:root:/root:/bin/nologin

(ou avec / bin / sbin / nologin)

  1. Fermer le vi Esc :wq

Méthode n ° 2

Pour verrouiller l'utilisateur: passwd -l username

Pour déverrouiller l'utilisateur: passwd -u username

Mansur Ul Hasan
la source
1
Sur un système Ubuntu 14.04, j'ai trouvé /usr/sbin/nologinau lieu de /bin/nologin.
Dennis Williamson
7

C'est une tâche assez facile, vous devez simplement apporter quelques modifications au /etc/passwdfichier.

Vous devez simplement changer le shell qui est généralement par défaut, /bin/bashc'est-à-dire que vous pouvez vous connecter à l'aide de ce shell et le changer en /bin/nologinou /bin/false. Il est conseillé de le changer /bin/nologincar /bin/falsec'est obsolète.

PRABHAT PARASHAR
la source
4

Définir /bin/falsecomme une coquille dans/etc/passwd

danadam
la source
18
Lorsque vous définissez le shell sur /bin/false, vous ne pouvez pas utiliser su pour agir en tant qu'utilisateur. De plus, l’utilisation /bin/falsene produit aucune erreur ni autre indice de ce qui vient de se passer - dans les cas où l’on veut empêcher l’utilisation même de su pour obtenir un shell en tant qu’utilisateur, le shell doit être remplacé par celui /sbin/nologinqui produit une erreur.
HedgeMage
8
Non, suest encore possible pour les utilisateurs avec des /bin/falsecoquilles dans passwd- il suffit d' utiliser l'option --shell: su - --shell /bin/sh bogus.
Matej Kovac
1
/usr/sbin/nologina le même effet que /bin/false, mais affiche également un message d’information utile.
Rörd
0

Lorsque nous verrouillons l'utilisateur à l'aide de la passwd -l usercommande, " !!" sont indiqués dans le /etc/shadowfichier. Mais nous pouvons toujours pouvoir basculer vers un shell utilisateur à partir du compte root, mais ne pas pouvoir basculer vers un compte utilisateur via un shell de connexion d’utilisateur normal.

Nous pouvons également désactiver le compte en fournissant /bin/nologinou /bin/falsedans le /etc/passwdfichier. Il est donc possible que l'utilisateur ne puisse pas se connecter.

Sushil Musande
la source
-1

Vous pouvez utiliser la commande

usermod -s /sbin/nologin username
Présent Richard Chigonera
la source