
Ich möchte über ein Skript einen Benutzer zum Linux-System hinzufügen, aber ich möchte mir weder das Passwort ausdenken noch darum kümmern. Dies soll automatisch erfolgen.
Das Ziel ist, SSH-Schlüssel zu generieren und dieser Benutzer muss sich nur remote anmelden. Alternativ kann dieser Benutzer auch von einem Sudo-Benutzer über verwendet werden sudo su - thatuser
.
Ich möchte mir die Mühe ersparen, bei jeder Erstellung eines solchen Benutzers ein sicheres Passwort erfinden und eingeben zu müssen, und dies auch über Skripte tun.
Niemand sollte sich als dieser Benutzer mit einem Passwort anmelden können. Meine Idee ist also, dass er ein gutes, zufälliges Passwort bekommt, das aber niemand kennt.
Ich könnte ein Skript schreiben, das zufällig etwas generiert, aber vielleicht ist da etwas eingebaut? Oder deaktivieren Sie einfach das Passwort (sodass die Anmeldung mit Passwort nicht möglich ist, die SSH-Anmeldung mit Schlüsseln jedoch sudo su - thatuser
einwandfrei funktioniert).
Bearbeiten:Es gibt bereits einige Antworten, super, aber ich bin mir immer noch nicht sicher, wie ich es machen soll. Wie würde das Skript aussehen?
Es sollte sich wie Adduser verhalten und alles standardmäßig erstellen (wie Standard-Home-Verzeichnis, Skelett kopiert, Gruppe mit demselben Namen).
Bearbeitung2:Am Ende habe ich mit Ihrer Hilfe eine Lösung gefunden, die funktioniert, und ich möchte sie mit Ihnen teilen. Dies ist ein Skript, das ich „adduser-nopasswd“ nenne und das ich in /usr/local/sbin (ist das ein guter Ort?) platziere. Es kann nur von Root ausgeführt werden. Es benötigt ein Argument, nämlich den Namen der neuen Gruppe und des neuen Benutzers:
#!/bin/sh -e
# the -e makes the script exit immediateley if one command fails
NAME=$1
groupadd $NAME
useradd --create-home -d /home/$NAME --shell /bin/bash -g $NAME $NAME
Irgendwelche Kommentare zu dieser Funktion?
Antwort1
Wenn Sie kein Passwort angeben, useradd
wird es nicht gesetzt (und der Benutzer kann sich daher nicht per Passwort anmelden). Beachten Sie, dass useradd
und adduser
zwei verschiedene Befehle sind.
Im Folgenden wird der neue Benutzer mit seiner eigenen Gruppe erstellt, sein Home-Verzeichnis erstellt (am Standardspeicherort, da wir keinen Speicherort angeben) und die Skelettdateien kopiert.
useradd --create-home <user>
Anschließend erstellen Sie einfach das Verzeichnis .ssh
in seinem Stammverzeichnis (SSH chmod
benötigt 0700
dies aus Sicherheitsgründen) und geben den öffentlichen Schlüssel des Benutzers ein .ssh/authorized_keys
(das private/öffentliche Schlüsselpaar sollte vom Benutzer selbst auf seinem eigenen Computer generiert werden).
Wenn Sie das Passwort eines bereits bestehenden Kontos deaktivieren möchten, können Sie Folgendes verwenden.
usermod --lock <user>
Antwort2
Das Dienstprogramm /usr/sbin/useradd hat immer Benutzer für mich erstellt, ohne Passwörter zu verlangen. Ich habe viele Skripte geschrieben, die die /etc/passwd eines anderen Systems genommen und Benutzer für mich erstellt haben.
Alternativ können Sie in der Dokumentation für Mercurial-Server nachlesen, wie Sie viele SSH-Schlüssel (Clients) einrichten, um Programme als nur ein Benutzer auf der Serverseite auszuführen.
Antwort3
# cat user-pw_list
john:p455W0rD
geany:p455W0rD
# cat CreateUsers.sh
#!/bin/bash
#
# filename: CreateUsers.sh
# usage: cat "User:passwd" | $0
#
set -e
# set -x
while read ; do
USER=${REPLY%%:*}
PWD=${REPLY##*:}
# alternative for random passwd, where $RANDOM is a bash function
#PWD=${REPLY%%:*}$RANDOM$RANDOM
echo -e "adding User $USER "
# for disabled users: /usr/sbin/nologin, otherwise /bin/bash
/usr/sbin/useradd -c automaticUser -m -k/dev/null -s /usr/sbin/nologin $USER
echo "$USER:$PWD" | chpasswd --md5 $USER
## also add user to samba:
#echo -e "$PWD\n$PWD" | pdbedit -t -u $USER
done
Ok, fügen wir unsere Benutzer hinzu:
cat user-pw_list | ./CreateUsers.sh
Antwort4
Geben Sie in das Kennwortfeld in /etc/shadow ein * ein (dies sollte passieren, wenn Sie kein Kennwort festlegen). Dadurch wird verhindert, dass sich der Benutzer anmeldet.