Ersetzen von /bin/bash durch /bin/false in der Datei /etc/passwd

Ersetzen von /bin/bash durch /bin/false in der Datei /etc/passwd

Ich schreibe ein Programm, um Benutzer von einem System zu deaktivieren, ich möchte ersetzen /bin/bashdurch/bin/false.

Beispiel

xxx:x:1:22:xx:/export/home/xx:**/bin/bash**

ersetzen

xxx:x:1:22:xx:/export/home/xx:**/bin/false**

Ich möchte ein Bash-Skript verwenden.

Ich weiß, dass eine Möglichkeit dazu die Verwendung ist sed. Aber ich bin nicht gut mit regulären Ausdrücken.

Kann jemand helfen?

Antwort1

Nun, Sie tun es überhaupt nicht mit sedoder regulären Ausdrücken. Was Sie tun, ist, das Programm zu verwendenchshum die Shell eines Benutzers zu ändern.

chsh -s /bin/false username

Alternative:

usermod -s /bin/false username

Wenn Sie es durch eine echte Shell ersetzen möchten, müssen Sie außerdem sicherstellen, dass es in aufgeführt ist /etc/shells.

Antwort2

Bitte beachten Sie, dass dies chshnicht immer verfügbar ist! inalpinLinux zum Beispiel oder Embedded-Systeme mitbeschäftigtbox..

Einfacher Inline- sedBefehl:

sed -i '/www-data/s/false/sh/g' /etc/passwd

(Dieses Beispiel ändert die Shell von/bin/falseZu/bin/shfür Benutzerwww-Daten)

verwandte Informationen