chmod,这个Linux命令在曾经VPS主机中安装环境和编译脚本的时候也有需要用到的,用来设定网站、文件目录的权限,比如我们给网站某个目录和文件设置可读、只读等等,确保文件和目录的安全设置。
hmod [options] mode files
只能文件属主或特权用户才能使用该功能来改变文件存取模式。mode可以是数字形式或以who opcode permission形式表示。who是可选的,默认是a(所有用户)。只能选择一个opcode(操作码)。可指定多个mode,以逗号分开。
options:
-c,--changes
只输出被改变文件的信息
-f,--silent,--quiet
当chmod不能改变文件模式时,不通知文件的用户
--help
输出帮助信息。
-R,--recursive
可递归遍历子目录,把修改应到目录下所有文件和子目录
--reference=filename
参照filename的权限来设置权限
-v,--verbose
无论修改是否成功,输出每个文件的信息
--version
输出版本信息。
第一、文件身份
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,权限的设置看似简单,但是在实际的使用中还是比较讲究的,不能乱设置更高的权限,否则文件会有安全风险,也不能设置过低权限,否则复无法执行。
s