2.3 パーミッション
File Permissions
Linuxのパーミッションは、所有者・グループ・その他に対して読み取り・書き込み・実行の権限を設定する。9ビットのモードで表現される。
パーミッションの構造
@startuml
!theme plain
skinparam backgroundColor #FEFEFE
rectangle "ls -l の出力例" as Output #f0f0f0 {
rectangle "-rwxr-xr-- 1 user group 4096 Jan 1 file.txt" as Line
}
rectangle "パーミッション分解" as Perm #DBEAFE {
rectangle "- : ファイル種別\n(d=ディレクトリ, l=リンク)" as Type
rectangle "rwx : 所有者(user)\nr=4, w=2, x=1 → 7" as Owner
rectangle "r-x : グループ(group)\nr=4, w=0, x=1 → 5" as Group
rectangle "r-- : その他(other)\nr=4, w=0, x=0 → 4" as Other
}
note bottom of Perm
8進数表記: 754
chmod 754 file.txt
end note
@enduml
図1: パーミッションの構造と8進数表記
| 記号 | 意味 | 値 | ファイル | ディレクトリ |
|---|---|---|---|---|
| r | 読み取り | 4 | 内容を読める | 一覧を見られる |
| w | 書き込み | 2 | 内容を変更できる | ファイル作成・削除 |
| x | 実行 | 1 | 実行できる | cdで入れる |
chmod / chown
# 8進数で設定
chmod 755 script.sh # rwxr-xr-x
chmod 644 config.txt # rw-r--r--
# 記号で設定
chmod u+x script.sh # 所有者に実行権追加
chmod go-w file.txt # グループ・その他の書込権削除
chmod a+r file.txt # 全員に読取権追加
# 所有者変更
chown user:group file.txt
chown -R user:group dir/ # 再帰的
| よく使うモード | 8進数 | 用途 |
|---|---|---|
| rwxr-xr-x | 755 | 実行ファイル、ディレクトリ |
| rw-r--r-- | 644 | 一般的なファイル |
| rw------- | 600 | 秘密鍵など機密ファイル |
| rwx------ | 700 | 個人ディレクトリ |
特殊パーミッション
| ビット | 名前 | 効果 | 例 |
|---|---|---|---|
| 4000 | SUID | 所有者権限で実行 | /usr/bin/passwd |
| 2000 | SGID | グループ権限で実行 | 共有ディレクトリ |
| 1000 | Sticky | 所有者のみ削除可 | /tmp |
# SUIDの確認
ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root ... /usr/bin/passwd
# /tmpのSticky bit
ls -ld /tmp
drwxrwxrwt ... /tmp
出典
[1] man chmod - change file mode bits.
[2] man chown - change file owner and group.
[2] man chown - change file owner and group.