linux - 我怎样才能获得安全的系统级 oh-my-zsh 配置?

标签 linux shell unix zsh oh-my-zsh

我想要一个系统范围的 oh-my-zsh 设置,但我不确定什么是“最佳”方法。我无意询问个人喜好之类的问题,我只是不确定以下解决方案是否是:

  • ln 我的本地用户配置在某处似乎不正确,因为向我的本地 cfg 添加漏洞并因此获得 root 权限非常容易。

  • 将 oh-my-zsh 安装到 /etc 也可能是一个安全漏洞,因为我根本没有自己编写它。

  • 简单地编写我自己的 .zshrc 是我最不想尝试的方法,因为它非常耗时。

有什么建议吗?

最佳答案

除非我误解了 Caleb 的标记答案只是正常的每用户安装步骤,将 .zshrc 文件添加到 skel 目录并更改默认的新用户 shell,但它实际上并没有工作,也没有真正回答问题,因为每个用户仍然需要 oh-my-zsh 目录/仍然需要每个用户克隆 oh- my-zsh 目录进入他们自己的文件夹意味着它并没有真正安装在系统范围内,它只是自动给他们一个 zshrc 文件并将默认 shell 更改为 zsh,但是如果每个用户文件夹中没有 oh-my-zsh 它将出错出。

根据我对这个问题的理解,它问的是如何安装 oh-my-zsh system-wide 也就是把它安装在一个地方,而不需要在每个新用户上手动乱搞/有一个每个用户目录上的 oh-my-zsh 的 git 克隆。假设是这种情况,这就是我基于 Arch Linux 的 AUR 包所做的,我通常使用但在 centos 服务器上寻找相同的包,但是这可以在任何发行版上完成。 归功于 MarcinWieczorek 和其他维护者,我只是调整了下面的内容,所以可以在非架构发行版上做同样的事情。

如果您已经在 root 上安装了 oh-my-zsh,请跳到第 3 步。这不是特定于发行版的,只是使用 zshrc 的 AUR 补丁文件


第 1 步

当然要安装zsh


第 2 步

像往常一样以 root 身份安装 oh-my-zsh(显示 wget 方法,参见 Calebs 的替代答案)

sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"

第 3 步

将安装移动到/usr/share 所以是系统范围的

#Copy zsh files to /usr/share for all uer access 
mv /root/.oh-my-zsh /usr/share/oh-my-zsh
# Move into the dir and copy the zshrc template to zshrc (which will be the default for users)
cd /usr/share/oh-my-zsh/
cp templates/zshrc.zsh-template zshrc
# Nab the patch file from MarcinWieczorek's AUR Package and apply to the zshrc file
wget https://aur.archlinux.org/cgit/aur.git/plain/0001-zshrc.patch\?h\=oh-my-zsh-git -O zshrc.patch && patch -p1 < zshrc.patch

现在 oh-my-zsh 已全局安装,用户只需要那个 zshrc 文件。所以现在是 Caleb 的答案出现的地方,尽管只需执行以下操作,因为/etc/adduser.conf 仅在 debian 上,而以下应该是独立于发行版的。


第 4 步

将其设置为新用户的默认值

# Create hard link to the zshrc file so it creates an actual independent copy on new users
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc
# Set default shell to zsh
sudo adduser -D -s /bin/zsh

现在这是 oh-my-zsh 的 true 安装,所有新用户都会自动应用/usr/share/oh-my-zsh/zshrc 设置,不需要其他步骤。

杂项笔记

  • 对于任何使用 oh-my-zsh 的现有用户:

    cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
    
  • 您可以在/usr/share/oh-my-zsh/zshrc 中设置新用户 OMZ 默认值
  • 禁用自动更新,因为新用户没有更新/usr/share/oh-my-zsh 文件的权限
    • 要更新 oh-my-zsh 只需 cd 到/usr/share/oh-my-zsh/并运行“sudo git pull”
  • oh-my-zsh 缓存将在 ~/.oh-my-zsh-cache/下的每个用户目录中按用户处理(自动创建)

关于linux - 我怎样才能获得安全的系统级 oh-my-zsh 配置?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31624649/

相关文章:

c - 在C中使用系统调用执行 "which"命令

php - 使用 PHP Trader 函数的问题 : Call to undefined function trader_ma()

linux - wine 不适用于 cron

python - 如何使用 openpyxl 将 Excel 作为电子邮件附件发送而不保存 [On The Fly]

c - 为什么 open() 创建的文件权限与 touch 不同?

ruby - Ruby 能否访问出现的 shell 命令的输出?

shell - Clearcase 多文件重命名

python - 使用 Linux 从 Python 终止 FFMPEG

linux - 引用参数字符串 Shell

bash - ffmpeg 命令在 python 中使用时出错