Ich schreibe ein Programm, um Benutzer von einem System zu deaktivieren, ich möchte ersetzen /bin/bash
durch/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 sed
oder 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 chsh
nicht immer verfügbar ist! inalpinLinux zum Beispiel oder Embedded-Systeme mitbeschäftigtbox..
Einfacher Inline- sed
Befehl:
sed -i '/www-data/s/false/sh/g' /etc/passwd
(Dieses Beispiel ändert die Shell von/bin/falseZu/bin/shfür Benutzerwww-Daten)