権限のトラブルシューティング

Oracle Cloud InfrastructureでOracle Linuxインスタンスを実行できない場合は、次の情報を確認します。

"sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit"エラーでrootユーザーへのsudoが失敗する

opcユーザーとしてOracle Linuxインスタンスに接続し、rootユーザーに切り替えようとすると、次のエラーが表示されます。

[opc@<oracle-linux-instance-name> ~]$ sudo su - 

sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set

この問題は、sudoバイナリの所有権および権限が変更され、/usr/bin/sudoファイルがrootによって所有されている必要があるため、バイナリを実行できない場合に発生します。

この問題を修正するには、sudoパッケージ内のファイルのユーザーおよびグループの所有権および権限を、RPMデータベースで定義されている元の値にリセットする必要があります。

  1. コマンドラインから、管理権限を使用してSSHを使用してインスタンスに接続します。
  2. 現在のsudo所有者および権限を確認します。
    ll /usr/bin/*sudo*
    -r--------. 1 opc opc 247512 Jan 23 2023 /usr/bin/cvtsudoers
    -r--------. 1 opc opc 151424 Jan 23 2023 /usr/bin/sudo
    lrwxrwxrwx. 1 root root 4 Jun 13 2023 /usr/bin/sudoedit → sudo
    -r--------. 1 opc opc 57456 Jan 23 2023 /usr/bin/sudoreplay
  3. sudoパッケージ内のファイルのユーザーおよびグループ所有権を元の値にリセットします。
    rpm --setugids sudo
  4. sudo権限を再チェックします。
    ll /usr/bin/*sudo*
    -r--------. 1 root root 247512 Jan 23 2023 /usr/bin/cvtsudoers
    -r--------. 1 root root 151424 Jan 23 2023 /usr/bin/sudo
    lrwxrwxrwx. 1 root root 4 Jun 13 2023 /usr/bin/sudoedit → sudo
    -r--------. 1 root root 57456 Jan 23 2023 /usr/bin/sudoreplay
  5. sudoパッケージ内のファイルの権限をリセットします。
    rpm --setperms sudo
  6. sudo権限を再チェックします。
    ll /usr/bin/*sudo*
    -rwxr-xr-x. 1 root root 247512 Jan 23 2023 /usr/bin/cvtsudoers
    ---s--x--x. 1 root root 151424 Jan 23 2023 /usr/bin/sudo
    lrwxrwxrwx. 1 root root 4 Jun 13 2023 /usr/bin/sudoedit → sudo
    ---x--x--x. 1 root root 57456 Jan 23 2023 /usr/bin/sudoreplay
  7. opcユーザーからrootユーザーに切り替えることができることを確認します。
    [opc@<oracle-linux-instance-name> ~]$ sudo su -
    
    [root@<oracle-linux-instance-name> ~]$