我有主用户,例如,dave
有主目录/home/dave
。它有很多可运行各种程序的配置,例如vim
,bash
等等。当我以root
用户身份登录时,由于 root 有单独的主目录,因此所有配置都无法使用:/root
。
我不打算在我的计算机上安装任何其他用户。那么将root
用户主目录更改为dave
一个目录有什么缺点吗?
答案1
是的,很多。
- 以 root 身份运行的任何修改配置或状态的程序
$HOME
都将更新 的内容/home/dave
,这可能会导致修改后的文件最终归 root 所有,而这反过来又会使您在不是 root 的情况下无法修改它们(这可能会破坏某些程序(vim
大多数 shell 是主要例子,命令历史记录最终只能由 root 使用)。 - 理论上,任何具有写权限的人
/home/dave
都可以以 root 身份轻松运行命令。请记住,许多 CLI 工具都有启动文件,$HOME
这些文件跑步,而不仅仅是在启动它们时进行解析。.bashrc
和.vimrc
是简单的例子,它们都允许任何可以写入它们的人以执行用户的权限bash
或vim
以使用它们的方式运行任意命令。 - 出于安全原因,有些内容
/root
不应被其他用户读取。最典型的例子是 SSH 或 GPG 密钥之类的内容,但还有其他内容。/root
与另一个主目录合并使得确保这些机密保持机密变得更加困难。请注意,这就是/root
存在的原因,旧的 UNIX 系统只是用作/
root 的主目录,这会向其他用户泄露大量信息。 - 配置文件中的任何错误配置
/home/dave
都会导致用户无法dave
登录,同时也会导致 root 用户无法登录。这使得任何配置更改的风险更大。
请注意,第二点和第三点是潜在的严重安全问题,即使在单用户系统上也是如此。请始终记住,任何设法获得以您的用户身份运行代码的能力的攻击都可以做您的用户可以做的任何事。
如果您的目标只是在整个系统中共享配置,那么您可以通过使用 下的配置文件(/etc
而不是主目录中的配置文件)来避免上述所有问题(除了最后一个问题)。这些是系统范围的默认配置,因此修改它们会修改系统上所有人的配置。几乎所有具有某种形式的配置(并非本质上特定于用户的配置)的交互式 CLI 工具都在 下有配置文件/etc
。
答案2
我会谨慎行事并添加每个命令重定向。
您可以通过两种方式执行此操作:
- 逐个对配置文件进行符号链接,例如
vim
:sudo ln -s /home/dave/.viminfo /root/.viminfo
- 在每个命令前面添加
HOME=/home/dave
。您可以在文件中创建别名,.bashrc
这样就不必考虑它了:echo "alias vim='HOME=/home/dave vim'" | sudo tee -a /root/.bashrc
答案3
如果您的目的是将文件编辑为root
,只需使用sudoedit
(我相信它相当于sudo -e
)。
该命令将在临时文件中打开您的编辑器,成功退出后该文件将替换原始文件。(Vim 的:cquit
命令可用于使退出“失败”。)
至于 shell,我建议保留其基本配置。它会提醒您不要长时间以 root 身份登录。如果必须,请使用目录/etc
或其他方式专门配置 root。但不要链接文件。