红联Linux门户
Linux帮助

chmod入门的一些常识

发布时间:2012-04-15 16:02:45来源:红联作者:empast
1. 基本用法

使用权限:所有使用者

使用方式:chmod [-cfvR] [--help] [--version] mode file...

说明:Linux/Unix 的档案存取权限分为三级:档案拥有者、群组、其他。利用 chmod 可以藉以控制档案如何被他人所存取。

mode:权限设定字串,格式如下:[ugoa...][[+-=][rwxX]...][,...],其中u 表示该档案的拥有者,g 表示与该档案的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。

+ 表示增加权限、- 表示取消权限、= 表示唯一设定权限。

r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该档案是个子目录或者该档案已经被设定过为可执行。

-c:若该档案权限确实已经更改,才显示其更改动作

-f:若该档案权限无法被更改也不要显示错误讯息

-v:显示权限变更的详细资料

-R:对目前目录下的所有档案与子目录进行相同的权限变更(即以递回的方式逐个变更)

--help:显示辅助说明

--version:显示版本

范例:将档案 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 *

此外chmod 也可以用数字来表示权限如 chmod 777 file

语法为:chmod abc file

其中a,b,c 各为一个数字,分别表示User、Group、及Other 的权限。

r=4,w=2,x=1

若要rwx 属性则4+2+1=7;

若要rw-属性则4+2=6;

若要r-x 属性则4+1=7。

范例:

chmod a=rwx file 和chmod 777 file 效果相同

chmod ug=rwx,o=x file 和chmod 771 file 效果相同

若用chmod 4755 filename 可使此程式具有root 的权限

2. 档案的特殊权限:SUID/SGID/Sticky Bit

1.Set UID:当文件系统的“所有者权限组合”的可执行位(x)被s(即rws------)取代时,构成特殊权限规定Set UID,简称SUID。仅对系统中的二进制可执行文件设置有效,而且不可对Shell Script 施加设置。

2.Set GID:当所有者所在的用户组(group)的权限组合中可执行位(x)被s 所取代时(例如---rws---),便构成Set GID 的权限设置。SGID 可以针对二进制文件或目录进行设置。

3.Sticky Bit:当文件系统“其他(others)”的权限组合中可执行位(x)被t 所取代时(例如------rwt),便构成Sticky Bit 的权限设置。它只对目录有效。

SUID 和SGID,主要作用是用于当非某个文件的所有者(或组)执行(或操作目录)文件时,可以暂时获得该文件所有者的权限。

SBIT 的作用在于访问控制,当它对某个目录设置此属性后,该目录下的所有文件,即使其它人有w属性,都不得对其更名、移动、删除。

设置方法:

如果你已经掌握了用(八进制)数字来表示权限的规则,再结合chmod 命令进行设置就很简单了。以下是SUID/SGID/Sticky Bit 约定对应的八进制数值:

SUID = 4
SGID = 2
SBIT = 1

设置时我们把表示特殊权限的数字放在其他三位数字权限的前面

例如:

SUID 的代表数字是4,比如4755 的结果是-rwsr-xr-x

SGID 的代表数字是2,比如6755 的结果是-rwsr-sr-x

SBIT 的代表数字是1,比如7755 的结果是-rwsr-sr-t

(当然7755 这个chmod 设置没多大意义,这里只是演示一下)

需要说明的是,四位数才是标准写法,我们通常写的3 位是后三位,例如755,系统会自己把你的755作为0755 处理的。
文章评论

共有 7 条评论

  1. Hoo_h 于 2012-05-20 00:59:33发表:

    收了

  2. lxy1515720682 于 2012-04-22 16:17:47发表:

    不错

  3. kaitai502 于 2012-04-19 03:30:18发表:

    学习了,谢谢

  4. yushuyingrose 于 2012-04-16 19:41:13发表:

    谢谢分享

  5. skybuler 于 2012-04-16 16:22:53发表:

    谢谢分享!

  6. Junyi 于 2012-04-15 21:28:56发表:

    顺学下

  7. circletiger 于 2012-04-15 19:14:20发表:

    学习了。希望看到更多的文章。