![OpenBSD 中一个文件夹上不同组具有不同的权限?](https://linux22.com/image/628124/OpenBSD%20%E4%B8%AD%E4%B8%80%E4%B8%AA%E6%96%87%E4%BB%B6%E5%A4%B9%E4%B8%8A%E4%B8%8D%E5%90%8C%E7%BB%84%E5%85%B7%E6%9C%89%E4%B8%8D%E5%90%8C%E7%9A%84%E6%9D%83%E9%99%90%EF%BC%9F.png)
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 策略须藤以及一些定制的脚本。