以下は失敗します。
sudo -u chris ls /root
ls: cannot open directory '/root': Permission denied
次は成功します。
sudo ls /root
...
なぜそうなのか理解できません。 root権限を持つことに加えて、-u
/ runningユーザーを指定されたパラメータに変更すると問題が解決されると仮定します。$USER
この行動の理由は何ですか?
答え1
sudo -u chris
chris
rootの代わりにuserとして指定されたコマンドをUSER
実行しますchris
。したがって、chris
アクセスできない場合/root
はsudo -u chris
変更されません。
バラよりman sudo
:
- ゆう ユーザー、- ユーザー=ユーザー
デフォルトのターゲットユーザーではなくユーザーとしてコマンドを実行します(通常根)。
sudo
これは特に「rootとして実行」ツールではなく、「他のユーザーまたはグループとして実行」ツールです。
答え2
Sudoコマンドは、デフォルトでは、ルートという特定のユーザーとして実行されます。この-u
オプションは、この場合はrootではなくユーザーを選択するため、常にrootという意味ではありません。ルートになるには、コマンドsudo
(たとえばsudo chown chris:chris ~
)を実行するか、そのコマンドを使用してsu
ユーザーをrootに切り替えてから、シャットダウンを実行してユーザーに戻ることができます。
答え3
Sudo:S上層ゆうセレする ユーザーにシステムコマンドを実行する権限を付与する方法。
Chrisがホストならこれを試してください
sudo -h chris ls -l /root
-h, --help ヘルプメッセージの表示と終了
-h、--host = hostホストでコマンドを実行する(プラグインがサポートしている場合)
drwxr-xr-x 2 root root 4096 Jan 18 23:52 Desktop
drwxr-xr-x 2 root root 4096 Jan 18 23:52 Documents
drwxr-xr-x 2 root root 4096 Jan 18 23:52 Downloads
または、「ルート」を削除することもできます。
sudo -u chris ls -l /
左右右右右右右右1ゲンゲン 2018年1月7日 20:32 bin -> usr/bin
~からhttp://www.linfo.org/root_directory.html
「ルートディレクトリは、システム内の他のすべてのディレクトリとファイルを含み、次のように表示されるUnix系オペレーティングシステムのディレクトリです。スラッシュ( / )。
この場合、ディレクトリがディレクトリツリー図「」の上にあるため、「ルート」という単語が使用されます。