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

ACL による UFS ファイルの保護 (作業マップ)

次の作業マップは、UFS ファイルの ACL を表示する、ACL を変更する、ほかのファイルへ ACL をコピーするといった作業について説明した箇所を示しています。

作業 

参照先 

ファイルに ACL が存在するかを確認します 

「ファイルに ACL が設定されているかどうかを検査する方法」

ファイルに ACL を追加します 

「ファイルに ACL エントリを追加する方法」

ACL をコピーします 

「ACL をコピーする方法」

ACL を変更します 

「ファイルの ACL エントリを変更する方法」

ファイルから ACL を削除します 

「ファイルから ACL エントリを削除する方法」

ファイルの ACL を表示します 

「ファイルの ACL エントリを表示する方法」

Procedureファイルに ACL が設定されているかどうかを検査する方法

  1. ファイルに ACL が設定されているかをチェックします。


    % ls -l filename
    

    filename には、ファイルまたはディレクトリを指定します。

    出力のモードフィールドの右側にプラス記号 (+) が表示されているときは、そのファイルに ACL が設定されています。


    注 –

    UNIX ファイルアクセス権を超える ACL エントリを追加しない限り、ファイルの ACL は「弱い」とみなされ、プラス記号 (+) は表示されません。



例 6–6 ファイルに ACL が設定されているかどうかを検査する

次の例では、ch1.sgm ファイルに ACL が設定されています。ACL は、モードフィールドの右側にあるプラス記号 (+) で示されています。


% ls -l ch1.sgm
-rwxr-----+  1 stacey   techpubs      167 Nov 11 11:13 ch1.sgm

Procedureファイルに ACL エントリを追加する方法

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


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

    ファイルに対して ACL を設定します。すでに ACL が設定されている場合、新しい ACL に置き換えます。このオプションには、少なくとも user::group::、および other:: のエントリを指定する必要があります。

    user::perms

    所有者のアクセス権を指定します。

    group::perms

    グループメンバーのアクセス権を指定します。

    other:perms

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

    mask:perms

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

    acl-entry-list

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

    filename ...

    ACL を設定する 1 つまたは複数のファイルまたはディレクトリを指定します。filename が複数ある場合は、スペースで区切ります。


    注意 – 注意 –

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


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

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


    % getfacl filename
    

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


例 6–7 ファイルの ACL を設定する

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


% setfacl -s user::rw-,group::r--,other:---,mask:rw-,user:anusha:rw- ch1.sgm
% ls -l
total 124
-rw-r-----+  1 stacey  techpubs   34816 Nov 11 14:16 ch1.sgm
-rw-r--r--   1 stacey  techpubs   20167 Nov 11 14:16 ch2.sgm
-rw-r--r--   1 stacey  techpubs    8192 Nov 11 14:16 notes
% getfacl ch1.sgm
# file: ch1.sgm
# owner: stacey
# group: techpubs
user::rw-
user:anusha:rw-    #effective:rw-
group::r--         #effective:r--
mask:rw-
other:---

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


% setfacl -s u::7,g::4,o:0,m:4,u:anusha:7 ch2.sgm
% getfacl ch2.sgm
# file: ch2.sgm
# owner: stacey
# group: techpubs
user::rwx
user:anusha:rwx         #effective:r--
group::r--              #effective:r--
mask:r--
other:---

ProcedureACL をコピーする方法

  1. getfacl の出力先を変更することにより、ファイルの ACL をほかのファイルへコピーします。


    % getfacl filename1 | setfacl -f - filename2 
    
    filename1

    ACL のコピー元ファイルを指定します

    filename2

    ACL のコピー先ファイルを指定します


例 6–8 ACL をコピーする

次の例では、ch2.sgm の ACL が ch3.sgm にコピーされます。


% getfacl ch2.sgm | setfacl -f - ch3.sgm

Procedureファイルの ACL エントリを変更する方法

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


    % setfacl -m acl-entry-list filename ... 
    
    -m

    既存の ACL エントリを変更します。

    acl-entry-list

    ファイルまたはディレクトリで変更する 1 つまたは複数の ACL エントリのリストを指定します。ディレクトリのデフォルト ACL エントリを変更することもできます。有効な ACL エントリについては、表 6–7表 6–8 を参照してください。

    filename ...

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

  2. ファイルの ACL エントリが変更されたことを確認します。


    % getfacl filename
    

例 6–9 ファイルの ACL エントリを変更する

次の例では、ユーザー anusha のアクセス権を読み取りおよび書き込みに変更します。


% setfacl -m user:anusha:6 ch3.sgm
% getfacl ch3.sgm
# file: ch3.sgm
# owner: stacey
# group: techpubs
user::rw-				
user::anusha:rw-        #effective:r--
group::r-               #effective:r--
mask:r--
other:r-

次の例では、book ディレクトリのデフォルトアクセス権を変更します。グループ staff のデフォルトのアクセス権を読み取りに変更し、さらに、ACL マスクのデフォルトアクセス権を読み取りおよび書き込みに変更します。


% setfacl -m default:group:staff:4,default:mask:6 book

Procedureファイルから ACL エントリを削除する方法

  1. ファイルから ACL エントリを削除します。


    % setfacl -d acl-entry-list  filename ... 
    
    -d

    指定した ACL エントリを削除します。

    acl-entry-list

    ファイルまたはディレクトリから (アクセス権を指定せずに) 削除する ACL エントリのリストを指定します。特定のユーザーとグループの ACL エントリとデフォルトの ACL エントリ以外は削除できません。有効な ACL エントリについては、表 6–7表 6–8 を参照してください。

    filename ...

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

    setfacl -s コマンドを使用してファイルのすべての ACL エントリを削除してから、指定した新しい ACL エントリで置き換えることもできます。

  2. ファイルから ACL エントリが削除されたことを確認します。


    % getfacl filename
    

例 6–10 ファイルから ACL エントリを削除する

次の例では、ch4.sgm ファイルからユーザー anusha を削除します。


% setfacl -d user:anusha ch4.sgm

Procedureファイルの ACL エントリを表示する方法

  1. getfacl コマンドを使用してファイルの ACL エントリを表示します。


    % getfacl [-a | -d] filename ...
    
    -a

    指定したファイルまたはディレクトリのファイル名、所有者、グループ、ACL エントリを表示します。

    -d

    指定したディレクトリのファイル名、所有者、グループ、デフォルトの ACL エントリ (存在する場合) を表示します。

    filename ...

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

    複数のファイル名をコマンド行に指定した場合は、各 ACL エントリの間に空白行が表示されます。


例 6–11 ファイルの ACL エントリを表示する

次の例は、ch1.sgm ファイルのすべての ACL エントリを示します。ユーザーエントリとグループエントリの隣りの #effective: は、ACL マスクによって変更されたあとのアクセス権の設定を示します。


% getfacl ch1.sgm

# file: ch1.sgm
# owner: stacey
# group: techpubs
user::rw-
user:anusha:r-        #effective:r--
group::rw-            #effective:rw-
mask:rw-
other:---

次の例は、book ディレクトリのデフォルトの ACL エントリを示します。


% getfacl -d book

# file: book
# owner: stacey
# group: techpubs
user::rwx
user:anusha:r-x       #effective:r-x
group::rwx            #effective:rwx
mask:rwx
other:---
default:user::rw-
default:user:anusha:r--
default:group::rw-
default:mask:rw-
default:other:---