本文是Linux Shell脚本系列教程的第(一)篇,更多shell教程请看:Linux Shell脚本系列教程 想要学习linux,shell知识必不可少,今天就给大家来简单介绍下shell的基本知识。 Shell简介 Shell自身是一个用C语言编写的程序,是用户来使用Unix或Linux的桥梁,用户的大部分工作都需要通过Shell来完成。只有熟练使用shell,才能熟练掌握linux。 可以说:Shell既是一种命令语言,又是一种程序设计语言。 作为命令语言,它可以交互式地解释和执行用户输入的命令;而作为程序设计语言,它可以定义各种变量和参数,并提供了许多在高级语言中才具有的控制结构,包括循环和分支。 Shell虽然不是Unix/Linux系统内核的一部分,但它调用了系统核心的大部分功能来执行程序、建立文件并以并行的方式来协调各个程序的运行。…
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)