私のユーザーシェルはですが、zsh
rootに移動する必要がある場合がありますが、シェルのカスタマイズ(プロンプト、エイリアスなど)が提供されない場合があります。だから、これらすべてを追加するには、全体のシェルをzsh
。
しかし、驚くべきことに、シェルをに変更した後、ユーザーには良いことは生成されませzsh
んでした。オンラインを見た後、関数でエラーが発生する.zshrc
ことがわかりました。zsh-newuser-install -f
hostname: # zsh-newuser-install -f
zsh-newuser-install: won't run as root. Read the manual.
だからそうしましたが、私に新しいものは何も教えてくれませんでした。
~から手動:
現在設定されているように、この機能はユーザーにroot権限があるとすぐに終了します。この動作はオーバーライドできません。
それは私に言わないなぜ、しかし。 「zsh
根を作り出すのがどれほど難しいか」 ウサギの洞窟を降りていくと、.zshrc
これまで以上に気になります。
私のユーザーをコピーできますが、.zshrc
なぜ作成されないのですか?
答え1
Linuxの私の素朴な経験からわかるように、このような警告が表示されるたびに深刻なセキュリティの脆弱性がある可能性が高く、それを探す必要があります。ここで「マニュアルを読む」とは、「マニュアルを参照してそれが何をしているのかを確認し、この作業をrootで実行したときに起こりうる結果と実際にそれが価値があるかどうかを理解すること」を意味すると思います。
それでは、問題のZSHスクリプトにはどのような問題がありますか?
ZSHには、完成や自動ロードなどの強力な機能がたくさんあります。これらはすべてスクリプトベース。多くのスクリプトには、クリックすると、デフォルトでTabスクリプト
root
を完了するためにコンピュータへのフルルートアクセスを提供するサードパーティのソフトウェアパッケージが付属しています。私はZSH開発者が識別されていない複数のサードパーティコードへのrootアクセス権を与える責任を放棄したいと思いますが、それが正しいことだと思います。実際に root として実行される項目はできるだけ少なくてはなりません。これが
sudo
最近このイデオロギーが基本理念になった理由です。を実行すると、実行sudo
中のタスクはrootとして実行されますが、インフラストラクチャ(ターミナル、シェル、完成者、蛍光ペン)は権限のないユーザーとして実行されます。シェルを実行している場合は、root
ユーザー(および意図的であれ意図しないかを使用するすべてのツール)がすべてに制限なく完全にアクセスできることを認識することが重要です。粗くてシンプルで普通のシェルプロンプトは良い通知です。
これが私の心に最初に浮かぶものです。まだ考慮していない他の副作用があると99%確信しています。
答え2
他の人が指摘したように/bin/shでルートシェルを変更するのは良い考えではありません。 それでもUIDは0ですが、zshをシェルとして使用する別のアカウント(toorなど)を追加することをお勧めします。これの利点は、ルートのシェルが影響を受けないため破損しないため、他のシェルのエラーが原因でログインを更新できないことです。別のオプションは、ルートの小さな部分以上をルートで作業する必要があるときです。コマンド、ただ実行
通常のrcファイルを使用してzshをrootとして起動し、$ HOMEは通常のホームディレクトリを指します。
zshフレームワーク(oh my zshなど)を使用すると、安全に無効にできる安全でない依存関係の完了ディレクトリなどの警告が表示されるようになりました。