繁体   English   中英

结合chmod和chgrp的Shell命令

[英]Shell Command that Combines chmod and chgrp

是否存在chmodchgrp的组合变体,它在每个文件的单个系统调用中设置权限和组?

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

摆脱chmodchown

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

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

这样就可以避免与连续调用chmodchownchownchmod相关的潜在安全问题。

install / open技巧

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

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

但是,这样做会破坏硬链接。 基于chownchmod的解决方案没有这个问题。

AFAIK,没有。

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM