2016-04-16 8 views
0

Ich mache ein Bash-Skript für das Ubuntu-Terminal. Ich muss den Benutzer überprüfen, bevor der Code fortgesetzt werden kann. Wie frage ich nach und validiere ihr bestehendes Login-Passwort?Wie validiere ich das Passwort eines Benutzers mit einem Shell-Skript?

+0

Sie könnten es in ein Verzeichnis einfügen, auf das nur für eine bestimmte Gruppe zugegriffen werden kann, dann fügen Sie das Verzeichnis dem globalen Pfad hinzu und fügen dann diese Benutzer dieser Gruppe hinzu. – tenCupMaximum

+0

Wenn dies kein passwortspezifisches Passwort für Ihre Anwendung ist, sollten Sie sich nicht daran beteiligen. Lassen Sie das Programm, das das Passwort benötigt, die Überprüfung durchführen. – chepner

+1

Siehe [Erstellen eines minimalen, vollständigen und überprüfbaren Beispiels] (http://stackoverflow.com/help/mcve) – sjsam

Antwort

1
getent shadow | cut -d ":" -f 2 

Wenn es !! zurückgibt, kein Passwort gesetzt, andernfalls hat Benutzer-Passwort.

Im Anschluss daran können wir tun:

#!/bin/bash 

for user in $(getent shadow | cut -d ":" -f 1); 
do 
    has_pass=$(getent shadow | grep $user | cut -d ":" -f 2) 
    if [ $has_pass = "!!" ]; then 
     echo "User $user does not have password" 
    else 
     echo "User $user has password" 
    fi 
done 

Anyways, das nächste Mal, zumindest versuchen, etwas zu tun, bevor er fragte.

+1

Wie validiert das Passwort? – rici

+0

@rici im Grunde sagt, wenn der Benutzer ein Passwort hat oder nicht .. Sie können stattdessen die Ausgabe auf 1 oder 0 setzen und den Wert irgendwie verwenden – sysfiend

2

Man konnte immer benutzen Sie einfach den Befehl id und so etwas wie:

user=$(id -u) # Set $user to user's user id 

Wenn Sie das tun Sie dann in Ihrem Skript, ob $user eine gültige Benutzer-ID ist. Sie können Benutzernamen und IDs in der /etc/group Datei anzeigen. Natürlich wird das Passwort des Benutzers nicht überprüft. Stattdessen wird nur die ID des Benutzers überprüft, der das Skript ausführt.

+0

Es ist nicht sicherer, wenn Sie die Möglichkeit einschließen, dass jemand das Terminal während ergriffen hat Der eingeloggte Benutzer war AFK für ein paar Sekunden, weshalb die Dialogfelder "Passwort ändern" dazu führen, dass Sie Ihr Passwort eingeben müssen, obwohl Sie gerade eingeloggt sind. – rici

+0

@rici Guter Punkt, ich nehme an, das ist wahr. Ich wollte nur sagen, dass es sicherer ist, den Benutzer aufzufordern, sein Passwort erneut einzugeben, es sei denn, es handelt sich um eine verschlüsselte Verbindung. – drewyupdrew

+0

Verwendet jemand noch heute telnet? – rici

Verwandte Themen