简介

chmod:(全拼:change mode)命令是控制用户对文件的权限的命令。
是Linux系统中关于权限的重要命令之一。还有一个重要命令是----chown

详解

权限讲解

Linux的文件调用权限分为三级 : 文件所有者(Owner)、用户组(Group)、其它用户(Other Users)。
file-permissions-rwx.jpg
FileType其实有三种(-、d、l),上图摘自菜鸟教程

-dl
文件文件夹链接文件

权限类型有三种(r、w、x),也可以用数字代表某种权限。

r(read)w(write)x(execute)-
读权限写权限可执行权限没有权限
4210
┌──(root㉿kali)-[~/Desktop/example]
└─# ll   #查看文件详细信息,包括文件权限
total 4
-rw-r--r-- 1 root root 1 Dec  9 01:30 a.txt
#第一个"-"代表是文件,rw-代表所属用户权限,r--代表用户组权限,第二个r--代表其他用户权限

命令讲解

语法: 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

除了使用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

结束语

日日学习,蒸蒸向上