正如了解 UNIX 权限和文件类型中所述,每个文件都具有以下权限设置(“文件模式”):
u”),g"),以及o”)。据我了解,文件的所有者始终可以使用chmod. 所有者下运行的任何应用程序也可以。
如果所有者可以随时更改权限,那么为什么要限制所有者自己的权限呢?
我能看到的唯一用途是防止意外删除或执行,如果有意的话,可以很容易地克服这一点。
这里提出了一个相关问题:“所有者”权限存在的原因是什么?群组权限还不够吗?它讨论了为什么所有者的权限不能由单个用户(所有者)组成的虚拟组替换。相比之下,这里我问的是原则上为所有者拥有权限的目的,无论它们是通过单独的“ u”八进制还是单独的组+ACL来实现。
Tob*_*ght 51
有多种原因需要减少所有者的权限(尽管很少会低于组的权限)。
最常见的是对不打算执行的文件没有执行权限。很多时候,shell 脚本是旨在源自其他脚本(例如您的.profile)的片段,并且作为顶级进程没有意义。命令完成只会提供可执行文件,因此正确的权限有助于交互式 shell。
意外覆盖文件是一个很大的风险 - 它可能通过错误输入命令而发生,甚至在 GUI 程序中更容易发生。从相机复制文件时,我要做的第一件事就是使它们(及其包含的目录)不可写,这样我所做的任何编辑都必须是副本,而不是覆盖原始文件。
有时,文件甚至不可读也很重要。如果我升级 Emacs 并且~/lisp目录中的本地软件包出现问题,我会选择性地禁用它们(使用chmod -r),直到它可以成功启动;然后我可以在修复兼容性问题时使它们一次可读。
一组正确的用户权限表明了意图。尽管用户可以更改权限,但行为良好的程序不会这样做(至少在没有事先询问的情况下不会这样做)。不要将权限视为限制用户,而应将它们视为限制用户的进程在给定时间点可以执行的操作。
Aus*_*arn 20
您似乎在这里忽略了相当重要的一点:行为良好的进程不会四处修改它们有权访问的文件的权限。lswon\xe2\x80\x99t 随机使您指向的目录可读,以便它可以列出目录内容。sshwin\xe2\x80\x99t \xe2\x80\x98fix\xe2\x80\x99 的权限~/.ssh或其包含的文件如果错误,它将拒绝运行。通常可以安全地假设您可能使用的任何程序都以这种方式表现良好。
这意味着通常会尊重所有者在给定文件上设置的权限(除非您\xe2\x80\x99是root用户或以其他方式能够短路DAC检查(例如在CAP_DAC_OVERRIDELinux上) ,因为健全的程序只信任内核来检查权限),因此保护给定文件免遭意外修改或执行通常很有用。虽然这个问题可以相对容易地克服,但用户必须明确地采取一些措施来克服它。IOW,它充当另一个确认步骤,表明 \xe2\x80\x98 是的,我确实想这样做。\xe2\x80\x99。
但更一般地说,由于通常会尊重所有者权限,因此您可以使用它们执行许多有用的操作:
\n.desktop文件标记为不受信任)。dg9*_*g99 18
大多数时候,我这样做是为了防止意外删除/修改,正如您所建议的。然而,有时,我这样做是为了可以对某个树中除我“保护”的文件/目录之外的所有文件/目录执行批量修改。
Bar*_*mar 11
受限所有者权限在受限环境中非常有用,在受限环境中,用户无权访问更改权限的工具。
典型的例子是匿名 FTP 服务器。您可以创建一个“dropbox”目录,其中所有者具有写入权限,但没有读取权限。这允许匿名用户上传文件,但不会列出其他用户已上传的文件。同时,该目录可由其所在组读取,因此我们会将允许从该目录检索的用户放入该组中。如果 FTP 服务器不提供chmod命令,则匿名用户无法覆盖该命令并授予自己列出目录的权限。