Home
Packages
Forums
Wiki
GitLab
Security
AUR
Download
コンテンツにスキップ
メインメニュー
メインメニュー
サイドバーに移動
非表示
案内
メインページ
目次
コミュニティに貢献
最近の出来事
おまかせ表示
特別ページ
交流
ヘルプ
貢献
最近の更新
最近の議論
新しいページ
統計
リクエスト
ArchWiki
検索
検索
表示
アカウント作成
ログイン
個人用ツール
アカウント作成
ログイン
アクセス制御リストのソースを表示
ページ
議論
日本語
閲覧
ソースを閲覧
履歴を表示
ツール
ツール
サイドバーに移動
非表示
操作
閲覧
ソースを閲覧
履歴を表示
全般
リンク元
関連ページの更新状況
ページ情報
表示
サイドバーに移動
非表示
←
アクセス制御リスト
あなたには「このページの編集」を行う権限がありません。理由は以下の通りです:
この操作は、次のグループに属する利用者のみが実行できます:
登録利用者
。
このページのソースの閲覧やコピーができます。
[[Category:アクセス制御]] [[en:Access Control Lists]] [[es:Access Control Lists]] [[pt:Access Control Lists]] [[ru:Access Control Lists]] [[zh-hans:Access Control Lists]] [[Wikipedia:ja:アクセス制御リスト|アクセス制御リスト]] (Access control list; ACL) は[[ファイルシステム]]により柔軟性のあるパーミッション機構を追加します。ACL は UNIX のファイルパーティションを補助するように設計されています。ACL を使うことで、任意のユーザやグループに任意のディスクリソースへのパーミッションを与えることができます。 == インストール == {{Pkg|acl}} パッケージは [[systemd]] の依存パッケージであるため、すでにインストールされているはずです。 == ACL の有効化 == ACL を有効化するには、ファイルシステムを {{ic|acl}} オプションでマウントする必要があります。[[fstab]] を使えばオプションを永続化させることができます。 ファイルシステムのデフォルトマウントオプションによっては {{ic|acl}} オプションが既に有効になっているかもしれません。[[Btrfs]] と Ext2/[[Ext3|3]]/[[Ext4|4]] ファイルシステムでは、すでに有効になっています。以下のコマンドを使うことで、ext2/3/4 でフォーマットされたパーティションのオプションを確認できます: {{hc|# tune2fs -l /dev/sd''XY'' {{!}} grep "Default mount options:"| Default mount options: user_xattr '''acl''' }} また、デフォルトのマウントオプションがオーバーライドされていないことも確認してください。{{ic|/proc/mounts}} の関連する行に {{ic|noacl}} とある場合、ACL が無効化されています。 ファイルシステムのデフォルトマウントオプションは、コマンド {{ic|tune2fs -o ''オプション'' ''パーティション''}} で設定できます。例えば: # tune2fs -o acl /dev/sd''XY'' 外部ドライブの場合、{{ic|/etc/fstab}} のエントリではなくデフォルトのマウントオプションを使うと非常に便利です。なぜなら、そのようなパーティションは他の Linux マヒンでも {{ic|acl}} オプションでマウントされるからです。すべてのマシンで {{ic|/etc/fstab}} を編集する必要は無くなります。 {{Note| * ext2/3/4 ファイルシステムの作成時に {{ic|acl}} はデフォルトのマウントオプションとして指定されます。この設定は {{ic|/etc/mke2fs.conf}} から変えられます。 * デフォルトのマウントオプションは {{ic|/proc/mounts}} には記載されません。 }} == 使用法 == === ACL の設定 === ''setfacl'' コマンドで ACL を変更できます。 {{Tip| * {{ic|--test}} フラグを追加すれば、パーミッションを変更せずに (つまり、ドライラン) ファイル/ディレクトリのパーミッションの変更を一覧表示できます。 * すべてのファイルやディレクトリに再帰的に操作を適用するには、{{ic|-R}}/{{ic|--recursive}} を引数に追加してください。 }} ユーザに対するパーミッションを設定する ({{ic|''user''}} はユーザ名あるいはユーザ ID): # setfacl -m "u:''user:permissions''" <file/dir> グループに対するパーミッションを設定する ({{ic|''group''}} はグループ名あるいはグループ ID): # setfacl -m "g:''group:permissions''" <file/dir> その他に対するパーミッションを設定する: # setfacl -m "other:''permissions''" <file/dir> すべての''新しく作成される''ファイルやディレクトリが親ディレクトリのエントリを継承するようにする (これは、そのディレクトリに''コピーされる''ファイルには影響しません): # setfacl -dm "''entry''" <dir> 特定のエントリを削除する: # setfacl -x "''entry''" <file/dir> デフォルトのエントリを削除する: # setfacl -k <file/dir> すべてのエントリを削除する (所有者、グループ、そしてその他のユーザのエントリは保持されます): # setfacl -b <file/dir> {{Accuracy|{{ic|--mask}} オプションに関する以前のノート ({{man|1|setfacl}} から引用されたもの) は不正確であると判断されました。しかし、以下の新しいノートも正しくないようです。詳細は、この問題に関する [[:en:Talk:Access Control Lists#ACL mask entry|英語版の議論ページ]] を参照してください。}} {{Note|''setfacl'' のデフォルトの挙動では、{{ic|--mask}} エントリが明示的に与えられない限り、ACL マスクエントリが再計算されます。マスクエントリは、ユーザ (所有者以外) とグループに対して許可される最大のパーミッションを示します。明示的に設定されていない限り、これはデフォルトグループのパーミッションと一致します。これが何を意味するかを明確にするために、あるディレクトリを所有するグループが {{ic|r-x}} パーミッションを持つと仮定しましょう。{{ic|rwx}} パーミッションを持つ ACL ユーザやグループを追加すると、このユーザあるいはグループの''実効'' (''effective'') パーミッションは {{ic|r-x}} となります。その理由は、ACL をサポートしないシステムから来たファイルが、ACL をサポートするシステム上で利用可能になったとしても、問題が生じないようにするためです。}} === ACL の表示 === パーミッションを表示するには、以下を実行してください: # getfacl <file/dir> == サンプル == {{ic|abc}} という名前のファイルに対するユーザ {{ic|johnny}} のパーミッションを設定: # setfacl -m "u:johnny:rwx" abc パーミッションを確認: {{hc|# getfacl abc| # file: abc # owner: someone # group: someone user::rw- user:johnny:rwx group::r-- mask::rwx other::r-- }} ユーザ {{ic|johnny}} のパーミッションを変更: # setfacl -m "u:johnny:r-x" abc パーミッションを確認: {{hc|# getfacl abc| # file: abc # owner: someone # group: someone user::rw- user:johnny:r-x group::r-- mask::r-x other::r-- }} すべての ACL エントリを削除: # setfacl -b abc パーミッションを確認: {{hc|# getfacl abc| # file: abc # owner: someone # group: someone user::rw- group::r-- other::r-- }} === ls コマンドの出力 === 特定のファイルに ACL が存在するかどうかは {{ic|ls -l}} の出力で Unix のパーミッションの後に {{ic|'''+'''}} (プラス記号) があるかどうかで見分けられます。 {{hc|$ ls -l /dev/audio| crw-rw----+ 1 root audio 14, 4 nov. 9 12:49 /dev/audio }} {{hc|$ getfacl /dev/audio| getfacl: Removing leading '/' from absolute path names # file: dev/audio # owner: root # group: audio user::rw- user:solstice:rw- group::rw- mask::rw- other::--- }} === プライベートなファイルに実行権限を付与する === [[ウェブサーバー]]などのプロセスに、ユーザのホームディレクトリにあるファイルへのアクセス権を与える方法を以下で説明します (システム全体に対してアクセス権を与えてセキュリティを犠牲にしたりはしません)。 このセクションでは、ウェブサーバは {{ic|http}} ユーザとして実行していて、{{ic|geoffrey}} のホームディレクトリ {{ic|/home/geoffrey}} へのアクセスを与えたいと仮定します。 まず、{{ic|http}} ユーザに実行権限を与えます: # setfacl -m "u:http:--x" /home/geoffrey {{Note|ディレクトリに対する実行権限は、プロセスがディレクトリのコンテンツを確認できるようにするために必要です。}} これで {{ic|http}} ユーザが {{ic|/home/geoffrey}} 内のファイルにアクセスできるようになったので、{{ic|other}} にアクセス権は必要ありません: # chmod o-rx /home/geoffrey {{ic|getfacl}} を使って変更を確認してください: {{hc|$ getfacl /home/geoffrey| getfacl: Removing leading '/' from absolute path names # file: home/geoffrey # owner: geoffrey # group: geoffrey user::rwx user:http:--x group::r-x mask::r-x other::--- }} 上記の出力で、{{ic|other}} は如何なるパーミッションも持っていませんが、{{ic|http}} ユーザは依然として (ホームディレクトリ下の) ファイルにアクセスできることが分かります。ゆえに、セキュリティが向上したはずです。 特定のディレクトリやファイルへの書き込みアクセス権を {{ic|http}} ユーザに与えたい場合は、以下を実行してください: # setfacl -dm "u:http:rwx" /home/geoffrey/project1/cache == 参照 == * {{man|1|getfacl}} * {{man|1|setfacl}} * [https://www.usenix.org/legacy/publications/library/proceedings/usenix03/tech/freenix03/full_papers/gruenbacher/gruenbacher_html/main.html POSIX Access Control Lists on Linux] * [https://unix.stackexchange.com/questions/1314/how-to-set-default-file-permissions-for-all-folders-files-in-a-directory How to set default file permissions for all folders/files in a directory?] {{TranslationStatus|Access Control Lists|2023-05-10|704836}}
このページで使用されているテンプレート:
テンプレート:Accuracy
(
ソースを閲覧
)
テンプレート:Hc
(
ソースを閲覧
)
テンプレート:Ic
(
ソースを閲覧
)
テンプレート:META Message
(
ソースを閲覧
)
テンプレート:Man
(
ソースを閲覧
)
テンプレート:Note
(
ソースを閲覧
)
テンプレート:Pkg
(
ソースを閲覧
)
テンプレート:Tip
(
ソースを閲覧
)
テンプレート:TranslationStatus
(
ソースを閲覧
)
アクセス制御リスト
に戻る。
検索
検索
アクセス制御リストのソースを表示
話題を追加