Il problema
Se il contesto o l'autorizzazione ai file dei file nella directory home dell'utente sono stati modificati accidentalmente, potrebbero verificarsi errori di autorizzazione o comportamenti imprevisti dell'applicazione dopo questo sistema di accesso utente.
Ad esempio, se l'autorizzazione del file di /home/user1/.bash_profile è errata, l'utente di accesso1 riceverà il messaggio "/home/user1/.bash_profile:Permesso negato":
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$
Questo post spiega come ripristinare i file/sottodirectory nella directory home dell'utente ai valori predefiniti.
La soluzione
Ci sono 2 file/directory importanti che sono necessari per ripristinare la home directory dell'utente ai valori predefiniti. Sono principalmente:
1. /etc/directory skel
2. /etc/default/useradd
La directory skel
Directory /etc/skel/ (skel è derivato dallo "scheletro") viene utilizzato per avviare la directory home quando l'utente viene creato per la prima volta. Un layout di esempio di file utente "scheletro":
# 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 ..Nota :la directory "scheletro" è definita nel file /etc/default/useradd.
# cat /etc/default/useradd # useradd defaults file GROUP=100 HOME=/home INACTIVE=-1 EXPIRE= SHELL=/bin/bash SKEL=/etc/skel CREATE_MAIL_SPOOL=yes
Ripristina un file nella directory home
1. Ad esempio, se il file .bash_profile viene rimosso dalla home directory dell'utente come mostrato di seguito.
$ 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. Per ripristinare il file .bash_profile originale, copia il file predefinito dalla directory "scheletro":
$ 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 ..Nota :copia il file con il privilegio utente corrispondente. Se il file viene copiato tramite l'utente root, in seguito è necessario modificare manualmente la proprietà e l'autorizzazione del file.
Ripristina una sottodirectory nella home directory
Ad esempio, per ripristinare una sottodirectory .mozilla, copiala con l'opzione –recursive (-r):
$ cp -r /etc/skel/.mozilla/ ~/
Ripristina l'intera home directory da zero
Vediamo come possiamo ripristinare l'intera home directory per un utente. Ai fini di questo esempio, cancelleremo la home directory di user1.
1. Controlla l'UID e il GID utente:
$ id user1 uid=54324(user1) gid=54325(user1) groups=54325(user1)
2. Elimina la directory home dell'utente e l'utente tramite il privilegio di root:
# rm -rf /home/user1
3. Copia tutti i file dalla directory /etc/skel nella directory home dell'utente.
# 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 ..