0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 1 year has passed since last update.

EC2・Linuxでpreztoを全ユーザで使えるようにする。

Posted at

はじめに

前回の記事zshのフレームワークとなるpreztoを改めて触っていたらLinuxEC2でも一般ユーザ・root問わずに使えたら便利だなと思いやってみました。

インストール手順の整理

以下公式の手順だと実行ユーザーのホームディレクトリにgit cloneでソースをダウンロードしてシンボリックリンクを設定するやり方となっていますが、その場合、ユーザを作成するごとに毎回git cloneで持ってくることになるため、同じソースが散乱し精神衛生上よろしくありません。

そのため、1つのソースを共有しユーザが増えたとしても対応できるようにインストール手順を変更しようと思います。

元々公式の手順で行っていることは単純なので以下の流れで全ユーザ対応を行います。

今回はAmazon Linux 2のEC2インスタンスにインストールする場合を紹介するので、他のLinuxにインストールする場合は適宜読み替えて対応してください。

EC2事前作業

Amazon Linux 2のEC2インスタンスにインストールする場合、zshgitもインストールされていないので、インストールします。

zshインストール
sudo yum -y install zsh
gitインストール
sudo yum -y install git

preztoのダウンロード

preztoのソースをgit cloneでダウンロードしてきます。

公式ページの手順だとzshに変更してから行っていますが、今回は特に変更する必要はありません。

ダウンロード場所は、ユーザのホームディレクトリではなく、全ユーザと共有するので、/usr/local/binにでもダウンロードしておきます。

また、元ソースとなるpreztoは隠しファイルにする必要も無いので、「.(ドット)」も外しています。

preztoのダウンロード
sudo git clone --recursive https://github.com/sorin-ionescu/prezto.git "/usr/local/bin/zprezto"

新規ユーザ用設定

新規ユーザが追加されたとしてもpreztoが有効になるように以下作業を実施していきます。

必要ファイルのコピー

新規作成ユーザもすぐにpreztoを使えるようにするため、必要なファイルを/etc/skelにコピーしておきます。

本来はユーザのホームディレクトリ配下にpreztoのソースをダウンロードして、ダウンロードソースにシンボリックリンクを作成する方法となりますが、今回はpreztoのソースを共有しているため、preztoの設定に関わる各種ファイルは個々のユーザごとに変更できるよう、設定ファイルをそのままコピーしておきます。

zshインストールにより、/etc/skel/.zshrcが作成されているかと思われますが、上書きコピーしてください。

必要ファイルのコピー
sudo cp /usr/local/bin/zprezto/runcoms/zlogin /etc/skel/.zlogin
sudo cp /usr/local/bin/zprezto/runcoms/zlogout /etc/skel/.zlogout
sudo cp /usr/local/bin/zprezto/runcoms/zpreztorc /etc/skel/.zpreztorc
sudo cp /usr/local/bin/zprezto/runcoms/zprofile /etc/skel/.zprofile
sudo cp /usr/local/bin/zprezto/runcoms/zshenv /etc/skel/.zshenv
sudo cp /usr/local/bin/zprezto/runcoms/zshrc /etc/skel/.zshrc

シンボリックリンクの作成

preztoのソースディレクトリへのシンボリックリンクを作成します。

preztoのソースディレクトリへのシンボリックリンク作成
sudo ln -s /usr/local/bin/zprezto /etc/skel/.zprezto

テスト用ユーザの作成とプロンプト確認

上記で作業を行った/etc/skelに各種ファイルの格納とシンボリックリンクを作成しておくことで、新規ユーザ作成時に/etc/skelに格納されているファイルが新規ユーザのホームディレクトリにコピーされるので、テスト用のユーザを作成し、preztoが使える状態になっているか確認します。

テスト用ユーザの作成
sudo useradd -s /bin/zsh testuser

テスト用ユーザ作成後、テスト用ユーザにログインしてみて、preztoのデフォルトプロンプトが表示されればOKです。

テスト用ユーザへのスイッチ
sudo su - testuser

Monosnap_20230225_173646.png

終わったらテスト用ユーザは削除しておきましょう。

テスト用ユーザの削除
sudo userdel -r testuser

現行ユーザ用設定

すでに作成済みの現行ユーザもpreztoを有効にするために以下作業を実施していきます。

現行ユーザへの必要ファイルのコピー

上記までの手順で新規ユーザに対してはprezto対応することができましたが、既存のユーザに対しては対応できていないため、先程と同等の作業を現行ユーザに対しても行います。

必要ファイルのコピー
sudo cp /usr/local/bin/zprezto/runcoms/zlogin /home/ec2-user/.zlogin
sudo cp /usr/local/bin/zprezto/runcoms/zlogout /home/ec2-user/.zlogout
sudo cp /usr/local/bin/zprezto/runcoms/zpreztorc /home/ec2-user/.zpreztorc
sudo cp /usr/local/bin/zprezto/runcoms/zprofile /home/ec2-user/.zprofile
sudo cp /usr/local/bin/zprezto/runcoms/zshenv /home/ec2-user/.zshenv
sudo cp /usr/local/bin/zprezto/runcoms/zshrc /home/ec2-user/.zshrc
cp /usr/local/bin/zprezto/runcoms/zlogin /root/.zlogin
cp /usr/local/bin/zprezto/runcoms/zlogout /root/.zlogout
cp /usr/local/bin/zprezto/runcoms/zpreztorc /root/.zpreztorc
cp /usr/local/bin/zprezto/runcoms/zprofile /root/.zprofile
cp /usr/local/bin/zprezto/runcoms/zshenv /root/.zshenv
cp /usr/local/bin/zprezto/runcoms/zshrc /root/.zshrc

現行ユーザへのシンボリックリンクの作成

現行ユーザに対してもシンボリックリンクの作成を行います。

preztoのソースディレクトリへのシンボリックリンク作成
ln -s /usr/local/bin/zprezto /home/ec2-user/.zprezto
sudo ln -s /usr/local/bin/zprezto /root/.zprezto

現行ユーザのログインシェル変更

設定が終わったので、rootec2-userのログインシェルをbashからzshに変えておこうと思います。

Amazon Linux 2のEC2にはpreztoの公式ページに書かれているchshコマンドが無いので、usermodでログインシェルを変更します。

rootとec2-userのログインシェル変更
sudo usermod -s /bin/zsh ec2-user
sudo usermod -s /bin/zsh root

変更したら/etc/passwdのログインシェル欄が/bin/zshに書き換わっているか確認します。

ログインシェル変更の確認
egrep "^root|^ec2-user" /etc/passwd
コマンド結果
root:x:0:0:root:/root:/bin/zsh
ec2-user:x:1000:1000:EC2 Default User:/home/ec2-user:/bin/zsh

現行ユーザのプロンプト確認

上記までの作業で現行ユーザもpreztoが使えるようになっているので、プロンプトが変わるかを確認します。

zshと入力し、preztoのデフォルトプロンプトが表示されればOKです。

ec2-userのプロンプト確認
zsh

rootユーザにも切り替えてpreztoのデフォルトプロンプトが表示されればOKです。

rootのプロンプト確認
sudo su -

おわりに

今回はpreztoの設定と言うよりはLinuxの知識となりましたが、.zpreztorc等の設定ファイルをユーザごとに分けているため、あるユーザはデフォルトのsolinテーマを使用し、あるユーザはagnosterテーマを使用するといったことができるようになりました。

ただし、テーマ自体の設定ファイルは共有ディレクトリ内のファイルとなるため、前回の記事で実施したテーマ自体の書き換えを各ユーザごとに行いたいといった場合はさすがに個別にpreztoをダウンロードする必要がありますが、そのようなレアケースでなければ今回の手順で十分かと思います。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?