システム全体でoh-my-zshをセットアップしたいのですが、これに対する「最良の」アプローチが何であるかわかりません。個人的な好みなどについて質問するつもりはありません。以下の解決策があるかどうかはわかりません。
ln
ローカルユーザーの構成が正しくないようです。ローカルcfgにエクスプロイトを追加して、root権限を取得するのは非常に簡単だからです。
Oh-my-zshを/etc
にインストールすることも、私が自分で書いたことがないため、セキュリティホールになる可能性があります。
自分の個人的な.zshrc
を書くだけでも、非常に時間がかかるため、試してみたい最後のアプローチになります。
何かお勧めはありますか?
公正な警告:これはDebianスタイルのLinuxを想定していますが、他の形式でも機能するはずです。これは、最初から始めていることも前提としています。
パート1、インストール:
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
ディレクトリに配置する必要があります。これは、システムが新しいユーザーのホームディレクトリを作成するときにコピーするファイルだからです。詳細については、 このシステム管理者ガイド を参照してください。
ユーザーのファイルをコピーします(Sudoが必要な場合があります)。
cp -r .oh-my-zsh /etc/skel/
cp .zshrc /etc/skel
これで、新しいユーザーを追加できるようになり、ユーザーはデフォルトで、必要なカスタムテーマを使用してoh-my-zshを使用できるようになります。
他のすべての既存のユーザーのシェルをzshに変更する場合は、 このserverfaultの質問 を読むことをお勧めします。
私が誤解しない限り、Calebからのマークされた答えは、.zshrcファイルをスケルディレクトリに追加して変更する通常のユーザーごとのインストール手順です。デフォルトの新規ユーザーシェル、ただし、実際には機能しないか、質問に実際に答えません各ユーザーstillにはohが必要なため-my-zsh dir/willそれでも、各ユーザーはoh-my-zsh dirを独自のフォルダーに複製する必要があります。つまり、システム全体に実際にはインストールされていません、自動的にzshrcファイルを提供し、デフォルトのシェルをzshに変更しますが、各ユーザーフォルダーにoh-my-zshがないと、エラーが発生します。
私が理解している質問から、oh-my-zshをインストールする方法を尋ねていますシステム全体別名、1つの場所にインストールし、新しいユーザーごとに手動でいじり回す必要はありません/のgitクローンを持っています各ユーザーディレクトリのoh-my-zsh。そうだとすれば、これが私が通常使用しているArch LinuxのAURパッケージに基づいて行ったことですが、centosサーバーで同じものを探していましたが、これはどのディストリビューションでも実行できます。 クレジットはMarcinWieczorekと他のメンテナに送られます、私は以下を適応させたので、Arch以外のディストリビューションでも同じことができます。
すでに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 -)"
ステップ#
インストールを/ 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
これがtrue oh-my-zshのインストールであり、すべての新規ユーザーが/ usr/share/oh-my-zsh/zshrc設定で自動的に適用され、他の手順は必要ありません。
その他の注意事項
oh-my-zshを使用している既存のユーザーの場合:
cp /usr/share/oh-my-zsh/zshrc ~/.zshrc
あまり横行せず、より便利で、私が信じているように、より良い方法は次のとおりです。最初に次のことを行います。
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
だけ。