
sudo
を使用するものと使用するものに違いはありますかsu -c
?他の代わりに1つを使用する必要がある状況はありますか?
私は以前Ubuntuを使っていて、sudo
どこにいるかのように見えましたが、今Fedora 15を試していますsu -c
。まだ時々sudo
使用されていることがわかりますが、そうです。
答え1
sudo
との違いはsu
認証を行う方法です。
su
ターゲットユーザーのパスワードを求めるメッセージを表示します。sudo
ソースユーザーにコマンドを実行する権限があることを確認してください(権限はに指定されています/etc/sudoers
)。設定によっては、元のユーザーのパスワードを求めるプロンプトが表示されることがあります。これは、コンソールを無人状態にするリスクを減らし、特権の昇格が進行中であることをユーザーに警告します。
権限が付与されると、効果は同じです。 rootでコマンドを実行します(またはコマンドラインで指定されている場合は別のユーザーとして)。
より微妙な違いがあります。同じオプションを使用せず、まったく同じ方法で実行するコマンドの環境を設定しません。 「コマンド」の意味は若干異なります。 forはsu -c
ターゲットユーザーのシェルによって実行される文字列ですが、forにはsudo
オプションがなく、パラメータで実行されるプログラムです。しかし、一般的な使用法では同じです。
答え2
意味によって異なります。
これsu
は、呼び出されたプロセスが実際のターゲットユーザーではないことを知りたくないことを意味します。マニュアルページでは、常にoptionを選択することをお勧めしますsu --login
。
使用法はsudo
まさに反対を意味します。プロセスに自分が実際に誰であるかを知らせるために、sudo
新しい環境変数を設定することもできます。SUDO_UID
ちなみに、su
古代のUnixディスプレイマネージャまたはシェル設定ファイルの場合は、次のように設定します。いくつかの環境変数のみ(HOME
などPATH
)対話型シェルを呼び出す前に。この変数をリセットしますsu
。
しかし、最新の初期化システムは、より多くの環境変数を設定します。たとえば、Linux PAM設定XDG_RUNTIME_DIR
はリセットされませんsu
。したがって、su --login
実際のログインをシミュレートすることはできません。バラよりhttps://github.com/systemd/systemd/issues/7451#issuecomment-346787237