usermodでsudoを消し飛ばした話

プログラミング環境

こんにちは,お久しぶりです.

ブログカフェChromaの色です.

最近,Qiitaのとある恐ろしいAdvent Calendarを見つけました.

本番環境でやらかしちゃった人 Advent Calendar 2019 - Qiita
本番環境でやらかしちゃった人のアドベントカレンダーです。 例) * 本番DB吹き飛ばした * 本番サーバをデストロイした * ネットワーク設定をミスって本番サーバにアクセス出来なくなり、サーバが世界から孤立した などなど... 以下の2点については必須項目なので、記述お願いします。 *...

内容は,本番環境を壊したという恐ろしい経験を面白おかしく(?)懺悔するというものです.

私も将来こういう仕事をするかもしれないので,笑い半分,教訓半分で見てます.

ふと思い出したんですが,私にも軽度ですが似たような経験がありました.

本番環境ではないですが,皆さんの中で参考になればと思い,書いた次第です.

事件はいつも自己の慢心から

私はUNIXを触り始めてまだ日が浅いです.

それこそ2年たっていないくらい…

それでも,最近コマンドの使い方が分かってきたり,色んなディストロを触れるようになったりと,少しずつ詳しくなっている気でいました.

そんなある日,研究で使うためのアプリケーションを特権ではなく一般権限で使えるようにすることになりました.

これもいいことなのかわかりませんが…

要するに一々su -だったりsudoを使わなくていいようにしたいと.

アプリケーションには親切にそのための手順が記されていました.

ざっと読んだ感じ,どうやらusermodというコマンドで自分の所属グループを増やすといいようです.

早速google先生に質問をし,コマンドを叩いてみました.

$ usermod -G グループ名 ユーザ名

そして目的のアプリケーションを実行すると,無事一般ユーザ権限でも実行できました.

これで目的は達成,一安心のはずが…

やらかしは時間差で気づく

その後,ほぼ日令と化しているパッケージのアップデートをしようと思ったときのこと.

いつものようにsudo apt updateを叩いてenterを押すと

$ sudo apt update
(ユーザー名) は sudoers ファイル内にありません。この事象は記録・報告されます。

…え?

原因:sudoersから外れていた

最初は血の気が引きましたが,冷静に状況を考えてみることに.

この状況になる前,最後に行った変更…

usermodですよねえ.

この時点でなんとなくわかりました.自分がsudoersから外れたのだと

試しに自分の所属グループをgroupsコマンドで確認してみます.

$ groups

あー…sudoがない…

そこでusermodについて調べると,こんな感じでした.

-G group,[…]

ユーザが属する補助グループ(supplementary groups)のリスト。
グループはコンマで区切り、間に空白文字を入れてはならない。
指定できるグループには-gオプションと同様の制限がある。
現在そのユーザが、新しいリストにないグループのメンバーになっている場合は、その
グループから削除される。

man command – usermod

この-Gオプション,追加するグループだけを書けばいいわけではないんですね.

現在そのユーザが、新しいリストにないグループのメンバーになっている場合は、そのグループから削除される。

これは,コマンドで指定したグループでそのユーザのグループが上書きされてしまうということを意味しています.

つまり追加ではなく上書き.ちゃんと確認しなかったのがいけなかった.

ちなみに,グループを追加したい場合は,usermod -aGとしてappend(追加)すればOKです.

こちらもusermodのoptionsに記述がありました.

-a, –append
append the user to the supplemental GROUPS mentioned by the -G option without removing him/her from other groups

-Gと一緒に使えばいいって書いてある…

解決:rootになってgpasswdでsudoを戻す

今回の環境は,rootになることが出来たので幸いしました.

解決方法としては,root権限を取得し,gpasswdというコマンドでsudo権限を当該ユーザに戻すということを行いました.

まずrootになります.

$ su -
パスワード:
#

次に,gpasswdコマンドで当該ユーザをsudoグループに追加します.

# gpasswd -a ユーザ名 sudo
Adding user ユーザ名 to group sudo

-aオプションは,グループにユーザを追加するものです.

反省点:初めて使うコマンドは下調べを入念に

今回の反省は下調べ不足に尽きます.

初めて使うコマンドについては,一度その機能をしっかりと調査するようにします.

これがrm -rfとかその類の失敗でなくてよかった…

特にオプションについてはmanコマンドや検索などでしっかり機能を確認しましょう.私も確認します.

コメント

タイトルとURLをコピーしました