Как я могу получить безопасную общесистемную конфигурацию 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, и никаких других шагов не требуется.

Разное Примечания

  • Для любых ранее существовавших пользователей с oh-my-zsh:

    cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
    
  • Вы можете установить новый пользовательский OMZ по умолчанию в /usr/share/oh -my-zsh/zshrc
  • Автоматические обновления отключены, поскольку новые пользователи не имеют прав на обновление файлов /usr/share/oh -my-zsh
    • Для обновления oh-my-zsh просто cd в/usr/share/oh-my-zsh/и запустите 'sudo git pull'
  • Кэш oh-my-zsh будет обрабатываться для каждого пользователя в каждом пользовательском каталоге в ~/.oh-my-zsh-cache/(автоматически создан)

Ответ 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 из соответствующей учетной записи.