web-dev-qa-db-ja.com

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

システム全体でoh-my-zshをセットアップしたいのですが、これに対する「最良の」アプローチが何であるかわかりません。個人的な好みなどについて質問するつもりはありません。以下の解決策があるかどうかはわかりません。

  • lnローカルユーザーの構成が正しくないようです。ローカルcfgにエクスプロイトを追加して、root権限を取得するのは非常に簡単だからです。

  • Oh-my-zshを/etcにインストールすることも、私が自分で書いたことがないため、セキュリティホールになる可能性があります。

  • 自分の個人的な.zshrcを書くだけでも、非常に時間がかかるため、試してみたい最後のアプローチになります。

何かお勧めはありますか?

17
toogley

公正な警告:これは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の質問 を読むことをお勧めします。

9
Caleb Adams

私が誤解しない限り、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
    
  • / usr/share/oh-my-zsh/zshrcで新しいユーザーOMZのデフォルトを設定できます
  • 自動更新は無効になっています新しいユーザーには/ usr/share/oh-my-zshファイルを更新する権限がないため[.____]
    • oh-my-zshを更新するには/usr/share/oh-my-zsh /にcdして、「Sudogitpull」を実行します。
  • Oh-my-zshキャッシュは、〜/ .oh-my-zsh-cache /(自動作成)の下の各ユーザーディレクトリ内でユーザーごとに処理されます。
16
cFINNY

あまり横行せず、より便利で、私が信じているように、より良い方法は次のとおりです。最初に次のことを行います。

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に変更します。

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

既存のユーザーごとに、それぞれのアカウントからcp /etc/skel/.zshrc ~/.zshrcだけ。

7
TNT