Ich habe einige Benutzer erstellt mit:
$ useradd john
und ich habe vergessen, den Parameter anzugeben, um das Basisverzeichnis -m
zu erstellen und die Skelettdateien auf jeden Benutzer zu kopieren. Jetzt möchte ich das tun und ich möchte nicht alle Benutzer neu erstellen (es muss einen einfacheren Weg geben). Gibt es also eine Möglichkeit, die Benutzerverzeichnisse zu erstellen und die Skelettdateien zu kopieren?
Ich dachte darüber nach, die Verzeichnisse zu erstellen, sie dem entsprechenden Benutzer anzuzeigen, alle Skelettdateien zu kopieren und sie dem entsprechenden Benutzer anzuzeigen. Aber wenn es einen solchen Befehl useradd -m
gibt, der den Benutzer nicht erneut erstellt, sondern die Verzeichnisse erstellt, ist es besser.
Antworten:
Das mag sich nach einer dummen Idee anhören, aber wenn die Benutzer tatsächlich nichts tun, können Sie Folgendes tun:
cat /etc/passwd | cut -f 1 -d : >/tmp/users.list
Bearbeiten Sie dann /tmp/users.list so, dass nur die gewünschten Benutzer enthalten sind. Dann mach:
Bei vielen Redhat-basierten Distributionen wird jedoch beim ersten Anmelden ein neues Ausgangsverzeichnis erstellt, sofern dieses in / etc / passwd angegeben ist, in dem sich das Verzeichnis befinden soll.
Um das zu testen, machen Sie ein "su -" und prüfen Sie, ob es "das Richtige" tut. Wenn dies nicht der Fall ist, funktioniert das obige Skript meiner Meinung nach recht gut.
quelle
for i in $(awk -F: '{print $1 }' /etc/passwd)
Auch können Sie verwenden
mkhomedir_helper
quelle
sudo /sbin/mkhomedir_helper dka
? Das/home
Verzeichnis gehört demroot
Benutzer, und so würde ich mir vorstellen, dass man root sein muss, um ein Unterverzeichnis davon zu erstellen.Sie müssen das Benutzerverzeichnis manuell erstellen. Dies erfordert drei Schritte:
/etc/passwd
, normalerweise gibt es bereits einen / home / login-Eintrag.Und schließlich die richtigen Berechtigungen festlegen:
mkdir /home/YOU
cd /home/YOU
cp -r /etc/skel/. .
chown -R YOU.YOURGROUP .
chmod -R go=u,go-w .
chmod go= .
Übrigens: Ich vermisse immer auch die
-m
Option für useradd. Zumindest Debian-basierte Systeme sollten einenadduser
Befehl haben, den ich gegenüber useradd empfehle. Wenn Sie die-m
Option verpasst haben, ist es möglicherweise auch empfehlenswert, sie zu prüfendeluser
und den Benutzer mit den richtigen Optionen neu zu erstellen.Bearbeiten:
-r
Zum Kopieren von Verzeichnissen hinzugefügt .quelle
public_html
muss zumindestx
etwas eingestellt werden, würde ichchmod 0711
bei jedem Hauspublic_html
ähnliche Verzeichnisse als Standard empfehlen .cp -r /etc/skel/.*
kehren Sie in / etc / zurück und kopieren Sie alle Daten von hier (/etc/skel/.* entspricht / etc / skel / .. Ich gehe davon aus). Die Lösung von superuser.com/a/61619/22153 scheint zu funktionieren: cp -r / etc / skel / home / user (/ home / user darf nicht existieren, bevor der Befehl ausgeführt wird)*
mit.
(Punkt). So..
ist abgestimmt. Habe ich recht? Viele Shells deaktivieren dies aufgrund dieses Verhaltens standardmäßig. Welche Shell benutzt du?Das sollte der Trick sein, glaube ich
quelle
usermod: no changes
. und das Verzeichnis wird nicht erstellt. es funktioniert auch nicht mit der-m
Option.Sie können so etwas wie pam_mkhomedir verwenden , um zu verhindern, dass dies bei zukünftigen Benutzern zu Problemen führt . pam_mkhomedir ist ein PAM-Modul, das bei der Anmeldung automatisch ein Benutzerverzeichnis erstellt, falls es nicht vorhanden ist, und es mit Dateien aus / etc / skel (oder dem von Ihnen angegebenen Verzeichnis) auffüllt.
Dies ist auch ein gut skalierbarer Ansatz, da er dieses Problem weiterhin löst, wenn Sie Ihr Benutzer-Repository in Zukunft auf einen Verzeichnisdienst wie LDAP umstellen.
quelle
In meinem Fall war das Home-Volume beschädigt, und ich habe mich entschlossen, es von Grund auf neu zu erstellen, da nicht viele Daten erforderlich sind, ich aber die Anmeldeinformationen der Benutzer beibehalten möchte. Daher habe ich die Home-Verzeichnisse manuell mit diesem Skript neu erstellt:
quelle
Wenn Sie bearbeiten
/etc/login.defs
, um zu enthaltenDann werden automatisch Basisverzeichnisse für zukünftige Benutzer erstellt, sofern Sie das System nicht dazu auffordern.
Eine andere Möglichkeit besteht darin, PAM für Anmeldungen zu verwenden und das Modul pam_mkhomedir zu verwenden, um das Homedir bei der ersten Anmeldung automatisch zu erstellen.
quelle
Mein erster Schritt nach a
useradd
ist zusu - <user>
.Erstellt die Home-Verzeichnisse, kopiert Skelette usw. - zumindest auf der CentOS 4-Box mache ich das am häufigsten.
quelle
Loggen Sie sich mit dem Benutzer john ein und schreiben Sie aus einer Shell:
Das ist es! Verwenden Sie nicht sudo oder su, Sie benötigen keinen Root-Zugriff, um einige Verzeichnisse zu erstellen. Von einem Root-Konto aus können Sie Folgendes verwenden:
Auf diese Weise führen Sie den Befehl als john aus. Dies kann nützlich sein, wenn Sie den Fehler mit mehr als einem Benutzer gemacht haben.
quelle
Genau das macht der
mkhomedir_helper $USERNAME
Befehl.quelle
Sie könnten einfach / etc / passwd bearbeiten. Das vorletzte Feld ist das Basisverzeichnis des Benutzers.
quelle
oder
und lese
;)
quelle