アメリエフの技術ブログ

Amelieff Staff Blog

【sudo】rootパスワードを知らなくて困った話【su】

今年の7/24はオリンピックの関係で「スポーツの日」という祝日があるんですね.
(世間知らずで申し訳ありません)
スポーツに因むと,私が信仰しているレアル・マドリーというスペインのフットボール宗教がありまして...

つい先日...


スペインの1部リーグで優勝しました!【祝】


コロナウイルスでリーグ戦は中断し,中断前はマドリーは2位でしたが,再開後は怒涛の10連勝で首位に!
しかも,再開以後は過密試合スケジュールで選手たちも私もハードワークでした(日本時間朝5:00にキックオフ)Hala Madrid!!!

というわけで,寝不足が落ち着いたh--ishiがブログを書きます!
本日の記事は取扱い注意なので,良い子や玄人以外は真似しないでください(笑)



先日,業務で自分がrootパスワードをしらないサーバー上でroot権限で実行しないといけないことがあり,こんなことがありました.

~回顧録【始】~

私「やらなきゃいけない作業があって権限の関係でできないんですけど...僕にrootパスワードは教えられませんよね?」
賢者「裏技を使うのじゃ!sudo suと打ち込んでみよ!」
私「sudo suってrootパスワード求められませんか!?」
賢者「いいから打ち込んでみよ!
私「わあ!ユーザーパスワードでrootに切り替えられてしまった!###」

~回顧録【終】~


この時は言われるがままだったので何も疑問に思いませんでしたが,後から思い返すと不思議で眠れなくなってきたので調べました.


この挙動を理解するには,使用している二つのコマンドsusudoについて理解する必要がありますね.
わかっているわ!と思われる方もいると思いますが,お付き合いください.

- su:
ログインユーザーを切り替えるコマンド(substitute の略)
su [UserName] で指定したユーザーに切り替えることができる(指定したユーザーのログインパスワードが求められる).
何も指定しないとrootユーザーに切り替わる(root ユーザーのパスワードが求められる).


- sudo:
superuserでdoする!(ルー大柴さんみたいですね)と僕は思っていたのですが,substiute user で doする!で覚えたほうがよさげですね(理由は後述)
これはsudo -u [UserName] [Command]のような感じで使います.
-u で指定したユーザーになって,指定した[Command]だけを実行する,ということになります.
-u で何も指定しないとrootユーザーとして実行するという意味になります.
コマンドを実行すると,求められるパスワードは自分がいまログインしているユーザーのものです.


復習が終わり,本題に戻ります.
sudo susudosuしてください.ということで,sudoで自分のパスワードを打ってroot権限を手に入れ,su でrootユーザになります.これで,rootパスワードを使わずに su が実行できたということですね.


sudo suはsudoの設定を変更してできないようにすることも可能なので(「sudoでrootパスワードを求めるように変更」など),環境によってできないこともあります.
基本的に機密情報を扱うサーバーなどでは管理者が禁止していることがほとんどなのでは?と思います.



それではよい4連休を〜!