我知道有些产品和工具需要非常精细的权限管理,但底层文件系统呢?在相关问题,我询问了文件系统,而不是与 NTFS 进行密切比较,以便本机获得权限支持的粒度。
经典的 Unix 权限,即用户|组|其他的读|写|执行,都很棒。但当用户属于多个组,并且文件需要被其他用户访问时,这些权限似乎就失效了。两个都他所在的组可以读取该文件,但其他人则不能读取(因此rw-rw-r--
在本例中为“坏”)。可以创建一个符号链接,让其他组可以读取该文件,或者可以创建一个“父”组来保存用户所在的两个组,并将文件所有权设置为 而不是user:parent
,user:boy
因为这样该user:girl
组就看不到该文件了。
您见过/实施过哪些好的解决方法?
答案1
我认为 NTFS 几乎完美地实现了平衡,它提供了一套简单易用的基本选项,同时也提供了深入研究的可能性,但前提是您需要这样做。我一直认为 Unix 系统过于简单(尽管这可能是由于 Unix 从 70 年代起就作为程序员的操作系统而传承下来的,而不是故意简化),原因如您所述,我不喜欢通过黑客手段绕过这些限制。我对黑客变通方法的经验是,它们往往会演变成对业务至关重要的技术策略,但在实施过程中并没有真正改变。
答案2
就我个人而言,权限最好只应用于目录级别。因此严格来说,我认为任何“文件权限”都过于细化,我尽可能避免使用它们。
好了,我很抱歉,但我对
“当用户属于多个组时,并且一个文件需要被两个组访问。”
正如您所说,经典的 unix 权限不允许一个“文件”由多个组拥有。您不能只创建一个额外的组,让用户组成“两个组”,并将该组设置为保存文件的目录的组吗?
例子:
# ls -laZ .
drwxr-xr-x root parent .
<snipped for clarity ignore>
drwxrwx--- root boy boy
drwxrwx--- root parent common
drwxrwx--- root girl girl
# tail /etc/group
parent:x:8525:b1,b2,crossdresser1,g1,g2
boy:x:8526:b1,b2,crossdresser1
girl:x:8527:g1,g2,crossdresser1
这符合你的场景吗?这是一个好的解决方法吗?这是我多年来一直在做的事情,我很想知道它是否好用。:)