Comment puis-je vérifier si un compte local a un mot de passe activé?

1

J'ai besoin de faire un script qui vérifie si un compte local a un mot de passe activé ou simplement un mot de passe vide. Je suppose qu'ils sont la même chose ouais?

J'ai cherché sur Google et essayé la commande de mot de passe -S utilisateur, mais tout ce que j'ai obtenu est une erreur. Dois-je l'exécuter sur la console du terminal local ou existe-t-il un moyen de transformer cela en script?

im super nouveau donc je suis encore un peu confus avec le concept de script en général. En gros, je dois écrire le script dans l’un des éditeurs de texte, le sauvegarder en tant que fichier .sh, lui donner l’autorisation RWX, puis le lancer via un terminal, n’est-ce pas?

ujjj56j56j
la source
1
Dans les deux cas, le compte a un mot de passe, un mot de passe vide est un mot de passe pour Windows.
Ramhound
Quelle est l'erreur exacte lorsque vous essayez password -S user? Tu veux dire passwd -S user? S'il vous plaît éviter de poser plusieurs questions dans un post. Laissez cette question être sur les mots de passe. Si vous avez besoin d’aide pour la création de scripts en général, vous devez poser une question distincte.
Kamil Maciorowski

Réponses:

1

Le mot de passe d'un utilisateur est stocké dans le /etc/shadow fichier. Le fichier est composé de : - champs séparés. Le deuxième champ est le mot de passe. Si un mot de passe est défini, un hachage est affiché. Si un compte est désactivé ou n'a pas de mot de passe, il affichera un message ! ou rien.

Vous pouvez utiliser un script comme celui-ci:

#!/bin/bash

input="$1"
passwordField=$(cat /etc/shadow | grep "$1" | cut -d ':' -f 2)

echo "Password field contains: ${passwordField}"

if [[ "${passwordField}x" == "x" || "$passwordField" == '!' ]]; then
  echo "Password is not set or account is disabled"
else
  echo "Password is set"
fi

Stocker ce texte dans un fichier. Rendre le fichier exécutable avec chmod +x filename et exécutez le fichier en tant qu'utilisateur root avec le nom d'utilisateur en tant qu'argument:

root@frisbee:~# ./checkpw.sh test1
Password field contains: $6$WLmjys98$70x/mzE/syE4CGgK9GvcN0Bz1b9.6Ka.JsZQ7W9OFwvTx17MKtQegQKVweaRl5M3X.Wm/EDdBOEEfdalDR225/
Password is set
root@frisbee:~# passwd -d test1
passwd: password expiry information changed.
root@frisbee:~# ./checkpw.sh test1
Password field contains: 
Password is not set or account is disabled

Ce script simple a la limitation que si l'argument fourni fait partie de deux noms d'utilisateur, il ne produira pas de sortie fiable.

mtak
la source