it-swarm.com.de

Erstellen Sie Home-Verzeichnisse, nachdem Sie Benutzer erstellt haben

Ich habe einige Benutzer erstellt mit:

$ useradd john

und ich habe vergessen, den Parameter -m anzugeben, um das Ausgangsverzeichnis zu erstellen und die Skelettdateien auf jeden Benutzer kopieren zu lassen. Jetzt möchte ich das tun und 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 zuzuweisen, alle Skelettdateien zu kopieren und sie dem entsprechenden Benutzer zuzuweisen. Wenn es jedoch einen Befehl wie useradd -m gibt, der den Benutzer nicht erneut erstellt, sondern die Verzeichnisse erstellt, ist dies besser.

72
cd1

Das klingt vielleicht nach einer dummen Idee, aber wenn die Benutzer eigentlich nichts tun, können Sie Folgendes tun:

cat /etc/passwd | cut -f 1 -d : >/tmp/users.list

Bearbeiten Sie dann /tmp/users.list, um nur die gewünschten Benutzer zu enthalten. Dann mach:


for i in `cat /tmp/users.list`
do
    userdel $i
    useradd -m $i
done

Bei vielen Redhat-basierten Distributionen wird jedoch beim ersten Anmelden ein neues Ausgangsverzeichnis erstellt, sofern in/etc/passwd angegeben ist, wo sich das Verzeichnis befinden soll.

Um das zu testen, machen Sie ein "su -" und sehen Sie, ob es "das Richtige" tut. Wenn nicht, wird das obige Skript ganz gut funktionieren, denke ich.

17
dotwaffle

Sie können auch mkhomedir_helper Verwenden.

Usage: /sbin/mkhomedir_helper <username> [<umask> [<skeldir>]]
105
Rahul Patil

Sie müssen das Benutzerverzeichnis manuell erstellen. Dies erfordert drei Schritte:

  1. Erstellen Sie ein Verzeichnis gemäß /etc/passwd, normalerweise gibt es bereits einen/home/login-Eintrag.
  2. Kopieren Sie die Anfangsdateien aus/etc/skel
  3. 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 die -m Option auch für useradd. Zumindest Debian-basierte Systeme sollten einen adduser -Befehl haben, den ich über useradd empfehle. Wenn Sie -m Option Es kann auch sinnvoll sein, deluser in Betracht zu ziehen und den Benutzer dann mit den richtigen Optionen neu zu erstellen.

Bearbeiten: Hinzugefügt -r zum Kopieren auch von Verzeichnissen.

18
math
mkdir -p /home/john
chown john:john /home/john
usermod -d /home/john john

Das sollte den Trick machen, glaube ich

14
David Rickman

Sie können so etwas wie pam_mkhomedir verwenden, um zu verhindern, dass dies in Zukunft ein Problem für Benutzer darstellt. pam_mkhomedir ist ein PAM-Modul, das beim Anmelden automatisch das Basisverzeichnis eines Benutzers erstellt, wenn es nicht vorhanden ist, und es mit Dateien aus/etc/skel (oder einem von Ihnen angegebenen Skel-Verzeichnis) füllt.

Dies ist auch ein gut skalierbarer Ansatz, da er dieses Problem weiterhin lösen wird, wenn Sie Ihr Benutzer-Repository in Zukunft auf einen Verzeichnisdienst wie LDAP umstellen.

9
jgoldschrafe

In meinem Fall war das Home-Volume beschädigt und ich habe beschlossen, es einfach von Grund auf neu zu erstellen, da nicht viele Daten erforderlich sind. Ich möchte jedoch die Anmeldeinformationen der Benutzer beibehalten. Daher habe ich die Home-Verzeichnisse manuell mit diesem Skript neu erstellt:

#!/bin/bash
cat /etc/passwd | while IFS=: read n x i g c d r
do
  # my system has uid started at 1000, but has nfsnobody at 65534:
  if [[ "$i" -ge 1000 && "$i" -le 65000 && ! -x "$d" ]]
  then
    cp -av /etc/skel "$d"
    chown -R "$i:$g" "$d"
    # may needed in SELinux system:
    restorecon -R "$d"
    # add your chmod as your need:
    chmod -R o-rw "$d"
  fi
done

Wenn Sie /etc/login.defs enthalten

CREATE_HOME yes

dann werden automatisch Home-Verzeichnisse für zukünftige Benutzer erstellt, es sei denn, Sie weisen das System nicht an, dies zu tun.

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.

2
Jenny D

Mein erster Schritt nach einem useradd ist su - <user>.

Erstellt die Home-Verzeichnisse, kopiert Skelette usw. - zumindest auf der CentOS 4-Box mache ich das am häufigsten.

0
warren

Melden Sie sich mit dem Benutzer John an und schreiben Sie von einer Shell:

xdg-user-dirs-update

Das ist es! Verwenden Sie kein Sudo oder su, Sie benötigen keinen Root-Zugriff, um einige Verzeichnisse zu erstellen. Von einem Root-Konto aus können Sie Folgendes verwenden:

Sudo -u john xdg-user-dirs-update

Auf diese Weise führen Sie den Befehl als John aus. Dies kann hilfreich sein, wenn Sie den Fehler mit mehr als einem Benutzer gemacht haben.