由于公司最近在折腾点东西,让我尝试学习和研究Linux Shell脚本方面的项目。虽然平时购买点VPS,搭建网站环境和简单的运维没有问题,但是对于Shell脚本还是有些陌生的,所以准备陆续的学习一段时间,且作为学习记录和习惯,在博客中也会把学习以及脑袋记不住的内容用文字记录下来。
chmod,这个Linux命令在曾经VPS主机中安装环境和编译脚本的时候也有需要用到的,用来设定网站、文件目录的权限,比如我们给网站某个目录和文件设置可读、只读等等,确保文件和目录的安全设置。
第一、文件身份
u : User,即文件或目录的拥有者;
g : Group,即文件或目录的所属群组;
o : Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围;
a : All,即全部的用户,包含拥有者,所属群组以及其他用户;
在当前某个文件的身份,权限包括本身,以及在所存在组中的权限,以及组外的权限。
第二、文件权限
r :读取权限,数字代号为“4”;
w :写入权限,数字代号为“2”;
x :执行权限,数字代号为“1”;
– :不具任何权限,数字代号为“0”;
s :特殊功能说明:变更文件或目录的权限。
这里文件用户身份分成4种,每个用户身份有对应不同的权限,一般是读取、写入、执行。一般我们看到的rwx对应的数字相加标示的,其实用字符表示也一样,只不过需要单独的设置。
第三、举例解释
chmod -R 755 itbulu
从这个例子中我们可以看到对于itbulu文件夹以及子目录中的设置7(所有者权限)、5(所在组权限)、5(其他组用户权限)。
chmod -R 644 itbulu
表示所有者有读写权限,其他用户只有只读权限。
chmod -R 777 itbulu
表示每个人都有读、写、执行权限。
chmod u+x,g+w itbulu
这个表示所有者用户有执行权限,组用户成员有写入权限。
chmod u=rxw,g=rwx,o=rwx itbulu
这个与我们上面看到的777权限意思是一样的,有些时候还是数字表达比较简单。
chmod o-x itbulu.sh
这里要顺带提一下=,+,-。这三个表示完全赋予、添加某个权限、减掉某个权限,比如上面一个例子就可能之前不需要赋予o其他用户执行权限,那这里就把减掉。
总结,chmod,权限的设置看似简单,但是在实际的使用中还是比较讲究的,不能乱设置更高的权限,否则文件会有安全风险,也不能设置过低权限,否则复无法执行。