15
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

sudoのパーミッションを変更してsudoが使えなくなった

Last updated at Posted at 2019-09-23

経緯

先日、/usr/bin/sudoのパーミションを変更してしまったために、sudoが使えなくなりました。
sudoを使用した際のエラーは以下のようになります。

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

経緯としましては、ローカルPCの/usr/bin/以下のとある実行ファイルのパーミッションを変更しようとしたところ、(面倒くさいので) chmod 777 * -R/user/bin以下で行ってしまいました。
その中には /usr/bin/sudoがおり、こいつは変更してはいけなかったのです。

色々調べて解決を試みましたが、最終的に諦めたので、自戒の念を込めて調べたことを残しておきます。

症状

まずバージョンですがUbuntu 18.04を使っていました。

$ cat /etc/lsb-release 
DISTRIB_ID=Ubuntu
DISTRIB_RELEASE=18.04
DISTRIB_CODENAME=bionic
DISTRIB_DESCRIPTION="Ubuntu 18.04.3 LTS"

/etc/usr/sudo を誤って変更した後には、sudoを利用すると以下のようなエラーがでます。

(英語)sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
(日本語)sudo: 実効 uid が 0 ではありません、sudo は setuid root を設定してインストールされていますか

修正方法1

1つめの修正方法はrootユーザーでログインしてパーミッションを変更しましょうというものです。
ただしrootユーザーのパスワードが事前に設定されている必要があります。

# rootユーザーに変更
su
# 権限変更
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo

残念ながらデフォルトではrootユーザーはパスワードをもっていないので、特別設定してなければsudoなしにrootユーザーになれないかと思います。私もそうでした。

修正方法2

修正方法の2つめはリカバリーモードを利用してパーミッションを変更するという方法です。

再起動時にShiftキーかEscキーを押しっぱなしにするとGrabのブートメニューが表示されると思います。
Selection_950.png
この中の Advanced options for Ubuntuを選び、その後 Ubuntu 18.04 (recovery mode)のようにRecovery Modeを選んで下さい。
そうしたら、別のスクリーンが立ちがりますので、 Drop to root shell promptを選んで下さい。
コマンドラインのスクリーンが現れたと思います。そしたら以下のコマンド打って、パーミッションの変更を行って下さい。

mount -o remount,rw /
mount –all
chown root:root /usr/bin/sudo
chmod 4755 /usr/bin/sudo

最後にrestartでPCを再起動します。

修正方法3

OS再インストール。

筆者はrootユーザーのパスワードを設定してなかったので、修正方法2のリカバリーモードによる解決を試みました。
しかし、再起動時にShiftやEscをいくら押しても、Grubのブートメニューが表示されないという問題にあたりました。
調べてみると、Grabの起動メニューの表示時間が0秒設定されているということがわかりました。
設定箇所は /etc/default/grabの中の GRUB_TIMEOUTの設定値です。

/etc/default/grab
...
GRUB_TIMEOUT=0
...

Ubuntu 18.04からこの設定がデフォルトのようです(そういえば昔14.04使っているときはブートメニューが毎回表示されていた気がする)。

これのせいで起動メニューが表示されなくなっていますので、この時間設定値を変更するなり、この設定をコメントアウトなりする必要があります。

しかし…このファイルの所有者はrootユーザーなんです。
sudoがないと編集できないんです。

詰んだ…

となりました。

泣く泣く諦めて、次回構築時はTIMEOUT設定を3秒にしておくことを誓って、OS再インストールとなりました。

以上

15
7
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
15
7

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?