chmod命令
功能说明:变更文件或目录的权限。 是change mode英文的缩写。
语 法:
chmod [-cfRv][–help][–version][<权限范围>+/-/=<权限设置…>][文件或目录…] 或
chmod [-cfRv][–help][–version][数字代号][文件或目录…] 或
chmod [-cfRv][–help][–reference=<参考文件或目录>][–version][文件或目录…]
补充说明:
在UNIX系统家族里,文件或目录权限的控制分别以读取,写入,执行3种一般权限来区分,另有3种特殊权限可供运用,再搭配拥有者与所属群组管理权限范围。可以使用chmod指令去变更文件与目录的权限,设置权限方式采用文字(r/w/x/-)或数字代号(4/2/1/0)皆可。符号连接的权限无法变更,如果对符号连接修改权限,其改变会作用在被连接的原始文件。
参 数:
-c或--changes 效果类似"-v"参数,但该档案权限确实已经更改,才显示其更改部分。
-f或--quiet或--silent 若该档案权限无法被更改也不要显示错误讯息。
-R或--recursive 递归处理,将指定目录下的所有文件及子目录权限一并处理。
-v或--verbose 显示指令执行过程(即显示权限变更的具体信息)。
--help 在线帮助。
--reference=<参考文件或目录> 把指定文件或目录的权限全部设成和参考文件或目录的权限相同
--version 显示版本信息。
权限范围:
u:User, 即文件或目录的拥有者。
g:Group,即文件或目录的所属群组。
o:Other,除了文件或目录拥有者或所属群组之外,其他用户皆属于这个范围。
a:All, 即全部的用户,包含拥有者,所属群组以及其他用户。
权限设置:
<权限范围> + <权限设置> 代表开启权限范围的文件或目录的该项权限设置。
<权限范围> – <权限设置> 代表取消权限范围的文件或目录的该项权限设置。
<权限范围> = <权限设置> 代表指定权限范围的文件或目录的该项权限设置。
符号含义:
+ 表示添加权限、– 表示取消权限、= 表示唯一设定权限。
有关权限代号的部分,列表于下:
r:读取权限,数字代号为"4"。
w:写入权限,数字代号为"2"。
x:执行或切换权限,数字代号为"1"。
-:不具任何权限,数字代号为"0"。
注意:☆☆☆☆☆
- 对一般文件来说,rwx 主要是针对“文件的内容”来设计权限:
“读”( r ) :可读取此一文件的实际内容,如读取文本文件的文字内容等;
“写”(w) :可以编辑、新增或者是修改该文件的内容(但不含删除该文件);
“执行” ( x ) :该文件具有可以被系统执行的权限。则表示能够运行一个脚本程序。
疑问:什么是“执行” ( x ) ?
在Windows下面一个文件是否具有执行的能力是借由“ 扩展名 ”来判断的, 例如:.exe,.bat, .com 等等;但是在Linux下面,我们的文件是否能被执行,则是借由是否具有“x”这个权限来决定的!跟文件名是没有绝对的关系的。
- 对目录来说,rwx则是针对“目录内的文件名列表”来设计权限。
“读”( r ) :表示具有读取目录结构清单的权限,所以当用户具有读取(r)一个目录的权限时,表示该用户可以查询该目录下的文件名数据。 可以利用 ls 这个指令将该目录的内容列表显示出来!
“写”(w) :目录的w权限就与该目录下面的文件名异动有关
- 创建新的文件与目录;
- 删除已经存在的文件与目录(不论该文件的权限为何!)
- 将已存在的文件或目录进行更名;
- 搬移该目录内的文件、目录位置。
“能否进入目录” ( x ):目录不可以被执行,目录的x代表的是使用者能否进入该目录成为工作目录的用途!
工作目录(work directory):就是用户目前所在的目录,例如当用户登陆Linux时, 所在的主文件夹就是该用户当下的工作目录。而变换目录的指令是“cd”。
如果用户目录的权限只有r ,可以让使用者读取目录的文件名列表不过详细的信息却还是读不到的, 同时也不能将该目录变成工作目录(用 cd 进入该目录之意)。
如果用户目录的权限没有x,则该用户就没有进入这个目录的权限。
如果用户的目录有w权限,则该用户可以对这个目录里边进行增删改和移动文件。
能不能进入某一个目录,只与该目录的x权限有关!此外, 工作目录对于指令的执行是非常重要的,如果在某目录下不具有x的权限, 那么就无法切换到该目录下,也就无法执行该目录下的任何指令,即使具有该目录的r或w的权限也不行。
☆☆☆☆☆ 要开放目录给任何人浏览时,应该至少也要给予r及x的权限,但w权限不可随便给!
案例:(此案例源于鸟哥的Linux私房菜)
假设两个文件名,分别是下面这样:
- /dir1/file1
- /dir2
通过上图知道要读一个文件时,得要具有“这个文件所在目录的 x 权限”才行!所以,通常要开放的目录, 至少会具备 rx 这两个权限。
数字代号含义:
7:代表全部权限,即读写执行权限:4+2+1=7
6:代表读和写权限:4+2=6
5:代表读和执行权限:4+1=5
通过权限代号r、w、x、- 或使用对应数字 4、2、1、0都可以设置权限,具体参照示例。
例1:查看文件或目录权限:使用命令 ll 或者 ls -l
第一行总用量,后面的数字是指当前目录下所有文件所占用的空间总和。可以使用命令 ls -lh 或者 ls -alh 查看。
ls 其中的三个参数:
-1 每列仅显示一个文件或目录名称。
-a 或--all 当前目录下所有文件和目录。
-h 或--human-readable 用"K","M","G"来显示文件和目录的大小。
主要看例1图片文件属性内容:
共有十个字符组成,分为四部分。
第一部分:第1个字符,代表文件类型,“–”指普通文件,“d”指目录(没写全);
第二部分:第2~4个字符,代表文件或目录拥有者的权限,“r” 指可读取,“w” 指可写,“x” 指可执行,“–” 指不具备任何权限。
第三部分:第5~7个字符,代表文件或目录拥有者所属群组的权限,“r” 指可读取,“w” 指可写,“x” 指可执行,“–” 指不具备任何权限。
第四部分:第8~10个字符,代表除了文件或目录的拥有者和所属群组外的其他用户的权限,“r” 指可读取,“w” 指可写,“x” 指可执行,“–” 指不具备任何权限。
分析例1图片file1.txt:
文件名file1.txt的文件属性显示 :-rw-r–r– ,第一个字符是“-”代表这是一个普通文件(其它的“-”代表没有任何权限),该文件的拥有者有读和写的权限,所属群组只有读的权限,其他用户也只有读的权限。
例2:将文件 file1.txt 设为所有人皆可执行:
例2使用 chmod ugo+x file1.txt 命令设置为所有人可执行,通过ls -l 命令查看,发现文件 file1.txt的权限已改成所有人都可执行。(还可以使用另一命令:chmod a+x file1.txt 实现。)
例3:将文件 file1.txt 设为所有人皆不可执行:
例3使用了chmod a-x file1.txt 命令设置所有人不可执行,通过ls -l 命令查看,发现文件 file1.txt的权限已改成所有人都不可执行了。
例4:将文件 file1.txt 设为该文件拥有者与其所属同一个群组者可读和可写,但其他用户则不可写入 ,并显示指令执行过程:
例4给文件加减权限,中间用逗号“,”隔开,如果同时设置多个文件权限,后边加文件名,文件名之间空格隔开;-v参数是显示指令执行过程。
说明:
+ 与 – 的状态下,只要是没有指定到的项目,则该权限“不会被变动”, 例如上面的例子中,由于仅以 – 拿掉 w 则其他两个保持当时的值不变!如果让一个程序可以拥有执行的权限,但又不知道该文件原本的权限为何,此时,利用“chmod a+x filename” ,就可以让该程序拥有执行的权限了。
例5:使用数字代号将文件file1.txt权限设置为所有人都可读、写、执行。
例6:使用数字代号将文件 file1.txt 设为该文件拥有者可读、写、执行,其所属同一个群组者可读和写入,其他用户则只可读 :
例7:使用数字代号将文件file1.txt 设为该文件拥有者可读、写、执行,其所属同一个群组者可读和执行 ,其他人没有任何权限。
例8:将当前目录下的所有文件与子目录皆设为任何人可读和写 :
使用参数 -R 递归处理,将指定目录下的所有文件及子目录权限一并处理。
注意:区分chown、chgrp 和chmod。
chmod:变更文件或目录的权限。
chgrp :变更文件或所属目录的所属群组。
chown:变更文件或目录的拥有者或所属群组命令。去看chmod命令——>
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。
文章由极客之音整理,本文链接:https://www.bmabk.com/index.php/post/15961.html