2
0

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 1 year has passed since last update.

SetUIDについて

Posted at

環境

Ubuntu20.4

パーミッション

ユーザーのパスワードを管理しているファイル(/etc/shadow)のパーミッションを表示すると、次のように表示されます。

$ls -l /etc/shadow
-rw-r----- 1 root shadow

このファイルの所有者はrootで、グループがshadowになっています。所有者の権限が、rwであるため、rootはこのファイルに読み書きすることができます。グループの権限がrであるため、shadowグループはこのファイルを読み込むことはできるが、書き込むことはできません。その他のユーザーには権限が設定されていないため、読み込むことも書き込むこともできません。

現に、自分は、vagrantユーザーでログインしているのですが、つぎのコマンドを実行するとエラーになります。

$cat /etc/shadow
$vi /etc/shadow

SetUID

/usr/bin/passwdのパーミッションを表示すると、次のように表示されます。passwdはパスワードを設定するためのコマンドです。

$ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root

パーミッションを確認すると、root以外のユーザーにも実行権限がありますが、パスワードを書き込む、shadowファイルに、読み込み書き込み権限がありませんでした。しかし、rootユーザーでない自分でも、passwdコマンドを実行して、hadowファイルを書き換えることができてしまいます。

なぜでしょうか?:thinking:

passwdの所有者のパーミッションの実行権限の設定にsがついていることが原因です。このsのことを、SetUIDと呼びます。SetUIDが設定されているプログラムのことを、SetUIDされたプログラムといういい方もします。

SetUIDがついていると、所有者以外のユーザーであっても、所有者が持っている権限と同じ権限で実行できるようになります。つまり、root以外のユーザーが実行しても、shadowファイルの読み書きができるようになるということです。

sudo

sudoを使うと、どのユーザーでもroot権限でコマンドが実行できるようになります。これは、sudoコマンドにSetUIDが設定されているためです。sudoのパーミッションを確認します。

$ls -l /usr/bin/sudo
-rwsr-xr-x 1 root root

確かに、SetUIDが設定されています。

このように、SetUIDが設定されているプログラムは、passwd、sudoコマンド以外にもいくつかあります。SetUIDが設定されているプログラムは、次のコマンドで調べることができます。

sudo find / -type f -perm -u+s -ls

SetUIDが設定されていると、他ユーザーでもsudoなしで実行できる便利さがある反面、悪意のあるユーザーにログインされた場合、実行されてはいけないコマンドが実行されてしまうといった脅威が発生することになります。セキュリティ的には要注意な設定です。

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

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?