web-dev-qa-db-ja.com

Sudo su-rootとSudo -u root -H / bin / bashの間に違いはありますか?

タイトルが言うように、これらの2つのコマンドには違いがありますか?

Sudo su - root
Sudo -u root -H /bin/bash

それが違いを生むなら、私はGNU/Linuxを使っています。

3
David

Rootになりたい場合は、Sudo -iが最善の方法です。これは、初期ログインをシミュレートします(rootログインに関連付けられたすべてのパスと変数を提供します)。 rootユーザーを取得せずにログインしたい場合。filesを使用すると、Sudo suを使用できます(rootユーザーを指定する必要はありません)。

9
Mike D
su - # causes the user to run a login Shell aka bash --login
     # the same as if the user had logged in as the root from the login Prompt

Sudo su -Sudo su - rootと同じで、ルートが冗長であることを指定します。

Sudo -u root -H /bin/bash-u rootは冗長です。Sudoはデフォルトでrootとして実行されますが、-H /bin/bashはsudoerとして実行され、env vars Sudo_USER、Sudo_UIDおよびSudo_COMMANDは呼び出し元の名前/ uidとbashです。

ただし、この場合、bashはログインシェルとして実行されません。

7
bsd

ルートシェルが/ bin/bashでない場合、明らかに異なる可能性があります。これは、小さなLinux環境または組み込みLinux環境で可能です。または、従来のBSDシステムでは、ルートユーザーに/ bin/[t] cshを使用します。また、 `su-'は、端末に関連するいくつかの変数を除くすべての環境を削除します。環境でのSudoの動作は構成可能です(/ etc/sudoersのenv_resetを参照)。だから、細心の注意を払ってください...

2
Netch

リストした2つのコマンドの最大の違いは、su -は、シェルをログインシェルにします。つまり、ルートのシェルのログインスクリプトが実行され(bashの場合、たとえば.bash_profile)、PWDが$ HOMEに設定され、ユーザー環境の特定の部分が初期化されます。 Sudo bashは、ターゲットユーザーのシェルとして新しいシェルを実行するだけで、-Hは1つの変数$ HOMEをターゲットユーザーのホームディレクトリに初期化するだけです。他の変数は設定されず、Sudoポリシーで定義されているように、一部は新しいシェルに引き継がれます。

0
jsbillings