zsh-newuser-installをrootとして実行しないのはなぜですか?

zsh-newuser-installをrootとして実行しないのはなぜですか?

私のユーザーシェルはですが、zshrootに移動する必要がある場合がありますが、シェルのカスタマイズ(プロンプト、エイリアスなど)が提供されない場合があります。だから、これらすべてを追加するには、全体のシェルを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など)を追加することをお勧めします。これの利点は、ルートのシェルが影響を受けないため破損しないため、他のシェルのエラーが原因でログインを更新できないことです。別のオプションは、ルートの小さな部分以上をルートで作業する必要があるときです。コマンド、ただ実行

sudo -Es2 サム

通常のrcファイルを使用してzshをrootとして起動し、$ HOMEは通常のホームディレクトリを指します。

zshフレームワーク(oh my zshなど)を使用すると、安全に無効にできる安全でない依存関係の完了ディレクトリなどの警告が表示されるようになりました。

関連情報