taketiyo.log

Web Engineering 🛠 & Body Building 💪

【Linux】ACLを理解する【umaskとの関係】

Programming

  / /

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設定を確認してみると吉です。