LinuCレベル3 303試験の例題と解説

327.1 任意アクセス制御

LinuC 303試験の試験範囲から「327.1 任意アクセス制御」についての例題を解いてみます。
ACLの利用方法を理解して、高度なアクセス制御を行えるようにしておきましょう。
■トピックの概要
このトピックの内容は以下の通りです。
<327.1 任意アクセス制御>
重要度 3
<説明>
任意アクセス制御を理解し、ACLを使用して実装する方法を知っていることが求められる。
さらに、拡張属性の使用方法を理解していることが求められる。
<主要な知識範囲>
・ファイルの所有権とアクセス権の理解と管理。SUID、SGIDを含む。
・ACLの理解と管理。
・拡張属性と属性クラスの理解と管理。
<重要なファイル、用語、ユーティリティ>
・getfacl
・setfacl
・getfattr
・setfattr
■例題
ファイル aclfile1 に、下記の条件でアクセス制限を実施します。
設定方法として正しいものをすべて選択してください。
[条件]
・ファイルの所有者はlinuc1、所有グループはlinuc1に設定されている。
・ファイルの所有者は読み書きを可能に設定する。
・linuc1グループに所属するユーザは読み書きを可能に設定する。
・linuc2グループに所属するユーザは読み込みのみ可能に設定する。
・上記以外のユーザには、読み書きともに不可に設定する。
1. chmod 664 aclfile1
2. chmod 660 aclfile1
   setfacl -m group:linuc2:r aclfile1
3. chgrp linuc1,linuc2 aclfile1
   chmod 660 aclfile1
4. setfacl -m u::rw aclfile1
   setfacl -m g::rw aclfile1
   setfacl -m o::- aclfile1
   setfacl -m g:linuc2:r aclfile1
※この例題は実際の試験問題とは異なります。


解答と解説

答えは「2」と「4」です。

Linuxでは、ファイルやディレクトリのアクセス制御を所有者・グループ・その他毎に設定することができます。
ACLを使用すると、上記に加えて、更に詳細なアクセス制御設定を行なうことができます。
例えば、
1) user1には読み込み権限を与える。
2) user2には読み書き権限を与える。
というような、詳細なアクセス制限を設定することができます。
ACLによるアクセス制御設定は、setfaclコマンドを使用します。
上記の例の通りに設定する場合、下記のようにsetfaclコマンドを実行します。
$ setfacl -m u:user1:r file1
$ setfacl -m u:user2:rw file1
ACLの確認は、getfaclコマンドを使用します。
$ getfacl -c file1
user::rw-
user:user1:r--
user:user2:rw-
group::r--
mask::rw-
other::---
user1は読み込みのみ(r--)、user2は読み書き(rw-)の権限が設定されていることがわかります。
例題の選択肢について解説します。
1. chmod 664 aclfile1
誤っています。
linuc1グループ所属ユーザに読み書き、linuc2グループ所属ユーザに読み込み権限は与えられますが、それ以外のユーザにも読み込み権限が与えられてしまします。
2. chmod 660 aclfile1
   setfacl -m group:linuc2:r aclfile1
正しいです。
chmodコマンドで所有者と所有グループ所属ユーザにのみ読み書き権限を設定し、それに加えてsetfaclコマンドでlinux2グループ所属ユーザに読み込み権限を設定しています。
3. chgrp linuc1,linuc2 aclfile1
   chmod 660 aclfile1
誤っています。
ファイルに2つの所有グループを設定することはできません。
4. setfacl -m u::rw aclfile1
   setfacl -m g::rw aclfile1
   setfacl -m o::- aclfile1
   setfacl -m g:linuc2:r aclfile1
正しいです。
setfaclコマンドで、所有者に読み書き権限、所有グループ所属ユーザに読み書き権限、その他のユーザに権限なしを設定しています。これはchmod 660 aclfile1と同じ効果があります。
その後にsetfaclコマンドでlinux2グループ所属ユーザに読み込み権限を設定しています。
setfacl、getfaclコマンドの使用方法を確認し、ACLを適切に設定できる方法を把握しておきましょう。
■例題作成者
ページトップへ