本笔记主要介绍权限管理命令chmod
1. 权限管理命令:chmod
英文助记:change the permission mode of a file
语法:chmod [{ugoa} {±=} {rwx} 文件/目录] (u,g,o分别表示所有者,所属组,其他用户)
-R 递归修改
1.1 chmod示例:
解释:先用ls -l列出该目录下的详细信息,发现文件abc的权限为 rw-r–r--。这时,我想给所有者增加可执行权限x,因此采用命令 chmod u+x abc; 同时,也可以一次性加上多个权限,例如chmod g+x,o+x abc(给所属组和其他用户均加上可执行权限x,但是注意,要用逗号隔开)。
用加减赋值号表示固然方便,但是这种方式并不是经常采用,而是采用数字表示法:
r(读)—>4, w(写)---->2 x(执行)—>1
助记:权限分为“可读-可写-可执行”,若有哪个权限,就将哪个位记为1.例如,只拥有可读权限(r–, 100),将100转换成八进制,就是4,其他同理。
例如,假设某个文件的权限为 rwx rw- r–,则化成数字就是 764
问题:递归创建目录后,用chmod修改根目录权限,子目录权限会变吗?
示例:
先用mkdir -p /temp/a/b 在/temp目录下递归创建目录a和b(b是a的子目录)
这时,查看a目录的权限:
再改变a的权限:
这时,再查看b目录的权限:
并没有改变。
所以,要想修改b的权限,就要使用递归来修改了:chmod -R 777 /temp/a
问题:root用户在某目录下创建的普通文件,其他用户可以删掉吗???
示例:
root用户在/temp目录下创建了/c,在/c下创建了普通文件abc.txt:
切换到之前创建的其他用户zhangsan进行删除:
删除失败,提示权限不够。可能有的人已经认为,root创建的肯定删除不了。但是,再往下看,我将c目录的权限修改一下,为该目录加上写权限:
这时,再用zhangsan删除:
没有报错,删除成功。这是为什么呢?是因为没有对权限理解清楚,接下来我总结了一张表:
因此结论是:删除文件的前提是对文件所在的目录有写权限。