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

[Linux][command] ファイルとディレクトリのパーミッション_chmod, umask, SUID, SGID

Last updated at Posted at 2025-02-23

アクセス権

権限 表記
read right r
write right w
excute right x

SUID, SGID

解説

  • SUID: ファイルの所有者の権限でプログラムが実行される
    • 所有者の実行権限 (x) の位置がsに変わる
    • 数値で表現するる4xxx(例:4755
  • SGID: グループの権限でプログラムが実行される
    • グループの実行権限 (x) の位置がsに変わる
    • 値で表現すると2xxx(例:2755

使用例

通常のファイル

$ ls -l normal_file
-rw-r--r-- 1 user group 1234 Feb 16 12:00 normal_file
権限 所有者(user) グループ(group) その他(other)
-rw-r--r-- 読み取り (r), 書き込み (w) 読み取り (r) 読み取り (r)

SUID(Set User ID)

  • 通常のパーミッション:0755-rwxr-xr-x
  • SUID 設定後:4755-rwsr-xr-x
$ ls -l suid_file
-rwsr-xr-x 1 root group 1234 Feb 16 12:00 suid_file
権限 所有者(root) グループ(group) その他(other)
-rwsr-xr-x 読み取り (r), 書き込み (w), 実行 (s)(SUID) 読み取り (r), 実行 (x) 読み取り (r), 実行 (x)

SGID(Set Group ID)

  • 通常のパーミッション:0755-rwxr-xr-x
  • SGID 設定後:2755-rwxr-sr-x
$ ls -l sgid_file
-rwxr-sr-x 1 user staff 1234 Feb 16 12:00 sgid_file
権限 所有者(user) グループ(staff) その他(other)
-rwxr-sr-x 読み取り (r), 書き込み (w), 実行 (x) 実行 (s)(SGID) 読み取り (r), 実行 (x)

chmodコマンド

$ chmod [オプション] 数値または記号 ファイル名

オプション

オプション 英語の由来 説明
デフォルト 設定しない場合、ファイルの権限は変更されない
-R recursive 指定したディレクトリ以下のすべてのファイル・ディレクトリの権限を再帰的に変更
-v verbose 変更されたファイルの詳細を表示
-c changes 変更があったファイルのみを表示
--reference=参照ファイル reference 指定したファイルの権限と同じに設定

権限設定の構成要素

種別 記号 説明
対象(Who) u 所有者(user)
g 所有グループ(group)
o その他のユーザー(other)
a すべて(all: ugo と同等)
操作(Action) + 権限を追加
- 権限を削除
= 指定した権限に設定(既存の権限をリセット)
許可(Permission) r 読み取り(read)
w 書き込み(write)
x 実行(execute)
s セットユーザーID(setuid)またはセットグループID(setgid)

使用例

# 所有者に実行権限を追加
$ chmod u+x script.sh

# すべてのユーザーに読み取り権限を追加
$ chmod a+r file.txt

# 所有グループとその他のユーザーから書き込み権限を削除
$ chmod go-w config.conf

# 所有者の権限を読み取り・書き込みのみに設定
$ chmod u=rw file.txt

# 所有者にセットユーザーIDを設定
$ chmod u+s program

umaskコマンド

$ umask [オプション]

オプション

オプション 由来 説明
default user mask - 新しく作成されるファイルやディレクトリのデフォルトのパーミッション(umask値)を表示する
-S symbolic - 記号表記(u=rwx,g=rx,o=rx など)で現在のumask値を表示する

umaskとは?

新しく作成されるファイルディレクトリのデフォルトのパーミッションを制御する値
umaskの値を設定することで、不要なアクセス権を制限できる

基本的な動作

umaskは「許可しないパーミッション」を指定するため、実際のパーミッションはデフォルトのパーミッションからumask値を引くことで決定されます。

  • ファイルのデフォルトパーミッション: 666 (rw-rw-rw-)
  • ディレクトリのデフォルトパーミッション: 777 (rwxrwxrwx)
  • 実際のパーミッション = デフォルトパーミッション - umask値

umask値の計算例

umask 022 の場合

ファイルの場合

  1. デフォルトパーミッション: 666 (rw-rw-rw-)
  2. umask値: 022 (---w--w--)
  3. 適用後のパーミッション: 644 (rw-r--r--)

ディレクトリの場合

  1. デフォルトパーミッション: 777 (rwxrwxrwx)
  2. umask値: 022 (---w--w--)
  3. 適用後のパーミッション: 755 (rwxr-xr-x)

umask 027 の場合

ファイルの場合

  1. デフォルトパーミッション: 666 (rw-rw-rw-)
  2. umask値: 027 (---w--wx)
  3. 適用後のパーミッション: 640 (rw-r-----)

ディレクトリの場合

  1. デフォルトパーミッション: 777 (rwxrwxrwx)
  2. umask値: 027 (---w--wx)
  3. 適用後のパーミッション: 750 (rwxr-x---)

主なumask値の設定例

umask値 ファイルのパーミッション ディレクトリのパーミッション 説明
000 666 (rw-rw-rw-) 777 (rwxrwxrwx) 全ユーザーが読み書き・実行可能(セキュリティリスクあり)
022 644 (rw-r--r--) 755 (rwxr-xr-x) 一般的な設定(所有者は書き込み可、他は読み取りのみ)
027 640 (rw-r-----) 750 (rwxr-x---) グループのみアクセス可、他のユーザーはアクセス不可
077 600 (rw-------) 700 (rwx------) 所有者のみアクセス可能(セキュリティ重視)

Ping-t

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