chmod:(全拼:change mode)命令是控制用户对文件的权限的命令。
是Linux系统中关于权限的重要命令之一。还有一个重要命令是----chown。
Linux的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
FileType其实有三种(-、d、l),上图摘自菜鸟教程。
- | d | l |
---|---|---|
文件 | 文件夹 | 链接文件 |
权限类型有三种(r、w、x),也可以用数字代表某种权限。
r(read) | w(write) | x(execute) | - |
---|---|---|---|
读权限 | 写权限 | 可执行权限 | 没有权限 |
4 | 2 | 1 | 0 |
┌──(root㉿kali)-[~/Desktop/example]
└─# ll #查看文件详细信息,包括文件权限
total 4
-rw-r--r-- 1 root root 1 Dec 9 01:30 a.txt
#第一个"-"代表是文件,rw-代表所属用户权限,r--代表用户组权限,第二个r--代表其他用户权限
Bash
语法: chmod [OPTION]... MODE[,MODE]... FILE...
OPTION是可选参数,MODE是who(用户类型)+operator(操作符)+permission(权限类型)组合。
OPTION:
-c | 若该文件权限确实已经更改,才显示其更改动作 |
---|---|
-f | 若该文件权限无法被更改也不要显示错误讯息 |
-v | 显示权限变更的详细资料 |
-R | 对目前目录下的所有文件与子目录进行相同的权限变更(即以递归的方式逐个变更) |
--help | 显示辅助说明 |
--version | 显示版本 |
who(用户类型):
u | 文件所有者 |
---|---|
g | 文件所有者所在组 |
o | 所有其他用户 |
a | 所有用户, 相当于 ugo |
operator(操作符):
+ | 为指定的用户类型增加权限 |
---|---|
- | 去除指定用户类型的权限 |
= | 设置指定用户权限的设置,即将用户类型的所有权限重新设置 |
┌──(root㉿kali)-[~/Desktop/example/test]
└─# pwd #输出路径
/root/Desktop/example/test
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll #查看test.txt权限,第一个'-'代表文件,之后'rw-r--r--'代表权限,前三个用户权限,中间三个用户组权限,后三个其他用户权限
total 0
-rw-r--r-- 1 root root 0 Dec 10 08:35 test.txt
┌──(root㉿kali)-[~/Desktop/example/test]
└─# chmod u-w test.txt #去掉所属用户的w(写)权限
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-r--r--r-- 1 root root 0 Dec 10 08:35 test.txt
┌──(root㉿kali)-[~/Desktop/example/test]
└─# chmod g+rwx test.txt #用户组增加读写执行权限
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-r--rwxr-- 1 root root 0 Dec 10 08:35 test.txt
┌──(root㉿kali)-[~/Desktop/example/test]
└─# chmod u+rwx test.txt #用户增加读写执行权限
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-rwxrwxr-- 1 root root 0 Dec 10 08:35 test.txt
┌──(root㉿kali)-[~/Desktop/example/test]
└─# chmod u=rw test.txt #重新设置用户权限为读写,没有设置执行权限,所以执行权限为空
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-rw-rwxr-- 1 root root 0 Dec 10 08:35 test.txt
┌──(root㉿kali)-[~/Desktop/example/test]
└─# chmod ug-w,o+w test.txt #y用户和用户组取消写权限,同时其他用户增加写权限
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-r--r-xrw- 1 root root 0 Dec 10 08:35 test.txt
┌──(root㉿kali)-[~/Desktop/example/test]
└─# chmod ugo+x test.txt #所有用户增加执行权限
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-r-xr-xrwx 1 root root 0 Dec 10 08:35 test.txt
┌──(root㉿kali)-[~/Desktop/example/test]
└─# chmod a-x test.txt #同上
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-r--r--rw- 1 root root 0 Dec 10 08:35 test.txt
┌──(root㉿kali)-[~/Desktop/example/test]
└─# cd .. #切换上级目录
┌──(root㉿kali)-[~/Desktop/example]
└─# pwd
/root/Desktop/example
┌──(root㉿kali)-[~/Desktop/example]
└─# chmod -R a+rwx test #设置test目录下的所有文件及目录权限,包括test目录
┌──(root㉿kali)-[~/Desktop/example]
└─# ll
total 4
drwxrwxrwx 2 root root 4096 Dec 10 08:35 test
┌──(root㉿kali)-[~/Desktop/example]
└─# cd test
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-rwxrwxrwx 1 root root 0 Dec 10 08:35 test.txt
Bash
除了使用MODE模式来设置权限,还可以使用数字来设置权限,相当于是用操作符 = 来设置权限。比如设置用户读写权限,没有执行权限。读是4写是2,4+2=6。看一下实例:
┌──(root㉿kali)-[~/Desktop/example/test]
└─# chmod 777 test.txt #第一个7代表用户权限,第二个代表用户权限、第三个代表其他用权限,7=4+2+1(所有权限)
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-rwxrwxrwx 1 root root 0 Dec 10 08:35 test.txt
┌──(root㉿kali)-[~/Desktop/example/test]
└─# chmod 770 test.txt #设置用户和用户组所有权限,其他用户没有任何权限
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-rwxrwx--- 1 root root 0 Dec 10 08:35 test.txt
┌──(root㉿kali)-[~/Desktop/example/test]
└─# chmod 644 test.txt #设置用户读写权限,用户组和其他用户读权限
┌──(root㉿kali)-[~/Desktop/example/test]
└─# ll
total 0
-rw-r--r-- 1 root root 0 Dec 10 08:35 test.txt
Bash
日日学习,蒸蒸向上