chmod权限命令

一、chmod命令的语法

用于改变文件或目录权限

语法:chmod [对谁操作(ugoa)] [操作符 (+-=)] [赋予的权限(rwx)] 文件名1 文件名2…

chmod [-cfvR] [–help] [–version] mode file…

-c : 若该档案权限确实已经更改,才显示其更改动作
-f : 若该档案权限无法被更改也不要显示错误讯息
-v : 显示权限变更的详细资料
-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)
–help : 显示辅助说明
–version : 显示版本

对谁操作:

u    用户user,表现文件或目录的所有者
g    用户组group,表现文件或目录所属的用户组
o    其他用户other
a    所有用户all   

操作符:

+ 添加权限       -  减少权限         =直接给定一个权限

权限:

r 读  w 写  x 执行

八进制数字表示权限

​ r w x
二进制代表100 010 001
十进制代表 4 2 1

范例:

chmod 755 1.txt
chmod 777 /etc/hurenxiang 将hurenxiang这个文件夹权限改为对所有用户可读,可写,可执行
chmod 775 /etc/caiyao 将caiyao这个文件夹权限改为其他用户不可读

rwx的值为4+2+1=7; 
rw-的值为4+2=6; 
r-x的值为4+1=5。 
rwxr-xr-x的值为755
-rw------- (600) 只有属主有读写权限。  
-rw-r--r-- (644) 只有属主有读写权限;而属组用户和其他用户只有读权限。 
-rwx------ (700) 只有属主有读、写、执行权限。  
-rwxr-xr-x (755) 属主有读、写、执行权限;而属组用户和其他用户只有读、执行权限。  
-rwx--x--x (711) 属主有读、写、执行权限;而属组用户和其他用户只有执行权限。  
-rw-rw-rw- (666) 所有用户都有文件读、写权限。这种做法不可取。  
-rwxrwxrwx (777) 所有用户都有读、写、执行权限。更不可取的做法。

二.chmod命令结构详解

在Linux中输入ll,会出现指定目录下文件/目录的详细信息,

chmod权限命令-风君雪科技博客

详解下图:权限一共是10个字符,第1个字符分为1组,后面9个字符分为3组。

第1个字符有两种情况:如果是“d”则代表这是一个文件夹,如果是“—”代表这是一个文件;

第2、3、4个字符:表示文件拥有者的权限,可以用u来表示,拥有四个权限:r:读权限 , w:写权限,x:执行权限,—:无权限;

第5、6、7个字符:表示文件所属群组的权限,可以用g来表示,拥有四个权限:r:读权限 , w:写权限,x:执行权限,—:无权限;

第8、9、10个字符:表示的是除拥有者和所属群组之外的其他所有的用户,可以用o来表示,拥有四个权限:r:读权限 , w:写权限,x:执行权限,—:无权限。
chmod权限命令-风君雪科技博客

三.chmod命令的使用

rw–wx–x //该文件的 拥有者有读取和写入的权限,但没有执行权限;
所在群组没有读取的权限,但有写入和执行的权限;
其他用户没有读取和写入的权限,但有执行的权限

d–xr-xrw- //该文件夹的 拥有者没有读取和写入的权限,但有执行的权限;
所在群组没有写入的权限,但有读取和执行的权限;
其他用户没有执行权限,但有读取和写入的权限

范例 :

第一种修改权限的方法

将档案 file1.txt 设为所有人皆可读取 :
chmod ugo+r file1.txt
将档案 file1.txt 设为所有人皆可读取 :
chmod a+r file1.txt
将档案 file1.txt 与 file2.txt 设为该档案拥有者,与其所属同一个群体者可写入,但其他以外的人则不可写入(逗号隔开) :
chmod ug+w,o-w file1.txt file2.txt
将 ex1.py 设定为只有该档案拥有者可以执行 :
chmod u+x ex1.py
将目前目录下的所有档案与子目录皆设为任何人可读取 :
chmod -R a+r *
(-R : 对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更) )

第二种:用数字赋权:
chmod a=rwx file 和 chmod 777 file 效果相同
chmod ug=rwx,o=x file 和 chmod 771 file 效果相同

第三种:修改目录下的所有文件 | 所有文件 | 所有文件夹和文件的权限

要修改某目录下所有的文件夹属性为可写可读可执行

chmod 777 *
把文件夹名称用*来代替就可以了

要修改某目录下所有的文件属性为可写可读可执行

chmod 777 *.*
把文件夹名称与后缀名用*来代替就可以了。 
同理若是要修改所有htm文件的属性
chmod 777 *.htm

要修改/tmp/sco下所有的文件和文件夹及其子文件夹属性为可写可读可执行

chmod -R 777 /tmp/sco

四.对可执行文件的赋权

用户创建的一个文件是没有任何权限的,再Linux的控制台可见文件无权限文件的字体是灰白色的,没权限那么此文件就只是文本文件,不可执行。

chmod权限命令-风君雪科技博客

蓝色表示目录;
绿色表示可执行文件,可执行的程序;
红色表示压缩文件或包文件;
浅蓝色表示链接文件;
灰色表示其它文件;

下面实践来看

首先上传了一个stop1.sh文件,是灰色,然后进行chmod +x给了权限。后来使用chmod -x 去除执行权限,可以明显看到效果

image-20200305184553462