Как я могу получить безопасную общесистемную конфигурацию oh-my-zsh?
Я хотел бы иметь общесистемную настройку oh-my-zsh, но я не уверен, что будет "лучшим" подходом для этого. Я не собираюсь спрашивать о личных предпочтениях или тому подобное, я просто не уверен, что решения ниже:
-
ln
моей конфигурации локального пользователя где-то кажется неправильным, потому что добавить эксплойт в мой локальный cfg и, следовательно, получить права root, было бы очень легко.
-
Установка oh-my-zsh в /etc
может быть дырой в безопасности, потому что я просто не написал ее сам.
-
Простое написание моего личного .zshrc
было бы последним подходом, который я хотел бы попробовать, потому что он очень трудоемкий.
Любые рекомендации?
Ответы
Ответ 1
Ярмарка Предупреждение: это предполагает стиль Linux в стиле Debian, но это также должно работать и с другими формами. Это также предполагает, что вы начинаете с нуля.
Часть 1, установка:
Вам нужно будет установить систему zsh по ширине, а не только для одного пользователя. (возможно, вы уже это сделали, но я включу его только для того, чтобы быть исчерпывающим)
убедитесь, что вы установили zsh, просто: sudo apt-get install zsh
Следуйте инструкциям oh-my-zsh install или вы можете:
использовать завиток
sh -c "$(curl -fsSL https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh)"
использовать wget
sh -c "$(wget https://raw.githubusercontent.com/robbyrussell/oh-my-zsh/master/tools/install.sh -O -)"
Часть 2, настройка zsh при добавлении новых пользователей:
Вам нужно будет сделать так, чтобы новые пользователи по умолчанию задавали zsh. В вашем файле /etc/adduser.conf
отредактируйте строку, в которой говорится:
DSHELL=/bin/sh
в
DSHELL=/bin/zsh
Вы также должны изменить его для файла /etc/default/useradd
, изменить строку:
SHELL=/bin/sh
в
SHELL=/bin/zsh
Часть 3, настройте свою собственную тему.
У меня есть собственный файл темы (здесь), который я хотел, чтобы все пользователи в системе имели. Во-первых, вы должны добавить файл в папку .oh-my-zsh/themes
:
cp your_custom_style.zsh-theme ~/.oh-my-zsh/themes
Затем отредактируйте файл .zshrc
в своем домашнем каталоге, измените ZSH_THEME="default"
на ZSH_THEME="your_custom_style"
Затем перезагрузите файл .zshrc
с помощью . ~/.zshrc
Часть 4, создавая новые домашние каталоги пользователей.
Нам нужно разместить любые файлы, которые нужны новым пользователям в каталоге /etc/skel
, потому что это то, что система копирует при создании нового домашнего каталога пользователя. Подробнее см. это руководство администратора sys.
Скопируйте свои пользовательские файлы (вам может понадобиться sudo):
cp -r .oh-my-zsh /etc/skel/
cp .zshrc /etc/skel
Теперь вы сможете добавлять новых пользователей, и они будут иметь oh-my-zsh by по умолчанию с любой настраиваемой темой, которую вы хотите иметь.
Если вы хотите изменить всю существующую оболочку пользователя на zsh, я бы рекомендовал прочитать этот вопрос о сервере.
Ответ 2
Если я не понимаю, заметный ответ от Caleb - это обычная процедура установки для каждого пользователя с добавлением файла .zshrc в каталог skel и изменение оболочки нового пользователя по умолчанию , но на самом деле это не работать или действительно отвечать на вопрос, потому что каждый пользователь по-прежнему требует, чтобы oh-my-zsh dir/все равно требовал, чтобы каждый пользователь клонировал директорию oh-my-zsh в свою собственную папку, что означает, что она не установлена на системной основе, это просто автоматически дает им файл zshrc и изменяет оболочку по умолчанию на zsh, но без oh-my-zsh в каждой папке пользователя она будет ошибочной.
Из того, что я понимаю в вопросе о том, как установить oh-my-zsh общесистемный, он установил его в ОДНОМ месте и не требует ручного возиться с каждым новым пользователем/иметь git клон oh-my-zsh для каждого пользователя. Предполагая, что случай, вот что я сделал на основе Arch Linux AUR Package, который я обычно использую, но искал то же самое на сервере centos, однако это можно сделать на любом дистрибутиве. Кредит отправляется MarcinWieczorek и другим сопровождающим, я только что адаптировал ниже, поэтому могу сделать то же самое на неархивных дистрибутивах.
Если у вас уже установлен oh-my-zsh на root, просто перейдите к шагу 3. Это не зависит от дистрибутива, просто использует файл AUR Patch для zshrc
Шаг # 1
Установить zsh, конечно
Шаг # 2
Установите oh-my-zsh как root как обычно (показывает метод 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 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. поэтому NOW - это то, где приходит ответ Калеба, хотя просто делайте ниже, так как /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
Теперь, когда установка true oh-my-zsh со всеми новыми пользователями, автоматически использующая ее с настройками /usr/share/oh -my-zsh/zshrc, и никаких других шагов не требуется.
Разное Примечания
Ответ 3
Менее безудержный, более удобный и, как я считаю, лучший способ был бы следующим. Сначала сделайте следующее:
sudo git clone https://github.com/robbyrussell/oh-my-zsh.git /etc/oh-my-zsh
sudo cp /etc/oh-my-zsh/templates/zshrc.zsh-template /etc/skel/.zshrc
sudo mkdir -p /etc/skel/.oh-my-zsh/cache
Отредактируйте /etc/skel/.zshrc
:
# this line at the beginning of the file (line 5 currently)
export ZSH=$HOME/.oh-my-zsh
# has to be:
export ZSH=/etc/oh-my-zsh
export ZSH_CACHE_DIR=~/.oh-my-zsh/cache
Затем отредактируйте /etc/default/useradd
и измените строку SHELL=...
на SHELL=/bin/zsh
.
Это в основном все. (zsh
и git
должны быть конечно установлены.)
Для каждого уже существующего пользователя просто cp/etc/skel/.zshrc ~/.zshrc
из соответствующей учетной записи.