chmod 什么时候失败?

Wug*_*Wug 9 ubuntu permissions chmod access-control

什么情况下会chmod失败?

我查看了手册页,但它只指定了用法,并没有详细说明它在什么情况下不起作用。

我假设在以下情况下chmod会起作用:

  • 你是根
  • 您拥有目标文件(并且正在设置一个普通模式位,即非粘性位,其他)

用户可以chmod用来更改他们拥有组访问权限的文件的权限吗?它与读/写访问有关吗?

Gil*_*il' 5

只有文件的所有者或 root 用户才能更改文件的权限。该文件或其父目录的当前权限不相关\xc2\xb9。这是在POSIX中指定的:

\n\n
\n

应用程序应确保进程的有效用户 ID 与文件的所有者匹配,或者进程具有适当的权限才能执行此操作。

\n
\n\n

在大多数 unice 上,\xe2\x80\x9c 适当的权限\xe2\x80\x9d 表示以 root 身份运行。如果不满足这些条件,chmod通常会失败并显示EPERM,但允许由于安全违规而中止程序等其他行为。

\n\n

此外,某些 Unix 变体具有系统特定的授权或禁止方式chmod。例如,Linux 有一项功能( CAP_FOWNER),允许进程更改文件的权限和其他元数据,而不管其所有者是谁。

\n\n

chmod即使文件存在、可访问并且具有适当的所有者,也可能因其他原因而失败。常见的包括只读文件系统或不支持FAT等权限的文件系统。不太常见的限制包括特定于系统的限制,例如Linux 的 ext2 文件系统及其后续文件系统上的不可变属性。

\n\n

\xc2\xb9除非运行的进程chmod必须能够访问该文件,因此它必须对包含该文件的目录以及它遍历的任何其他目录具有执行权限。

\n


dub*_*jim 1

用户可以使用 chmod 更改他们具有组访问权限的文件的权限吗?

你为什么不尝试看看呢?

$ touch foo
$ sudo install -o root -g $(id -gn) -m660 foo bar
$ ls -la bar
-rw-rw----  1 root  staff  0 Oct 21 21:33 bar
$ chmod g-w bar
chmod: bar: Operation not permitted
$ chmod g+x bar
chmod: bar: Operation not permitted
Run Code Online (Sandbox Code Playgroud)