我想要一个系统范围的 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/