为了更改文件权限,我知道我可以使用 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 目录。