ルートアカウントが無効になっているシステムでルートシェルを起動するには、次のいずれかのコマンドを実行できます。
sudo -i
:対話型ログインシェルの実行(読み取り/root/.bashrc
と/root/.profile
)sudo -s
:非ログインインタラクティブシェルの実行(読み取り/root/.bashrc
)
sudo su
Ubuntuの世界では、これがルートシェルを取得する方法として提案されていることをよく見ています。 1つのコマンドで十分な場合に2つの別々のコマンドを実行するのはなぜですか?私が知っている限り、sudo -i
それは同等でsudo su -
同じsudo -s
ですsudo su
。
唯一の違いは次のとおりです(sudo -i
左とsudo su -
右の比較)。
sudo -s
(左)と(右)の比較sudo su
:
SUDO_foo
変数とを無視する主な違いは、バージョンのシステム変数LS_COLORS
のようです。XDG_foo
sudo su
ややエレガントでないケースを使うべき違いはありますかsudo su
?人々に走ることがまったく意味がないか、sudo su
何かを逃していると安全に言うことができますか?
答え1
質問で述べたように、最大の違いは環境です。
sudo su -
そしてsudo -i
sudo su -
ログインシェルの場合を実行すると、ルート/etc/profile
のホームディレクトリにあり、ルート環境を持つことになります。.profile
.bashrc
sudo -i
sudo su -
(初期ログインシミュレーション)オプションとほぼ同じで、ターゲット-i
ユーザーのパスワードデータベースエントリで指定されたシェルをログインシェルとして実行します。これは、ログイン固有のリソースファイル(たとえば.profile
、.bashrc
または).login
がシェルから読み取られ実行されることを意味します。
sudo su
そしてsudo -s
sudo su
sudo
コマンドとして呼び出されますsu
。 Bashはインタラクティブな非ログシェルとして知られています。したがってbash
、を実行する.bashrc
と、ルートに切り替えた後も同じディレクトリにまだ存在することがわかります。
user@host:~$ sudo su
root@host:/home/user#
sudo -s
$SHELL
変数を読み、内容を実行します。$SHELL
含まれている場合が/bin/bash
呼び出されますsudo /bin/bash
。つまり、/bin/bash
非ログインシェルで始まるので、ドットファイルは実行されませんが、bash
独自に読み込まれます。bashrc
ユーザーに電話をかけます。あなたの環境は変わりません。あなたの家はルートの家ではありません。したがって、あなたはrootですが、呼び出しユーザーのコンテキストにあります。
結論として
フラグが次に-i
追加されました。sudo
2004年sudo su -
はテンプレートsudo su -
と同様の機能を提供し、テンプレートとsudo -i
同じように機能するようになっています。環境が重要ではない場合、どのようなものを使用するかは重要ではないと思います。
次へ追加
ここで言及すべき基本は、sudo
実行専用に設計されていることです。コマンドより高い権限を持ち、その権限を元の権限に戻してください。それは決して現実になるつもりではなかった。変化ユーザーを選択し、ルートシェルを開いたままにします。このメカニズムは時間の経過とともに拡張されました。sudo
なぜすべてのコマンドの前にこのメカニズムが使用されるのかについて人々が迷惑をかけたからです。sudo
だから、その言葉の意味が間違ってsudo
使われました。sudo
ユーザーがroot権限の使用を最小限に抑えるようにするように設計されています。
私たちが今持っていることはますます普及しsudo
ています。ほとんどすべてのよく知られているLinuxディストリビューションに統合されています。別のユーザーアカウントに切り替えるための元のツールはですsu
。古い*nixベテランにとっては、そのようなものはsudo
不要に見えるかもしれません。これは複雑さを増し、Microsoftオペレーティングシステムのファミリで知られているメカニズムと同様に機能するため、* nixシステムの単純さのアイデアに反します。
sudo
私はベテランではありませんが、紹介されて以来私の脇腹にとげになったようで、sudo
可能であれば使い方を常に迂回しています。私は少なくともそれを使いたいですsudo
。私のすべてのシステムでrootアカウントが有効になっています。ただし、状況は変わり、いつかは廃止され、完全に置き換えsu
られるsudo
可能性があります。su
そのため、古いツールに頼るのではなく、sudo
内部メカニズム(-s
、)を使用する方が良いと思います。-i
su
答え2
あなたの質問に直接答えるには:いいえ、そうする理由はありません。また、sudo su は、1 つのログエントリで十分な場合に 2 つのログエントリを生成します。
私は多くの人がこれを行うのを見て、なぜそれを実行しないのか尋ねたとき、sudo -s
答えは彼らがsudoのフラグを知らず、一般的-s
に私が指摘した後に切り替えるということです。
しかし、あなたとsudo -s
リストに代わるsudo -i
オプションをもう1つ追加したいと思います。ホームディレクトリを含む環境を保存します。ホームディレクトリが安全でない場合(NFSでは)、これは危険です。ただし、多くの人がルートを使用している環境では、ルートファイルの内容に同意する必要はありません。鉱山にはルートの専門化がたくさん含まれているので、ルートとまったく同じ環境を得ることはできませんが、少なくとも私が望む環境は得られます。sudo -sE
su -m
sudo -sE
.bashrc
.bashrc