如何同时更改文件的权限和组所有者

如何同时更改文件的权限和组所有者

为了更改文件权限,我知道我可以使用 chmod。为了更改组所有者,我可以使用 chgrp。但是,如果我想同时更改权限和所有者,我可以在 Linux 上使用任何命令吗?

例如,有一个具有以下权限和所有者的文件:

-rw-r--r--+  1 raymondtau  staff    0 May  8 16:38 WantToChangeThisFile

现在我想将其更改为:

---x-w--wx+  1 raymondtau  admin    0 May  8 16:38 WantToChangeThisFile

我知道我可以使用这个命令:chmod 123 WantToChangeThisFile && chgrp admin WantToChangeThisFile,但想知道是否有任何巧妙的方法可以做到这一点。

答案1

如果您还想要将文件复制到某个地方(例如其最终目的地),您可能需要查看install命令:

install -m 0777 -o root $sourcefile $destinationfile

答案2

有一个称为“UNIX-way”的概念。每个工具应该执行一个简单的功能。如果需要更复杂的功能,他可以组合更小的工具。

相反的是整体设计,所有功能都聚合在一个巨大的工具中。

如果您想做一些复杂的事情 - 只需编写一个脚本,调用简单的工具即可。

答案3

在 *nix 中使用正确的工具来完成工作很重要,但实际上在每个链接命令中重复相同的路径看起来很愚蠢。相反,您应该真正使用 Bash 变量,并且在较小的脚本中,尤其是使用$_.

你的命令将变成:

chmod 123 WantToChangeThisFile && chgrp admin $_

ALT + .执行类似的操作,在当前 shell 中提取最后使用的参数。

答案4

Rsync 在这种情况下很有用:

摘自精美手册 (TM)

--chown=USER:GROUP 简单用户名/组名映射

--chmod=CHMOD 影响文件和/或目录权限

因此,例如,您想要 chmod /mnt/lala/lala4000/ "ugo=rX" 并 chown "foo.bar"

rsync --chmod=ugo=rX --chown=foo:bar -rvtpolgh /mnt/lala/lala4000/ /mnt/lala/lala4000/

这将递归地 chown 和 chmod 目录。

相关内容