手当たり次第に書くんだ

飽きっぽいのは本能

Ubuntu 22.04 ACL 拡張 ACL によるアクセス制御

目次に戻る

Overview

ACL を使用すると通常のパーミッションよりも細いアクセス制御が可能となります。

前提条件

  • こちらを参考にネットワーク設定が完了していること。
  • こちらを参考に APT のTUI 抑止設定が完了していること。

インストール

ACL をインストールします。

myadmin@ubuntu:~$ sudo apt -y -o Dpkg::Options::=--force-confdef -o Dpkg::Options::=--force-confold install acl

ACL の有効化

ACL を有効化するには、対象のファイルシステムを、acl オプションを付与してマウントする必要があります。Ubuntu の場合はデフォルトで acl オプションが有効化されており、明示的な設定は不要です。

myadmin@ubuntu:~$ df -hT /
Filesystem                        Type  Size  Used Avail Use% Mounted on
/dev/mapper/ubuntu--vg-ubuntu--lv ext4   37G   28G  7.5G  79% /
myadmin@ubuntu:~$ sudo tune2fs -l /dev/ubuntu-vg/ubuntu-lv
tune2fs 1.46.5 (30-Dec-2021)
Filesystem volume name:   <none>
Last mounted on:          /
Filesystem UUID:          6ef7814c-47cc-4b42-b12b-b70272bb0063
Filesystem magic number:  0xEF53
Filesystem revision #:    1 (dynamic)
Filesystem features:      has_journal ext_attr resize_inode dir_index filetype needs_recovery extent 64bit flex_bg sparse_super large_file huge_file dir_nlink extra_isize metadata_csum
Filesystem flags:         unsigned_directory_hash 
Default mount options:    user_xattr acl
Filesystem state:         clean
Errors behavior:          Continue
Filesystem OS type:       Linux
Inode count:              2424832
Block count:              9684992
Reserved block count:     435532
Overhead clusters:        197248
Free blocks:              3979098
Free inodes:              1880089
First block:              0
Block size:               4096
Fragment size:            4096
Group descriptor size:    64
Reserved GDT blocks:      1022
Blocks per group:         32768
Fragments per group:      32768
Inodes per group:         8192
Inode blocks per group:   512
Flex block group size:    16
Filesystem created:       Mon Jan 15 22:31:50 2024
Last mount time:          Sat Feb 10 21:07:01 2024
Last write time:          Sat Feb 10 21:07:00 2024
Mount count:              9
Maximum mount count:      -1
Last checked:             Mon Jan 15 22:31:50 2024
Check interval:           0 (<none>)
Lifetime writes:          22 GB
Reserved blocks uid:      0 (user root)
Reserved blocks gid:      0 (group root)
First inode:              11
Inode size:	          256
Required extra isize:     32
Desired extra isize:      32
Journal inode:            8
First orphan inode:       1050826
Default directory hash:   half_md4
Directory Hash Seed:      02808c14-f206-4006-8594-52b8eadfd618
Journal backup:           inode blocks
Checksum type:            crc32c
Checksum:                 0x3c6648c4

検証環境

検証環境は以下のようにしました。

myadmin@ubuntu:~$ sudo mkdir /srv/acltest
myadmin@ubuntu:~$ sudo useradd acltest
myadmin@ubuntu:~$ sudo passwd acltest

ACL 設定前の /srv/acltest の状態は以下の通りです。getfacl コマンドは ACL の設定状態を出力します。

myadmin@ubuntu:~$ ls -ld /srv/acltest
drwxr-xr-x 2 root root 4096 Feb 17 16:15 /srv/acltest
myadmin@ubuntu:~$ getfacl /srv/acltest
getfacl: Removing leading '/' from absolute path names
# file: srv/acltest
# owner: root
# group: root
user::rwx
group::r-x
other::r-x

acltest ユーザー・グループで書き込み可能にする

acltest ユーザー・グループで /srv/acltest ディレクトリに対して書き込み可能となるルールを追加します。-R オプションは対象のディレクトリに対して再起的に設定します。-m オプションは ACL ルールを定義します。ACL の設定内容はコマンド例の通りとなりますので割愛します。-d オプションはデフォルトの ACL ルールを定義します。これは -d オプション無しのコマンドも必須になるため注意が必要です。

myadmin@ubuntu:~$ sudo setfacl -R -m u:acltest:rwx /srv/acltest
myadmin@ubuntu:~$ sudo setfacl -R -d -m u:acltest:rwx /srv/acltest
myadmin@ubuntu:~$ sudo setfacl -R -m g:acltest:rwx /srv/acltest
myadmin@ubuntu:~$ sudo setfacl -R -d -m g:acltest:rwx /srv/acltest
myadmin@ubuntu:~$ ls -ld /srv/acltest
drwxrwxr-x+ 2 root root 4096 Feb 17 16:52 /srv/acltest
myadmin@ubuntu:~$ getfacl /srv/acltest
getfacl: Removing leading '/' from absolute path names
# file: srv/acltest
# owner: root
# group: root
user::rwx
user:acltest:rwx
group::r-x
group:acltest:rwx
mask::rwx
other::r-x
default:user::rwx
default:user:acltest:rwx
default:group::r-x
default:group:acltest:rwx
default:mask::rwx
default:other::r-x

この設定は大抵のケースで使用されるオプションが含まれていると思いますので、環境や要件により調整して下さい。ls コマンドでは、拡張 ACL が存在する場合、+ が付きます。また、これはディレクトリの例ですが、ファイル単位でも設定可能です。

ACL の削除

ACL 設定を削除します。

myadmin@ubuntu:~$ sudo setfacl -b /srv/acltest

目次に戻る

Ubuntu 22.04 ACL 拡張 ACL によるアクセス制御

コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

トップへ戻る