SetUID/GID
- SetUID: ファイル実行時にプロセスをユーザーのIDではなく、ファイルの所有者のIDで実行する
- SetGID: ファイル実行時にプロセスをユーザーのグループIDではなく、ファイルのグループIDで実行する
用途
ユーザーにはない権限をプログラムに付与
一般的に特定のコマンドをroot権限で実行する際に使用
Warning権限昇格につながる可能性があるため、
権限を細分化したcapabilityを使用する方がセキュリティ的に有利
設定と解除
1# setuid
2## set
3chmod u+s my_binary
4chmod 4___ my_binary
5## unset
6chmod u-s my_binary
7
8# setgid
9## set
10chmod g+s my_binary
11chmod 2___ my_binary
12## unset
13chmod g-s my_binary
14
15## rwx の x 部分が s で表示される
User ID
- UID (User ID): ユーザーに付与された固有のID番号
- Login name: UIDとマッピングされる文字列形式のユーザー名
プロセスの観点
- Real user ID
- 最初にプロセスを実行したユーザーのUID
- Effective user ID (EUID)
- 現在のプロセスが行使しているUID
- プロセスが持つ権限の判断に使用される
- 基本的にReal UIDと同じ
- Saved user ID (SUID)
- プロセス最初のeffective user ID
- 元のEUIDに戻るために使用される
- setuid実行ファイルを実行する際に、以前のEUIDを保存する
setuid
ファイル実行時に、そのファイルの所有者のUIDがプロセスのeffective UIDになる
例: root所有のsetuidファイルを一般ユーザーが実行すると、そのプロセスはroot権限を得る
Sticky bit
ディレクトリ内のファイルの削除権限を制限する
ファイル所有者、ディレクトリ所有者、またはrootユーザーのみが
ファイルを削除および名前変更可能
ファイル名の変更既存のファイルをディレクトリのエントリから削除し、
新しい名前で再度リンクする作業
- ファイル作成: 可能
- ファイル編集: ファイルに対して
write権限があれば可能
設定と解除
1# set stickybit
2## set
3chmod +t /testdir
4chmod 1___ my_binary
5## unset
6chmod -t /testdir
7
8## rwx の x 部分が t で表示される
ディレクトリでの権限
| 権限 | ディレクトリに適用される場合 |
|---|---|
r (読み取り) |
lsコマンドでディレクトリ一覧を表示できる |
w (書き込み) |
ディレクトリ内でファイルの作成、削除が可能 |
x (実行) |
ディレクトリにアクセス可能 (cd実行可能) |