LoginSignup
3
2

More than 1 year has passed since last update.

【Linux】/usr/bin/sudoの例から学ぶchmodによる権限変更でコマンドが使えなくなる仕組み

Last updated at Posted at 2022-12-08

概要

ファイルやディレクトリに対する許可属性を変更するchmodコマンドですが、
「安易にchmod 777とか使わないでねー」という注意をよく耳にします。

その理由として

  • 第三者によって重要なファイルが読み取れる状態になり、セキュリティ上良くない
  • sshできなくなる
  • 一部コマンドが適切に実行できなくなる

などが挙げられます。

今回は「なぜ権限を変更することでコマンドが実行できなくなるのか」について、
その仕組みを学ぶため/usr/bin/sudoで検証してみます。

sudoの権限を見てみる

$ ls -l /usr/bin/sudo
---s--x--x 1 root root      147240 Feb  8  2021 sudo

sudoはどのユーザーで実行してもrootで実行するというコマンドですが、「誰が実行しても所有者が実行したことになる」パーミッション属性を 「SUID」(Set User ID) と呼びます。

---s--x--x
パーミッション属性にはr,w,x (読み取り・書き込み・実行)の他に、SUIDの許可フラグがあり、実行権限が付与されているSUIDはs, 実行権限のないSUIDはSと表示される

sudoからSUID許可フラグを剥奪する

注意 
以下の操作は実験用のサーバで実行しております。
大事なサーバで安易に真似しないようにしてください。

$ chmod 777 /usr/bin/sudo

$ ls -l /usr/bin/sudo
-rwxrwxrwx 1 root root 147240 Feb  8  2021 /usr/bin/sudo

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

chmod 777を実行することによって、usr/bin/sudoからSUID許可フラグが剥奪される。

その状態でsudoを実行すると
sudo: /usr/bin/sudo must be owned by uid 0 and have the setuid bit set
とエラーが発生し、コマンドを実行できなくなる。

ここでいうuid 0とは、特権ユーザ(root)のことを指しており、rootによって所有されるべきコマンドなのに、パーミッション設定が適切でないためコマンドを正常に実行させない仕組みが働いている。
chownで所有ユーザをroot以外にしても同様のエラーが発生する)

元に戻す

ルートユーザにログインする
su root

chmodで元に戻します。


$ chmod 4111 /usr/bin/sudo

$ ls -l /usr/bin/sudo
---s--x--x 1 root root      147240 Feb  8  2021 sudo

# 正常に使えることを確認
$ sudo echo hello
hello

chmod 4111
所有ユーザ・グループ・その他ユーザに実行権限を付与するのに加え、SUID許可フラグを付与します。

まとめ

今回の検証では、「権限を書き換えたことによって、正常にsudoを実行できなくなる」ということが分かりました。
sudoだけが使えなくなるならルートユーザに切り替えて権限を元に戻せば大丈夫ですが、suやpasswdコマンドなど他の重要なコマンドが使えなくなったら、ルートユーザに切り替えて元に戻すこともできなくなり、その他重要な操作も行えなくなってしまうかもしれません。

(今回は権限変更によってコマンドが使えなくなる仕組みを検証してみましたが、chmod 777によってファイルにアクセスできなくなったり、sshできなくなったりと他にもいろいろと問題があるみたいなので、近いうちに検証したいと思います。)

権限操作は慎重に行い、くれぐれもルートディレクトリで実行しないように気をつけたいものです。

参考

3
2
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
3
2