web-dev-qa-db-fra.com

Comment désactiver complètement un compte?

Comment désactiver complètement un compte? passwd -l ne permettra à personne de se connecter à un compte à l'aide d'un mot de passe, mais vous pouvez toujours vous connecter via des clés privées/publiques. Comment désactiver complètement le compte? En tant que correction rapide, j'ai renommé le fichier en authorized_keys_lockme. Y a-t-il un autre moyen?

49
user4069

La manière correcte selon usermod(8) est:

usermod --lock --expiredate 1970-01-02 <username>

(En fait, l'argument de --expiredate peut être n'importe quelle date antérieure à la date actuelle au format YYYY-MM-DD.)


Explication:

  • --lock verrouille le mot de passe de l'utilisateur. Cependant, la connexion par d'autres méthodes (par exemple, une clé publique) est toujours possible.

  • --expiredate YYYY-MM-DD désactive le compte à la date spécifiée. Selon man shadow 5 1970-01-01 est une valeur ambiguë et ne doit pas être utilisée.

J'ai testé cela sur ma machine. Aucune connexion avec mot de passe ni clé publique n'est possible après l'exécution de cette commande.


Pour réactiver le compte à une date ultérieure, vous pouvez exécuter:

usermod --unlock --expiredate '' <username>
61
Christoph Wurm

Verrouillez le mot de passe et changez le shell en /bin/nologin.

Sudo usermod --lock --Shell /bin/nologin username

(Ou plus concis, Sudo usermod -L -s /bin/nologin username.)

10
mattdm

Voici une autre façon simple. Vous pouvez définir le compte d'utilisateur expiré. Cela empêchera les connexions par mot de passe et par clé ssh pour le compte, mais ne pas touche le mot de passe.

Pour verrouiller le compte:

# chage -E 0 username

Le compte d'utilisateur "nom d'utilisateur" sera verrouillé sur le système. Pour réactiver le compte d'utilisateur, procédez comme suit.

Pour déverrouiller le compte:

# chage -E -1 username

Le compte d'utilisateur 'nom d'utilisateur' sera réactivé sur votre système avec le même mot de passe qu'avant. Le binaire 'chage' fait partie du paquet shadow-utils sur Red Hat Linux, ou du passwd package sur Debian Linux.

4
miklosq

Je n'ai pas suffisamment de représentant pour commenter la réponse de Legate, mais je voulais partager que cette réponse nous a aidé avec un autre cas d'utilisation:

1.) le compte en question est un compte de service local exécutant une application, pas un compte d'utilisateur final.

2.) les utilisateurs finaux ssh comme eux-mêmes, et Sudo /bin/su <user> pour devenir utilisateur et administrer l'application en raison d'une exigence de piste d'audit selon laquelle le compte de service ne peut pas disposer d'une connexion directe.

3.) le compte de service doit avoir un Shell valide (/bin/bash, ne pas /sbin/nologin), car une plateforme de planification d'entreprise (l'agent s'exécute en tant que root localement) doit pouvoir su - <user> et n'a pas le su -s /bin/bash <user> capacité d'un shell complet et nécessaire pour exécuter des travaux à distance pour des opérations par lots plus importantes qui englobent plusieurs serveurs et bases de données.


Donc...

passwd -l <user>
Ne satisfait pas aux contraintes car l'authentification par clé publique contourne PAM et permet toujours la connexion directe.

usermod -s /sbin/nologin <user>
Ne satisfait pas aux contraintes car interrompt le planificateur d'entreprise

usermod --lock --expiredate 1970-01-01 <user>
Ceci est notre gagnant. La connexion à distance est désactivée, mais root peut toujours su <user>, tout comme les autres utilisateurs via Sudo pour que le planificateur fonctionne correctement et que les utilisateurs finaux autorisés puissent devenir le compte de service cible selon les besoins.

Merci pour la solution!

3
user1880028

Pour le supprimer entièrement, utilisez userdel.

Veuillez noter que si vous supprimez un compte, il existe un risque que son ID utilisateur soit toujours utilisé quelque part dans le système de fichiers et qu'un nouvel utilisateur hérite de la propriété de ces fichiers s'il appartient sous ce même ID utilisateur.

Vous souhaitez modifier le propriétaire de tous les fichiers appartenant à l'utilisateur supprimé.

Si vous souhaitez rajouter l'utilisateur ultérieurement, enregistrez ses lignes à partir de /etc/passwd (et sur Solaris /etc/shadow) vers des fichiers temporaires tels que /etc/passwd_deleted.

De cette façon, lorsque vous l'ajoutez, vous pouvez utiliser le même identifiant utilisateur et le même mot de passe (qui est crypté dans l'un des fichiers ci-dessus)

Avis de non-responsabilité: j'ai appris UNIX par moi-même, je ne serais donc pas surpris s'il existe un meilleur moyen de désactiver temporairement l'utilisateur. En fait, je ne sais même pas de quelles clés privées/publiques vous parlez. Je suis également sûr qu'il existe une commande find qui peut être utilisée pour rechercher les fichiers avec cet ID utilisateur propriétaire

1
Bryan Field

Quelqu'un a-t-il essayé de le faire via ssh_config? Peut-être que cela pourrait aider http://www.techrepublic.com/blog/opensource/set-up-user-accounts-quickly-and-securely/86

Assurez-vous également que PasswordAuthentication est également défini sur non, pour forcer toutes les connexions à utiliser des clés publiques.

0
icasimpan