Das Problem
Wenn versehentlich der Kontext oder die Dateiberechtigung von Dateien im Home-Verzeichnis des Benutzers geändert wurde, können nach diesem Benutzeranmeldesystem Berechtigungsfehler oder unerwartetes Anwendungsverhalten auftreten.
Wenn beispielsweise die Dateiberechtigung von /home/user1/.bash_profile falsch ist, erhält der Anmeldebenutzer1 die Eingabeaufforderung „/home/user1/.bash_profile:Permission denied“:
login as: user1 user1@geeklab's password: Last login: Mon Dec 15 15:08:20 2014 from geeklab2.example.com -bash: /home/user1/.bash_profile: Permission denied -bash-3.2$
In diesem Beitrag erfahren Sie, wie Sie Dateien/Unterverzeichnisse im Home-Verzeichnis des Benutzers auf die Standardwerte zurücksetzen.
Die Lösung
Es gibt 2 wichtige Dateien/Verzeichnisse, die erforderlich sind, um das Home-Verzeichnis des Benutzers auf den Standardwert zurückzusetzen. Dies sind hauptsächlich:
1. /etc/skel-Verzeichnis
2. /etc/default/useradd
Das skel-Verzeichnis
Verzeichnis /etc/skel/ (skel ist von „skeleton“ abgeleitet) wird verwendet, um das Home-Verzeichnis zu initiieren, wenn der Benutzer zum ersten Mal erstellt wird. Ein Beispiellayout von „Skelett“-Benutzerdateien:
# ls -lart /etc/skel total 32 drwxr-xr-x 4 root root 4096 Feb 4 2016 .mozilla -rw-r--r-- 1 root root 124 Feb 15 2017 .bashrc -rw-r--r-- 1 root root 176 Feb 15 2017 .bash_profile -rw-r--r-- 1 root root 18 Feb 15 2017 .bash_logout drwxr-xr-x. 3 root root 4096 Aug 22 2017 . drwxr-xr-x. 112 root root 12288 Feb 26 03:09 ..Hinweis :Das Verzeichnis „Skelett“ ist in der Datei /etc/default/useradd definiert.
# cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
Stellen Sie eine Datei im Home-Verzeichnis wieder her
1. Zum Beispiel, wenn die Datei .bash_profile aus dem Home-Verzeichnis des Benutzers entfernt wird, wie unten gezeigt.
$ rm ~/.bash_profile # ls -lart /etc/skel total 32 drwxr-xr-x 4 root root 4096 Feb 4 2016 .mozilla -rw-r--r-- 1 root root 124 Feb 15 2017 .bashrc -rw-r--r-- 1 root root 18 Feb 15 2017 .bash_logout drwxr-xr-x. 3 root root 4096 Aug 22 2017 . drwxr-xr-x. 112 root root 12288 Feb 26 03:09 ..
2. Um die ursprüngliche .bash_profile-Datei wiederherzustellen, kopieren Sie die Standarddatei aus dem „skeleton“-Verzeichnis:
$ cp /etc/skel/.bash_profile ~/ # ls -lart ~/ total 32 drwxr-xr-x 4 root root 4096 Feb 4 2016 .mozilla -rw-r--r-- 1 root root 124 Feb 15 2017 .bashrc -rw-r--r-- 1 root root 176 Feb 15 2017 .bash_profile -rw-r--r-- 1 root root 18 Feb 15 2017 .bash_logout drwxr-xr-x. 3 root root 4096 Aug 22 2017 . drwxr-xr-x. 112 root root 12288 Feb 26 03:09 ..Hinweis :Kopieren Sie die Datei unter dem entsprechenden Benutzerrecht. Wenn Sie die Datei über den Root-Benutzer kopiert haben, müssen Sie anschließend den Besitz und die Dateiberechtigung manuell ändern.
Stellen Sie ein Unterverzeichnis im Home-Verzeichnis wieder her
Um beispielsweise ein Unterverzeichnis .mozilla wiederherzustellen, kopieren Sie es mit der Option –recursive (-r):
$ cp -r /etc/skel/.mozilla/ ~/
Gesamtes Home-Verzeichnis von Grund auf neu wiederherstellen
Lassen Sie uns sehen, wie wir das gesamte Home-Verzeichnis für einen Benutzer wiederherstellen können. Für dieses Beispiel löschen wir das Home-Verzeichnis von user1.
1. Benutzer-UID und -GID prüfen:
$ id user1 uid=54324(user1) gid=54325(user1) groups=54325(user1)
2. Löschen Sie das Home-Verzeichnis des Benutzers und den Benutzer mit Root-Rechten:
# rm -rf /home/user1
3. Kopieren Sie alle Dateien aus dem Verzeichnis /etc/skel in das Home-Verzeichnis des Benutzers.
# cp -r /etc/skel/* ~/
# ls -lart /home/user1/ total 32 drwxr-xr-x 4 root root 4096 Feb 4 2016 .mozilla -rw-r--r-- 1 root root 124 Feb 15 2017 .bashrc -rw-r--r-- 1 root root 176 Feb 15 2017 .bash_profile -rw-r--r-- 1 root root 18 Feb 15 2017 .bash_logout drwxr-xr-x. 3 root root 4096 Aug 22 2017 . drwxr-xr-x. 112 root root 12288 Feb 26 03:09 ..