4

是否有一种组合变体,chmod可以chgrp在每个文件的一个系统调用中同时设置权限和组?

4

2 回答 2

3

没有这样的变体,因为这两个操作是由不同chmod(2)chown(2)系统调用实现的。

远离chmodchown

由于安全问题,chmod您可能正在寻找这样的变体。chown如果是这种情况,您可以使用以下策略:

  1. 将模式标志剥离到目标文件上的一个非常保守的集合(可能为空)。
  2. 更改目标文件的所有者和组。
  3. 为目标文件提供所需的模式标志。

这样,您就可以避免与连续调用chmodandchown或 to chownand相关的潜在安全问题chmod

install/open把戏_

唯一同时设置模式标志和所有权信息的系统调用可能是open(2). 因此,您可以使用模拟目标所有者的进程以适当的模式打开文件。这可能就是install这样做的,所以如果这是一个选项:

  1. 重命名旧文件。
  2. 使用命令将旧文件复制到具有所需所有权和访问模式信息的新文件中install
  3. 删除旧文件。

但是,这样做会破坏硬链接。该解决方案基于chown并且chmod没有该问题。

于 2014-09-11T11:50:57.260 回答
1

AFAIK,不。

此外,由于文件访问模式和所有者/组信息是使用不同的系统调用设置的(请参阅man 2 chmodman 2 chown),我认为不可能实现这样的命令......至少在主流的类 Unix 系统上是不可能的。

(显然,可以修改 GNU/Linux 内核以添加组合系统调用,但是使用该系统调用的假设命令将不可移植。)

于 2014-09-11T11:06:59.580 回答