LinuxではACLを使用することによってファイルやディレクトリへのアクセスをより細かく制御することが可能になります。
目次
ACLを設定する
ACLはファイル、ディレクトリに対して設定が可能です。
設定する際はsetfacl
コマンド、設定を確認する際はgetfacl
コマンドを用います。
また、setfacl
を実行できるのは、rootユーザか、設定対象ファイル(ディレクトリ)の所有者のみとなります。
例)test1.txt
ファイルにwebapp
ユーザーのみ、rwのパーミッションを許可する
setfacl -m u:webapp:rw test1.txt
例)test1.txt
ファイルにwebapp
グループのみ、rwのパーミッションを許可する
setfacl -m g:webapp:rw test1.txt
設定されたACLを確認する場合はgetfacl
コマンドを使用します。
getfacl test1.txt
グループ名やユーザー名を省略した場合は全てのユーザー、グループに対して適用されます。
例)
setfacl -m u::rw test1.txt
setfacl -m g::rw test1.txt
「デフォルトACL」を設定する
ディレクトリに対しては「デフォルトACL」を設定することが出来ます。
対象ディレクトリにデフォルトACLの設定をしておくと、そのディレクトリ内へファイルが作成された際、「デフォルトACL」の設定がファイルに継承され自動的に設定されます。
この「デフォルトACL」の設定をディレクトリに行えば、作成される各々のファイルに対してACLを設定する手間を省くことができます。
「デフォルトACL」を設定する場合、先頭にdefault:
(又はd:
)を追加します。
例)/test1
ディレクトリにwebapp
ユーザーのみ、rwxのパーミッションを許可する
setfacl -m d:u:webapp:rwx /test1
例)/test1
ディレクトリにwebapp
グループのみ、rwxのパーミッションを許可する
setfacl -m d:g:webapp:rwx /test1
例)/test1
ディレクトリに全グループ、rwxのパーミッションを許可する
setfacl -m d:g::rwx /test1
「デフォルトACL」とumask
ファイルを作成した際の初期パーミッションはumaskの値で決定されますが、親ディレクトリに対してデフォルトACLが設定されている場合、umaskの値は無視されます。
新規作成されたファイルに適切なパーミッションが設定されていない場合、getfacl
コマンドを用いて親ディレクトリのACL設定を確認してみると吉です。