私は Mac OSX で zsh を実行していますが、ターミナルで root ユーザーに切り替えたい場合があります。
すべてのドットファイル、環境パス構成、スクリプトを通常のユーザーから保持し、多くの作業を root として実行したいと思います。
私はこれまで、ルートに切り替える簡単な方法としてsudo bash
または を実行してきましたsudo zsh
が、これには、通常のユーザー用に持っているすべての zsh 設定が実行されないという欠点があります。
一連のコマンドを実行するために「root になる」最適な方法と、通常のユーザーのすべての構成/環境設定を保持する方法は何ですか?
たとえば、私は通常のユーザー用に次のものをカスタマイズしましたが、これらすべてを root ユーザーにも利用できるようにしたいと考えています。
- .zshrc
- ~/bin
- .エイリアス
- 入力用のvimモード
編集: 頻繁に「root として実行」すべきではないことは承知しています。実際、私はそうしていません。しかし、時々、いくつかの簡単なコマンドを root として常に実行する必要があるため、この用途のためだけに tmux 分割を開いています。
答え1
sudo
通常のドットファイルを取得するには、環境変数が変更されないように注意してくださいHOME
。これが発生するかどうかは、sudoのコンパイル時および実行時の構成によって異なります。 を保持するにはHOME
、sudoers
ファイルを編集し( を実行しvisudo
、このファイルを直接編集しないでください)、次の内容が含まれていることを確認します。
Defaults !always_set_home, !set_home
Defaults env_keep+=HOME
(コンパイル オプションによっては、これらの一部は不要な場合があります。) もちろん、 は実行しないでくださいsudo -i
。
ただし、root としてやりすぎるのは避けてください。たとえば、エディターを root として実行する代わりに、 を使用しますsudoedit
。
答え2
おそらく、あなたはこれをしたくないでしょう。
ルート ユーザーが通常ユーザーのドット ファイルを参照している場合、それらのドット ファイルの権限が変更される可能性があり、通常ユーザーにとって状況が複雑になる可能性があります。
代わりに、ログインするたびにファイルをルート ユーザーのホーム ディレクトリにコピーすることもできます。
~/.zshenv (root 用) のどこかにファイルをコピーして、権限を調整します。こうすることで、環境を正常な状態に保ち、カスタマイズを使用できるようになります。
個人的には、複数のルート コマンドを実行したいのですが、ユーザーの環境を保持してみるsudo su -
こともできます。sudo -E su -p
必須の警告です!
逃げる理由なんてないsudo su
。より良いsudo
すべてのコマンドの前にを実行します。そうは言っても、sudo su
時々は実行します。しかし、一般的なルールは を実行しないことですsudo su
。