Solaris のシステム管理 (セキュリティサービス)

ファイルの ACL を設定する方法

  1. setfacl コマンドを使用してファイルの ACL エントリを設定します。


    $ setfacl -s user::perms,group::perms,other:perms,mask:perms,acl-entry-list filename ...
    

    -s

    ファイルに対して ACL を設定する。すでに ACL が設定されている場合、新しい ACL に置き換える。このオプションには、少なくとも所有者、グループ、およびその他のユーザーのエントリを指定する必要がある 

    user:: perms

    所有者のアクセス権を指定する 

    group:: perms

    グループのアクセス権を指定する 

    other: perms

    所有者またはグループのメンバー以外のユーザーのアクセス権を指定する 

    mask: perms

    ACL マスクのアクセス権を指定する。マスクは、ユーザー (所有者以外) とグループに許される最大アクセス権を示す 

    acl-entry-list

    ファイルまたはディレクトリ上で特定のユーザーとグループに設定する 1 つまたは複数の ACL エントリのリスト。ディレクトリ上でデフォルトの ACL エントリを設定することもできる。有効な ACL エントリについては、表 15-8表 15-9 を参照

    filename ...

    ACL に設定する 1 つまたは複数のファイルまたはディレクトリを空白で区切って指定する 


    注意 - 注意 -

    すでにファイル上に ACL が存在する場合、-s オプションを指定すると、ACL 全体が新しい ACL に置き換えられます。


    詳細は、setfacl(1) のマニュアルページを参照してください。

  2. ACL (ACL エントリ) がファイルに設定されたことを確認します。


    $ getfacl filename
    

    詳細は、「ファイルに ACL が設定されているかどうかを検査する方法」 を参照してください。

例 - ファイルの ACL を設定する

次の例では、ch1.doc ファイルのアクセス権を設定しています。所有者には読み取り権と書き込み権が設定され、グループには読み取り専用が設定され、その他のユーザーには何も設定されません。また、ユーザー george には、このファイルの読み取り権および書き込み権が与えられ、ACL マスクには読み取り権および書き込み権が設定されます。これは、ユーザーやグループは実行権を持たないことを意味します。


$ setfacl -s user::rw-,group::r--,other:---,mask:rw-,user:george:rw- ch1.doc
$ ls -l
total 124
-rw-r-----+  1 nathan  sysadmin   34816 Nov 11 14:16 ch1.doc
-rw-r--r--   1 nathan  sysadmin   20167 Nov 11 14:16 ch2.doc
-rw-r--r--   1 nathan  sysadmin    8192 Nov 11 14:16 notes
$ getfacl ch1.doc
# file: ch1.doc
# owner: nathan
# group: sysadmin
user::rw-
user:george:rw-    #effective:rw-
group::r--         #effective:r--
mask:rw-
other:---

次の例では、ch2.doc ファイルのアクセス権を設定します。所有者には読み取り権、書き込み権、および実行権が設定され、グループには読み取り専用が設定され、その他のユーザーには何も設定されません。また、ACL マスクには読み取り権が設定されます。さらに、ユーザー george には読み取り権および書き込み権が与えられます。ただし、ACL マスクの設定により、george のアクセス権は読み取り専用です。


$ setfacl -s u::7,g::4,o:0,m:4,u:george:7 ch2.doc
$ getfacl ch2.doc
# file: ch2.doc
# owner: nathan
# group: sysadmin
user::rwx
user:george:rwx         #effective:r--
group::r--              #effective:r--
mask:r--
other:---