乐趣区

关于linux:每天学一个-Linux-命令17chmod

昨日举荐:每天学一个 Linux 命令(16):mkdir

命令简介

chmod 命令用来变更文件或目录的权限。

文件或目录权限有读取、写入、执行这 3 种,另外还有 3 种非凡权限。用户能够应用 chmod 去设置文件与目录的权限,设置形式采纳文字或数字皆可。链接文件的权限无奈间接变更,如果用户须要对链接文件批改权限,其实在作用是作用在原始文件上。

语法格局

chmod  [选项]   [权限] [文件或目录]
chmod [OPTION] [MODE]  FILE
chmod [OPTION] [MODE]  DIRECETORY

选项阐明

u  #用户 user,文件或目录的所有者。g  #用户组 group,文件或目录所属组
o  #其它用户 others
a  #所有用户 all,零碎默认
+  #增加权限
-  #勾销权限
=  #配置文件的权限为指定的权限
r  #可读权限
w  #可写权限
x  #可执行权限
-  #没有权限
x  #设置可执行权限
s  #设置 suid 和 sgid,能够应用“u+s”,“g+s”的形式来设置
t  #只有目录或文件的所有者才能够删除目录下的文件
-c    #成果相似“-v”参数
-f    #操作过程中不显示任何错误信息;-R    #递归解决,将指定目录下的所有文件及子目录一并处理;- v 或——verbose    #显示命令运行时的具体执行过程;--reference=< 参考文件或目录 > #把指定文件或目录的所属组权限设成参考文件或目录的所属组一样;< 权限范畴 >+< 权限设置 > #开启权限范畴的文件或目录的该选项权限设置;< 权限范畴 >-< 权限设置 > #敞开权限范畴的文件或目录的该选项权限设置;< 权限范畴 >=< 权限设置 > #指定权限范畴的文件或目录的该选项权限设置;--help     #显示帮忙信息
--version  #显示版本信息

权限阐明

 -rw-r--r--   1 mingongge  mingongge   651 Oct 12 12:53 test.txt
# ↑╰┬╯╰┬╯╰┬╯
# ┆ ┆  ┆  ╰┈ 0 其他人
# ┆ ┆  ╰┈┈┈┈┈┈┈┈┈┈┈┈┈┈┈ g 属组
# ┆ ╰┈┈┈┈ u 属组
# ╰┈┈ 第一个字母是文件类型 
#d 代表的是目录(directroy)
#- 代表的是文件(regular file)
#s 代表的是套字文件(socket)
#p 代表的管道文件 (pipe) 或命名管道文件(named pipe)
#l 代表的是符号链接文件(symbolic link)
#b 代表的是该文件是面向块的设施文件(block-oriented device file)
#c 代表的是该文件是面向字符的设施文件(charcter-oriented device file)
r= 读取属性 =4
w= 写入属性 =2
x= 执行属性 =1

非凡权限阐明

Linux 零碎除了失常的读写操作权限外,还有 Linux 非凡权限。包含 SET 位权限(suid,sgid)和粘滞位权限(sticky)。

chmod u+s filename  #设置 suid 位
chmod u-s filename  #去掉 suid 设置
chmod g+s filename  #设置 sgid 位
chmod g-s filename  #去掉 sgid 设置
chmod +t  filename  #设置粘滞位权限
chmod -t  filename  #去掉粘滞位权限

如果一个文件被设置了 suid 或 sgid,在其所有者或所属组权限的可执行位上有显著的标记,如果文件设置了 suid 且也设置了 x(执行)权限,则在其执行权限位上会显示一个字母 s(小写)。然而,如果没有设置 x 权限,则显示为字母 S(大写)。如下:

-rwsr-xr-x #设置了 suid,且文件所有者也配置了可执行权限
-rwSr--r-- #设置了 suid,但文件所有者没有配置可执行权限
-rwxr-sr-x #设置了 guid,且所属组也配置了可执行权限
-rw-r-Sr-- #设置了 guid,但所属组没有配置可执行权限

一个文件或目录如果被设置了粘滞位权限,会在其他人权限的可执行位上有标记。如果文件设置了 sticky 还设置了 x(执行)位,其他人权限的可执行位显示一个字母 t(小写)。然而,如果没有设置 x 位,则显示一个字母 T(大写)。如下:

-rwsr-xr-t #示意设置了粘滞位且其他人用户也配置了可执行权限
-rwSr--r-T #示意设置了粘滞位但其他人用户没有配置可执行权限

利用实例

$ chmod u+x file      
#给 file 的属主减少执行权限
$ chmod 751 mingongge     
#给 mingongge 的属主调配读、写、执行权限
$ chmod u=rwx,g=rx,o=x mingongge      
#给 mingongge 属主调配读写执行权限,属组调配读执行权限,其它人调配执行权限
$ chmod =r mingongge    
$ chmod 444 mingongge   
#为 mingongge 的所有者、所属组、其他人调配读权限
                
$ chmod -R u+r mingongge           
#递归地给 mingongge 录下所有文件和子目录的属主调配读的权限
$ chmod 4755 mingongge                           
#设置用户 ID,给属主调配读、写和执行权限,给所属组和其余用户调配读、执行的权限。

每天学一个 Linux 命令(15):man

每天学一个 Linux 命令(14):cat

每天学一个 Linux 命令(13):touch

退出移动版