アクセス制御リスト

提供: ArchWiki
2015年2月18日 (水) 14:59時点におけるKusakata (トーク | 投稿記録)による版 (ページの作成:「Category:セキュリティ en:Access Control Lists ru:Access Control Lists アクセス制御リスト ('''A'''ccess '''C'''ontrol '''L'''ist, ACL) はファ...」)
(差分) ← 古い版 | 最新版 (差分) | 新しい版 → (差分)
ナビゲーションに移動 検索に移動

アクセス制御リスト (Access Control List, ACL) はファイルシステムに柔軟性のあるパーミッション機構を追加します。UNIX のファイルパーティションを補助する形で設計されています。ACL を使うことであらゆるディスクリソースのパーミッションをあらゆるユーザーやグループに与えることが可能です。

インストール

必要パッケージである aclsystemd の依存パッケージであるため、既にインストールされているはずです。

設定

ACL の有効化

ACL を有効にするには、ファイルシステムを acl オプションでマウントする必要があります。fstab を使えばオプションを永続化させることができます。

ファイルシステムのデフォルトマウントオプションによっては acl オプションが既に有効になっているかもしれません。Btrfs ではデフォルトで有効であり、ext ファイルシステムでも有効になっていることがあります。以下のコマンドを使って ext* でフォーマットするときのパーティションのオプションを確認してください:

# tune2fs -l /dev/sdXY | grep "Default mount options:"
Default mount options:    user_xattr acl

そしてデフォルトのマウントオプションが上書きされていないかも確認してください。/proc/mounts の適当な行に noacl と記述されていればオプションが変更されています。

ファイルシステムのデフォルトマウントオプションは tune2fs -o option partition コマンドを使って設定できます、例えば:

# tune2fs -o acl /dev/sdXY

Using the default mount options instead of an entry in /etc/fstab is very useful for external drives, such partition will be mounted with acl option also on other Linux machines. There is no need to edit /etc/fstab on every machine.

ノート:
  • acl is specified as default mount option when creating an ext2/3/4 filesystem. This is configured in /etc/mke2fs.conf.
  • The default mount options are not listed in /proc/mounts.

ACL の設定

ACL を修正するには setfacl コマンドを使います。パーミッションを追加するには setfacl -m を使います。

ユーザーにパーミッションを追加:

# setfacl -m "u:username:permissions"

または:

# setfacl -m "u:uid:permissions"

グループにパーミッションを追加:

# setfacl -m "g:groupname:permissions"

または:

# setfacl -m "g:gid:permissions"

すべてのパーミッションを削除:

# setfacl -b

個別のエントリを削除:

# setfacl -x "entry"

パーミッションを確認するには、次を使用:

# getfacl filename

サンプル

"abc" という名前のファイルに対するユーザー johny のパーミッションを設定:

# setfacl -m "u:johny:rwx" abc

パーミッションの確認:

# getfacl abc
# file: abc
# owner: someone
# group: someone
user::rw-
user:johny:rwx
group::r--
mask::rwx
other::r--

ユーザー johny のパーミッションを変更:

# setfacl -m "u:johny:r-x" abc

パーミッションを確認:

# getfacl abc
# file: abc
# owner: someone
# group: someone
user::rw-
user:johny:r-x
group::r--
mask::r-x
other::r--

Remove all extended ACL entries:

# setfacl -b abc

Check permissions

# getfacl abc
# file: abc
# owner: someone
# group: someone
user::rw-
group::r--
other::r--

ls コマンドの出力

You will notice that there is an ACL for a given file because it will exhibit a + (plus sign) after its Unix permissions in the output of ls -l.

$ ls -l /dev/audio
crw-rw----+ 1 root audio 14, 4 nov.   9 12:49 /dev/audio
$ getfacl /dev/audio
getfacl: Removing leading '/' from absolute path names
# file: dev/audio
# owner: root
# group: audio
user::rw-
user:solstice:rw-
group::rw-
mask::rw-
other::---

ウェブブラウザのセキュリティを向上

You can now add permissions to our home directory and/or site directory only to nobody user any anyone else - without "whole world" to increase your security.

Add permissions +x for nobody user on your home directory via ACL:

# setfacl -m "u:nobody:--x" /home/homeusername/

Now you can remove whole world rx permissions:

# chmod o-rx /home/homeusername/

Check our changes:

# file: username/
# owner: username
# group: users
user::rwx
user:nobody:--x
group::r-x
mask::r-x
other::---

As we can see others do not have any permissions but user nobody have "x" permission so they can "look" into users directory and give access to users pages from their home directories to www server. Of course if www server work as nobody user. But - whole world except nobody - do not have any permissions.

参照

  • Man ページ - man getfacl
  • Man ページ - man setfacl
  • An old but still relevant (and thorough) guide to ACL