Linux:批量修改文件夹、文件的权限和所有者(chmod命令, chown命令)

在使用过程中,经常会遇到如下情况:

需要修改某个目录下的文件夹权限为:0755,所有者为root,文件权限为:0644,所有者为root。但是这个目录下有NNNN个文件夹,NNNN个文件,单独设置起来那需要好几年。单一使用 chmod -R 只能批量处理所有的文件和文件夹,完全解决不了问题。
那我们就需要用到如下命令了:

单独设置某个目录下所有文件夹的权限

find -type d -exec chmod 0755 {} \;

单独设置某个目录下所有文件的权限

find -not -type d -exec chmod 644 {} \;

如果要单独设置文件夹的所有者,只需要将命令改成如下即可:

find -type d -exec chown root.root {} \;

问题解决,耗时0.00001秒。

 

延伸:

命令: ls -al

输出:

[root@localhost test]# ll -al

总计 316lrwxrwxrwx 1 root root     11 11-22 06:58 linklog.log -> log2012.log

-rw-r–r– 1 root root 302108 11-13 06:03 log2012.log

-rw-r–r– 1 root root     61 11-13 06:03 log2013.log

-rw-r–r– 1 root root      0 11-13 06:03 log2014.log

-rw-r–r– 1 root root      0 11-13 06:06 log2015.log

-rw-r–r– 1 root root      0 11-16 14:41 log2016.log

-rw-r–r– 1 root root      0 11-16 14:43 log2017.log

我们以log2012.log为例:

-rw-r–r– 1 root root 296K 11-13 06:03 log2012.log

第一列共有10个位置,第一个字符指定了文件类型。在通常意义上,一个目录也是一个文件。如果第一个字符是横线,表示是一个非目录的文件。如果是d,表示是一个目录。从第二个字符开始到第十个共9个字符,3个字符一组,分别表示了3组用户对文件或者目录的权限。权限字符用横线代表空许可,r代表只读,w代表写,x代表可执行。

例如:
– rw- r– r–
表示log2012.log是一个普通文件;log2012.log的属主有读写权限;与log2012.log属主同组的用户只有读权限;其他用户也只有读权限。

确定了一个文件的访问权限后,用户可以利用Linux系统提供的chmod命令来重新设定不同的访问权限。也可以利用chown命令来更改某个文件或目录的所有者。利用chgrp命令来更改某个文件或目录的用户组。

chmod命令是非常重要的,用于改变文件或目录的访问权限。用户用它控制文件或目录的访问权限。chmod命令详细情况如下。

权限范围:
u :目录或者文件的当前的用户
g :目录或者文件的当前的群组
o :除了目录或者文件的当前用户或群组之外的用户或者群组
a :所有的用户及群组

权限代号:
r :读权限,用数字4表示
w :写权限,用数字2表示
x :执行权限,用数字1表示
– :删除权限,用数字0表示
s :特殊权限

 

参考: 

Linux: chmod 和 chown用法小结

linux: 批量修改文件夹及文件夹下文件的名字

Linux:find 命令用法简介

 

本文:Linux 批量修改文件夹、文件的权限和所有者(chmod, chown)