chmod是一条在Unix系统中用于控制用户对文件的权限的命令(change mode单词前缀的组合)和函数。
只有文件所有者和超级用户可以修改文件或目录的权限。可以使用绝对模式,符号模式指定文件的权限。
※命令格式
chmod [options] mode files
mode可以是数字形式或以who opcode permission形式表示。who是可选的,默认是a(所有用户)。只能选择一个opcode(操作码)。可指定多个mode,以逗号分开。
※八进制语法
chmod命令可以使用八进制数来指定权限。
文件或目录的权限位是由9个权限位来控制,每三位为一组,它们分别是文件所有者(User)的读、写、执行,用户组(Group)的读、写、执行以及其它用户(Other)的读、写、执行。
历史上,文件权限被放在一个比特掩码中,掩码中指定的比特位设为1,用来说明一个类具有相应的优先级。
chmod的八进制语法的数字说明:
r 4 w 2 x 1 - 0
所有者的权限用数字表达:属主的那三个权限位的数字加起来的总和。如rwx ,也就是4+2+1 ,应该是7。
用户组的权限用数字表达:属组的那个权限位数字的相加的总和。如rw- ,也就是4+2+0 ,应该是6。
其它用户的权限数字表达:其它用户权限位的数字相加的总和。如r-x ,也就是4+0+1 ,应该是5。
※参数选项
-c,--changes
只输出被改变文件的信息
-f,--silent,--quiet
当chmod不能改变文件模式时,不通知文件的用户
-R,--recursive
可递归遍历子目录,把修改应到目录下所有文件和子目录
--reference=filename
参照filename的权限来设置权限
-v,--verbose
无论修改是否成功,输出每个文件的信息
--version
输出版本信息。
who
u 用户
g 组
o 其它
a 所有用户(默认)opcode
+ 增加权限
- 删除权限
= 重新分配权限permission
r 读
w 写
x 执行
s 设置用户(或组)的ID号
t 设置粘着位(sticky bit),防止文件或目录被非属主删除
u 用户的当前权限
g 组的当前权限
o 其他用户的当前权限
※相关命令
chown命令,chown 修改文件和文件夹的用户和用户组属性,chmod 修改文件和文件夹读写执行属性。
su和sudo命令,使用 su 命令临时切换用户身份,sudo允许系统管理员让普通用户执行一些或者全部的root命令。
※场景范例
chmod u+x file 给file的属主增加执行权限
chmod 751 file 给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限$ chmod u=rwx,g=rx,o=x file 上例的另一种形式
chmod =r file 为所有用户分配读权限
chmod -R u+r directory 递归地给directory目录下所有文件和子目录的属主分配读的权限
chmod 4755 设置用ID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。
>>Linux 数字文件权限解析
Linux下,查看某路径下用(ls -l)查看所有文件的详细属性列表时,会看到文件的操作权限,类似“drwxr-xr-x”的字符串。
这串字符可以分成4段理解,结构为“d + 文件所有者操作权限 + 文件所有者所在组操作权限 + 其余人的操作权限”:
1,第一段:例子中字母“d”,表示文件所在目录
2,第二段:例子中字符串“rwx”,表示文件所有者对此文件的操作权限
3,第三段,例子中字符串“r-x”,表示文件所有者所在组对些文件的操作权限
4,第四段,例子中字符串“r-x”,表示除2、3两种外的任何人对此文件的操作权限
通常用三个数字来表示文件的读取、写入、执行权限:
执行:1
写入:2
读取:4
随便写个数字:755,这个3位数分别对应前面所说的分段:7对应第二段,5对应第三段,5对应第四段。
如果可读,权限是二进制的100,十进制是4;
如果可写,权限是二进制的010,十进制是2;
如果可运行,权限是二进制的001,十进制是1;
含义:
7:表示文件所有者的权限,4+2+1=7,即文件所有者对该文件有生杀大权,读、写、执行随便。
5:表示文件所有者所在组的权限:4+1=5,即文件所有者所在组对文件有读、执行权限,没有写权限。
5:同上,其余人对该文件只有读、执行权限,没有写权限。