www. On IT Road .com
恢复主目录下的文件
- 例如,如果 .bash_profile 文件从用户的主目录中删除,如下所示。
$ rm ~/.bash_profile # ls -lart /etc/skel total 32 drwxr-xr-x 4 root root 4096 Nov 4 2016 .mozilla -rw-r--r-- 1 root root 124 Nov 15 2017 .bashrc -rw-r--r-- 1 root root 18 Nov 15 2017 .bash_logout drwxr-xr-x. 3 root root 4096 Aug 22 2017 . drwxr-xr-x. 112 root root 12288 Nov 26 03:09 ..
2.要恢复原来的.bash_profile文件,复制“骨架”目录下的默认文件:
$ cp /etc/skel/.bash_profile ~/ # ls -lart ~/ total 32 drwxr-xr-x 4 root root 4096 Nov 4 2016 .mozilla -rw-r--r-- 1 root root 124 Nov 15 2017 .bashrc -rw-r--r-- 1 root root 176 Nov 15 2017 .bash_profile -rw-r--r-- 1 root root 18 Nov 15 2017 .bash_logout drwxr-xr-x. 3 root root 4096 Aug 22 2017 . drwxr-xr-x. 112 root root 12288 Nov 26 03:09 ..
注意:在相应的用户权限下复制文件。
如果通过 root 用户复制文件,则需要手动更改所有权和文件权限。
解决方案
将用户的主目录恢复为默认值需要 2 个重要的文件/目录。
它们主要是:
- /etc/skel 目录
- /etc/default/useradd
skel 目录
目录 /etc/skel/(skel 派生自“骨架”)用于在首次创建用户时启动主目录。
“骨架”用户文件的示例布局:
# ls -lart /etc/skel total 32 drwxr-xr-x 4 root root 4096 Nov 4 2016 .mozilla -rw-r--r-- 1 root root 124 Nov 15 2017 .bashrc -rw-r--r-- 1 root root 176 Nov 15 2017 .bash_profile -rw-r--r-- 1 root root 18 Nov 15 2017 .bash_logout drwxr-xr-x. 3 root root 4096 Aug 22 2017 . drwxr-xr-x. 112 root root 12288 Nov 26 03:09 ..
注意:“骨架”目录在 /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
从头开始恢复整个主目录
让我们看看如何为用户恢复整个主目录。
出于本示例的目的,我们将删除 user1 的主目录。
- 检查用户 UID 和 GID:
$ id user1 uid=54324(user1) gid=54325(user1) groups=54325(user1)
- 通过root权限删除用户家目录和用户:
# rm -rf /home/user1
- 将/etc/skel 目录中的所有文件复制到用户主目录中。
# cp -r /etc/skel/* ~/
# ls -lart /home/user1/ total 32 drwxr-xr-x 4 root root 4096 Nov 4 2016 .mozilla -rw-r--r-- 1 root root 124 Nov 15 2017 .bashrc -rw-r--r-- 1 root root 176 Nov 15 2017 .bash_profile -rw-r--r-- 1 root root 18 Nov 15 2017 .bash_logout drwxr-xr-x. 3 root root 4096 Aug 22 2017 . drwxr-xr-x. 112 root root 12288 Nov 26 03:09 ..
问题
如果不小心改变了用户家目录下文件的上下文或者文件权限,则该用户登录系统后可能会遇到权限错误或者应用程序意外行为。
比如/home/user1/.bash_profile文件权限错误,登录user1会提示“/home/user1/.bash_profile: Permission denied”:
login as: user1 user1@onitroad's password: Last login: Mon Dec 15 15:08:20 2014 from onitroad2.example.com -bash: /home/user1/.bash_profile: Permission denied -bash-3.2$
这篇文章指导如何将用户主目录下的文件/子目录恢复为默认值。
恢复home目录下的子目录
例如,要恢复子目录 .mozilla,请使用 -recursive (-r) 选项复制它:
$ cp -r /etc/skel/.mozilla/ ~/
日期:2020-09-17 00:13:48 来源:oir作者:oir