任意アクセス制御(DAC)とACL、拡張属性の理解と管理

目次

概要

任意アクセス制御(DAC: Discretionary Access Control)は、UNIX/Linux システムで最も基本的なアクセス制御モデルであり、ファイルやディレクトリの所有者がアクセス権限を制御できることを意味します。本章では、DACの基礎からACL(Access Control List)による細かなアクセス制御、さらに拡張属性の使用方法について学びます。


1. 標準のアクセス権と所有権の基本

Linux では、各ファイルやディレクトリに対して次の 3 種類の属性が設定されています:

  • 所有者(owner)
  • 所属グループ(group)
  • その他のユーザー(others)

それぞれに対して以下のアクセス権を設定可能です:

権限意味
r読み取り(read)
w書き込み(write)
x実行(execute)

表示方法例(ls -l

-rwxr-xr-- 1 alice devteam  1234  6月 7 12:00 script.sh
  • 所有者(alice)には rwx
  • グループ(devteam)には r-x
  • その他ユーザーには r–

2. SUID, SGID, Sticky Bit の理解

SUID(Set UID)

バイナリ実行時にそのファイルの所有者の権限で実行される。

chmod u+s /path/to/file
ls -l → -rwsr-xr-x

例:/usr/bin/passwd(rootの権限で動作)

SGID(Set GID)

  • ファイル:所有グループの権限で実行
  • ディレクトリ:そのディレクトリに作成されたファイルは同じグループを継承
chmod g+s /shared/folder
ls -ld → drwxr-sr-x

Sticky Bit

  • ディレクトリに設定:所有者以外のユーザーはファイル削除不可
  • /tmp によく使われる
chmod +t /tmp
ls -ld → drwxrwxrwt

3. ACL(Access Control List)の活用

ACL は、標準の3種のアクセス権に加えて特定ユーザーやグループごとに細かい権限を追加できる拡張機能です。

使用条件

  • 対応するファイルシステム(ext4, XFS など)
  • ACLがマウントオプションで有効になっていること
mount -o remount,acl /mount/point

ACL の確認(getfacl

getfacl file.txt

出力例:

# file: file.txt
# owner: alice
# group: devteam
user::rw-
user:bob:r--
group::r--
mask::r--
other::---

ACL の設定(setfacl

# bob に読み取り権限付与
setfacl -m u:bob:r-- file.txt

# グループ marketing に読み書き権限付与
setfacl -m g:marketing:rw- file.txt

ACL の削除

# bob に対するACL削除
setfacl -x u:bob file.txt

# ACL 全削除
setfacl -b file.txt

4. 拡張属性(Extended Attributes)

Linux では、拡張属性を使ってファイルに任意のメタデータを付加できます。これは、セキュリティ情報(例:SELinuxのコンテキスト)やアプリケーション固有のデータに使われます。

拡張属性の確認(getfattr

getfattr -d file.txt

出力例:

# file: file.txt
user.comment="Confidential document"

拡張属性の追加(setfattr

setfattr -n user.comment -v "Confidential document" file.txt

拡張属性の削除

setfattr -x user.comment file.txt

💡 ヒント:属性名のプレフィックス(user.)は必須。これは拡張属性の名前空間を示します。


5. 実践例

ACLで特定ユーザーだけに書き込み許可

touch report.txt
setfacl -m u:bob:rw- report.txt

ディレクトリにデフォルトACL設定(サブファイルに継承)

setfacl -m d:u:carol:r-- /project/docs

6. 関連コマンドまとめ

コマンド役割
ls -l標準アクセス権表示
chmod, chown権限・所有者の変更
getfacl, setfaclACL の取得・設定
getfattr, setfattr拡張属性の取得・設定

章末問題(四択)

問1. ACL の設定を削除するコマンドはどれか?
A. chmod -x
B. setfacl -x
C. getfacl -x
D. setfattr -d

解説

正解:B

setfacl -x で特定のACL項目を削除します。

問2. SUID ビットを設定したときに表示されるパーミッション表記は?
A. rwxr-xr-x
B. rwsr-xr-x
C. rwxrwsr-x
D. rwxr-xr-t

解説

正解:B

SUIDが有効だと所有者の実行権が s になります。

問3. setfattr コマンドで正しい使用例はどれか?
A. setfattr -n comment -v “test” file.txt
B. setfattr -a user.comment “test” file.txt
C. setfattr -n user.comment -v “test” file.txt
D. setfattr file.txt user.comment “test”

解説

正解:C

-n で属性名(user. 名前空間)を指定し、-v で値を与える形式です。

問4. ACL における mask は何を制御するか?
A. ファイルの所有者権限
B. グループの実行権限
C. 追加されたACLユーザー・グループの最大権限
D. その他のユーザーの権限

解説

正解:C

mask はACLで指定されたユーザーやグループの最大許可レベルを制限します。


よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

コメント

コメントする

目次