web-dev-qa-db-ja.com

WindowsパーミッションのようなLinux上のACL

Windowsのようなユーザーやグループに対するLinuxのアクセス許可をより高度に制御できるLinux用の何かがありますか。それがSeLinuxの目的ですか?

2
Jason

ほとんどすべてのUnixライクなシステムはACLをサポートしています。 Linuxでは、 POSIX ACL 形式が使用されます。 FreeBSDは、POSIXスタイルとNFSv4スタイルの両方のACLをサポートしています(Linuxにも NFSv4 ACL を追加する定期的な試みがあります)。

POSIX ACL形式は、ほとんどの場合、複数のユーザーに読み取り/書き込み/実行権限を指定できるようにするための単なる拡張機能です。

$ setfacl -m u::rw,u:httpd:r,g::- ssl.key

$ getfacl ssl.key
# owner: root
# group: root
user::rw-
user:openldap:r--
user:httpd:r--
user:postfix:r--
group::---
mask::r--
other::---

継承は「デフォルトACL」を使用して行われます。

$ getfacl /var/log/journal/
# owner: root
# group: systemd-journal
# flags: -s-
user::rwx
group::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:adm:r-x
default:group:wheel:r-x
default:mask::r-x
default:other::r-x

$ touch /var/log/journal/test
$ getfacl /var/log/journal/test
# owner: root
# group: systemd-journal
user::rw-
group::r-x          #effective:r--
group:adm:r-x       #effective:r--
group:wheel:r-x     #effective:r--
mask::r--
other::r--

一方、NFSv4 ACL形式は、WindowsおよびNTFSの形式と非常に似ていますが、プリンシパル名がわずかに異なります(WindowsSIDまたはDOMAIN\nameではなくNFSv4スタイルのuser @ domainを使用)が、アクセス許可フラグはほぼ同じです。


ACLと基本的なUnixパーミッションはどちらも「随意アクセス制御」ツールであり、通常はオブジェクトの所有者によって設定されます。ファイルを作成すると、誰でも読めるようになります。一方、SELinuxは 必須アクセス制御 の実装です–すべてのSELinuxルールはシステム管理者によって作成され、変更することはできませんユーザーが作成したファイルであっても、ユーザーによって。他のそのようなシステムはAppArmor、SMACKです。 Windows Vistaには、 必須整合性制御 と呼ばれる非常に基本的なスキームがあります。

2
user1686