文件权限的粒度有多细才算太细?

文件权限的粒度有多细才算太细?

我知道有些产品和工具需要非常精细的权限管理,但底层文件系统呢?在相关问题,我询问了文件系统,而不是与 NTFS 进行密切比较,以便本机获得权限支持的粒度。

经典的 Unix 权限,即用户|组|其他的读|写|执行,都很棒。但当用户属于多个组,并且文件需要被其他用户访问时,这些权限似乎就失效了。两个都他所在的组可以读取该文件,但其他人则不能读取(因此rw-rw-r--在本例中为“坏”)。可以创建一个符号链接,让其他组可以读取该文件,或者可以创建一个“父”组来保存用户所在的两个组,并将文件所有权设置为 而不是user:parentuser: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

这符合你的场景吗?这是一个好的解决方法吗?这是我多年来一直在做的事情,我很想知道它是否好用。:)

相关内容