GNU/Linux >> Linux の 問題 >  >> Linux

システム全体の安全な oh-my-zsh 構成を取得するにはどうすればよいですか?

私が誤解していない限り、Caleb からのマークされた回答は、通常のユーザーごとのインストール です。 skel dir に .zshrc ファイルを追加し、デフォルトの新規ユーザー シェルを変更する手順を実行しますが、実際には機能しないか、実際には質問に答えません なぜなら、各ユーザーはまだ oh-my-zsh dir が必要です/ 各ユーザーが oh-my-zsh dir を自分のフォルダーに複製する必要があります。つまり、実際にはシステム全体にインストールされていません 、自動的に zshrc ファイルを提供し、デフォルトのシェルを zsh に変更しますが、各ユーザー フォルダーに oh-my-zsh がないとエラーになります。

質問について私が理解していることから、oh-my-zsh system-wide をインストールする方法を尋ねています 別名、1か所にインストールし、新しいユーザーごとに手動でいじったり、各ユーザーディレクトリにoh-my-zshのgitクローンを作成したりする必要はありません。その場合、これは私が通常使用する Arch Linux の AUR パッケージに基づいて行ったことですが、centos サーバーで同じものを探していましたが、これはどのディストリビューションでも実行できます。 MarcinWieczorek と他のメンテナに感謝 、以下を適応させただけなので、非アーキテクチャ ディストリビューションでも同じことができます。

すでに oh-my-zsh がルートにインストールされている場合は、ステップ 3 に進みます。これはディストリビューション固有ではなく、zshrc 用の AUR パッチ ファイルを使用するだけです

ステップ #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'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 ファイルだけを必要とします。 /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 をインストールすると、すべての新規ユーザーが /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 を更新するには /usr/share/oh-my-zsh/ に cd して「sudo git pull」を実行するだけです
  • oh-my-zsh キャッシュは、~/.oh-my-zsh-cache/ (自動作成) の下の各ユーザー ディレクトリ内でユーザーごとに処理されます

公正な警告:これは Debian スタイルの Linux を想定していますが、他の形式でも同様に動作するはずです。これは、ゼロから始めることも前提としています。

パート 1 、インストール:

1 人のユーザーだけでなく、システム全体に zsh をインストールする必要があります。 (すでにこれを行っているかもしれませんが、包括的にするために含めます)

zsh がインストールされていることを確認してください:sudo apt-get install zsh

oh-my-zsh インストール ガイドに従うか、次のいずれかを行います。

カールを使用

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 に新しいユーザーに持たせたいファイルを配置する必要があります これは、システムが新しいユーザーのホーム ディレクトリを作成するときに、このディレクトリがコピーされるためです。詳細については、このシステム管理ガイドを参照してください。

ユーザーのファイルをコピーします (sudo が必要な場合があります):

cp -r .oh-my-zsh /etc/skel/
cp .zshrc /etc/skel 
<ブロック引用>

これで、新しいユーザーを追加できるようになり、デフォルトで oh-my-zsh が設定され、必要なカスタム テーマが設定されます。

他のすべての既存ユーザーのシェルを zsh に変更したい場合は、この serverfault question を読むことをお勧めします。


Oh-My-Zsh をシステム全体にインストールしたい場合、最小数のファイルを上書きする便利な方法は次のとおりです。

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 を編集 :

  • export ZSH=$HOME/.oh-my-zsh を編集します (現在は 5 行目)
  • 行を次のように変更します:
      export ZSH=/etc/oh-my-zsh
      export ZSH_CACHE_DIR=~/.oh-my-zsh/cache

次に /etc/default/useradd を編集します 行 SHELL=... を変更します SHELL=/bin/zsh へ .

基本的にはこれですべてです (もちろん、git と zsh は既にインストールされている必要があります)。

既存のユーザーを更新するには:ユーザーとしてログインし、cp /etc/skel/.zshrc ~/.zshrc

更新: これを編集しないでください。完全に失敗した編集をロールバックしました!


ROOT としてログイン

ステップ 1:ZSH をインストールする

# Download and extract ZSH

wget https://github.com/zsh-users/zsh/archive/zsh-5.8.tar.gz -P /tmp/demo/zsh
cd /tmp/demo/zsh
tar -xvzf zsh-*
cd zsh-zsh-5.8

# configure and make

sudo ./Util/preconfig
sudo ./configure
sudo make && sudo make install


# Add ZSH to the list of shells

echo /usr/local/bin/zsh | sudo tee -a /etc/shells

ステップ 2:oh-my-zsh をインストールする

# If you're running the Oh My Zsh install script as part of an automated install, 
# you can pass the flag --unattended to the install.sh script.
# This will have the effect of not trying to change the default shell, and also won't
# run zsh when the installation has finished.

sh -c "$(curl -fsSL https://raw.githubusercontent.com/ohmyzsh/ohmyzsh/master/tools/install.sh)" "" --unattended

# Add oh-my-zsh to /usr/share
mv /root/.oh-my-zsh /usr/share
mv /usr/share/.oh-my-zsh /usr/share/oh-my-zsh
mv /root/.zshrc /usr/share/oh-my-zsh
mv /usr/share/oh-my-zsh/.zshrc /usr/share/oh-my-zsh/zshrc

# Modify zshrc to point to /usr/share/oh-my-zsh

sed -i 's|export ZSH="'"$HOME"'/.oh-my-zsh"|export ZSH="\/usr\/share\/oh-my-zsh"|g' /usr/share/oh-my-zsh/zshrc

ステップ 3:追加機能 (オプション - 追加機能については下部をご覧ください)

ステップ 4:シンボリック リンクを作成する

# Create Symbolic Links to /etc/skel
sudo ln /usr/share/oh-my-zsh/zshrc /etc/skel/.zshrc

ステップ 5:root に oh-my-zsh を追加する

# Change shell to ZSH for root
echo "$USER" | chsh -s /usr/local/bin/zsh

ステップ 6:ユーザーに oh-my-zsh を追加する

# Change user
su - username

# Copy zshrc to $HOME for user
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc

# Change shell to ZSH for user  
echo "$USER" | chsh -s /usr/local/bin/zsh

または

sudo -i -u username bash << EOF
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
echo username | chsh -s /usr/local/bin/zsh
EOF

おまけ:

テーマをpowerlevel10kに変更

git clone --depth=1 https://github.com/romkatv/powerlevel10k.git ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/themes/powerlevel10k

sed -i 's/ZSH_THEME="robbyrussell"/ZSH_THEME="powerlevel10k\/powerlevel10k"/g' /usr/share/oh-my-zsh/zshrc

自動修正を有効にする

sed -i 's/# ENABLE_CORRECTION="true"/ENABLE_CORRECTION="true"/g' /usr/share/oh-my-zsh/zshrc

自動提案と構文の強調表示を有効にする

git clone --depth=1 https://github.com/zsh-users/zsh-autosuggestions ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/plugins/zsh-autosuggestions

git clone --depth=1 https://github.com/zsh-users/zsh-syntax-highlighting.git ${ZSH_CUSTOM:-/usr/share/oh-my-zsh/custom}/plugins/zsh-syntax-highlighting

sed -i 's/plugins=(git)/plugins=(\n  git\n  zsh-autosuggestions\n  zsh-syntax-highlighting\n)/' /usr/share/oh-my-zsh/zshrc

sed -i 's/plugins=(git)/plugins=(git)\nZSH_DISABLE_COMPFIX=true/' /usr/share/oh-my-zsh/zshrc

Nord dircolors を追加

git clone --depth=1 https://github.com/arcticicestudio/nord-dircolors.git /tmp/demo/dircolors

mv /tmp/demo/dircolors/src/dir_colors /usr/share/
cd /usr/share/
mv /usr/share/dir_colors /usr/share/.dir_colors

tee -a /usr/share/oh-my-zsh/zshrc >/dev/null <<'EOF'
test -r "/usr/share/.dir_colors" && eval $(dircolors /usr/share/.dir_colors)
EOF

Linux
  1. Ubuntu 16.04 –セキュアブートを無効にするにはどうすればよいですか?

  2. .svn ディレクトリを無視するように `find` を取得するにはどうすればよいですか?

  3. CMake で別の Boost インストールを見つけるにはどうすればよいですか?

  1. Linuxでキーボードの状態を取得するにはどうすればよいですか?

  2. メイン関数が返したものを取得するにはどうすればよいですか?

  3. CPU使用率を取得する方法

  1. Bashの配列から一意の値を取得するにはどうすればよいですか?

  2. psを印刷グループにするにはどうすればよいですか?

  3. maven を実行しているマシンの一時フォルダーを取得するにはどうすればよいですか?