linux - 与 root 用户共享点文件

标签 linux shell root sudo dotfiles

当前方法

实际上,我正在使用符号链接(symbolic link)与根用户共享我的一些点文件:

ln -s ~user/.vimrc  /root/
ln -s ~user/.zshenv /root/
ln -s ~user/.zlogin /root/
ln -s ~user/.zshrc  /root/

前一种方法

之前,我使用 sudo 命令和 -E 来保护环境。因此,root 用户在交互式 shell 中使用标准用户主目录并读取相应的点文件。

它有效,但是:

  1. 一些文件可以在标准用户目录中创建,所有者为 root
  2. 有些命令不允许(或警告我)使用所有者不是当前用户的目录中的文件(这显然是出于安全原因)。因此,以 root 身份执行这些命令是有问题的。

更好的方法?

最简单的方法是将共享设置放在系统范围的配置文件中(/etc/zshrc、/etc/vimrc)。

但我想将所有设置保留在我的主目录中,在那里我可以使它们与 Git 远程存储库保持同步。这样,我可以轻松地将它们部署到新计算机上。

由于我目前的方法很乏味,而前者令人愉快但有问题, 有没有更好的方法让 root 使用我当前的配置文件?

最佳答案

我通常做的是在 git 存储库中包含一个部署脚本。然后我使用 sudo 调用该脚本。然后该脚本使用 root 凭据运行并在 root 帐户或全局更新点文件。

我让安装脚本尽可能轻便,除了 shell 和核心实用程序(所以没有 rsync)之外没有依赖项。

关于linux - 与 root 用户共享点文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42366638/

相关文章:

cron - 如何以与根 cronjob 不同的用户身份运行命令?

sql - PostgreSQL - 从失败的 shell 创建用户和数据库

mysql - 我可以在没有 root 访问权限的情况下更改 OpenShift 中的 my.inf 吗?

regex - 如何批量将前置年份移动到文件名的末尾?

linux - 我如何绑定(bind)C-?在狂欢中?

linux - 用于查找最新文件匹配模式的 Bash 函数

linux - 使用 SNMP 协议(protocol)通过 SNMP 命令运行脚本会给出不同的输出,因为脚本独立执行

linux - 我如何使用 sed 执行此替换?

linux - 如何从 jenkins shell 输出中隐藏密码

linux - 如何从终端打开 xterm 窗口并从 xterm 在后台运行命令?