如何通过bash将文件所有者的mod号复制到文件组?

时间:2018-12-27 12:50:45

标签: bash

我使用find . -type f -user apache ! -group apache查找以下文件:

[root@localhost www]# ls -all
-rw-r--r--  1   apache websites     191 Apr 23  2018 robots.txt
-rwx-rw-rx-  3   apache ftpuser      38 May 14  2018 functions

我想将这些文件的group mod修改为与owner mod相同的编号。

例如如下:
在文件robots.txt中,文件所有者apache的mod为6(来自644),然后将组websites'的mod更改为6,然后将robots.txt的mod更改为664.
在文件functions中,文件所有者apache的mod为7(从765开始),然后将组ftpuser的mod更改为7,然后将functions的mod更改为到775。

如何使用bash脚本来做到这一点?

2 个答案:

答案 0 :(得分:1)

尝试:

find . -type f -user apache ! -group apache -exec chmod g=u {} \;

答案 1 :(得分:1)

您可以使用stat命令通过stat命令检索权限: [https://askubuntu.com/questions/152001/how-can-i-get-octal-file-permissions-from-command-line][1]

perms=$(stat -c "%a" my_file.txt)

然后,您可以获取访问权限并进行拆分:

user=${perms:0:1}
group=${perms:2:1}
other=${perms:2:1}
$myPerms=$user$user$other

最后,只需将新权限应用于文件:

chmod $myPerms my_file.txt

像这样的东西应该起作用