OpenBSD 中是否可以有文件系统权限 ACL(或类似权限)?我试图创建一个文件夹,其中一个组具有读写访问权限,而另一个组具有只读访问权限。我不想授予所有人读取权限,也不想将写入权限限制给单个用户,因此两者都需要由组权限控制。
编辑:有人提出 OpenBSD 可能根本没有 ACL。这很好。问题仍然存在:我如何(或者甚至有可能)在 OpenBSD 中设置文件夹权限,使得一个组具有写入权限,另一个组具有只读权限,而其他人则无权访问?
答案1
你不能。
下面是一个示例,说明如何使用超级用户的 BSD 交叉参考。
你可以从函数开始open()
,这是一个系统调用,因此,它sys_
在内核中用前缀定义。搜索sys_open
。你会在http://bxr.su/OpenBSD/sys/kern/vfs_syscalls.c#sys_open。
如果你关注sys_open()
得足够久,你会发现http://bxr.su/OpenBSD/sys/kern/vfs_vops.c#VOP_ACCESS。
在 中VOP_ACCESS()
,您将看到每个文件系统都有自己的*_access
函数来检查权限,它是存储在 中的指针v_op->vop_access
。
搜索vop_access
参考资料,你可以找到文件系统的所有单独访问函数。对于 UFS,它是http://bxr.su/OpenBSD/sys/ufs/ufs/ufs_vnops.c#ufs_access。
在中ufs_access()
,你可以看到它回调到独立于共享文件系统的代码来验证权限——http://bxr.su/OpenBSD/sys/kern/vfs_subr.c#vaccess。
通过vaccess()
,您可以亲眼看到权限是如何验证的。
您想要做的事情在 OpenBSD 中是不可能的,因为它没有 ACL。
解决方法是,您可以共享一个用户/组,并通过以下方式实施 ACL 策略须藤以及一些定制的脚本。