首页 > 代码库 > chmod的使用理解说明

chmod的使用理解说明

1、查看用户属于哪个组的命令
id  user(显示用户组和id的详细信息)
groups user(只是显示用户所属组的名字)

2、先解释下ls -l path(ls -l 即 ll)显示的具体参数,其形式类似这样的-rwxr-xr-x
9 8 7 6 5 4 3 2 1 0
- r w x r - x r - x

第9位表示文件类型,可以为p、d、l、s、c、b和-:
  d表示目录文件
  l表示符号连接文件
  -表示普通文件
  p表示命名管道文件
  s表示socket文件
  c表示字符设备文件
  b表示块设备文件
第8-6位、5-3位、2-0位分别表示文件所有者(即user)的权限,同组用户(即group)的权限,其他用户的权限(other),其形式为rwx:
  r表示可读,可以读出文件的内容
  w表示可写,可以修改文件的内容
  x表示可执行,可运行这个程序
  没有权限的位置用-表示
  s表示setuid或setgid,一般和x一起出现,单独出现时,是大写S
  t表示黏滞位,一般和x一起出现,单独出现时,是大写T。

  SUID 是 Set User ID, SGID 是 Set Group ID的意思


3、对t,T,s,S的解释
t是建立在x的基础上的,如果单独设置t,则ll时显示的是大T,而如果同时设置x和t则只显示小t。t好像只对other有效,对user和group没有效果。

s同样也是建立在x的基础上的,单独设置时,显示大S,同时设置时,显示小s。s好像只对user和group有效,对other没有效果。


4、chmod [OPTION]... MODE[,MODE]... FILE...
   chmod [OPTION]... OCTAL-MODE FILE...
   chmod [OPTION]... --reference=RFILE FILE...
chmod的参数,参照man页就可以理解,主要介绍下MODE的格式。

只能是文件属主或特权用户才能使用该功能来改变文件存取模式。MODE可以是八进制数字形式或以who+opcode+permission的字符形式表示。who是可选的,默认是a(所有用户),只能选择一个opcode(操作码),可指定多个mode,以逗号分开。

who,u:用户,g:组,o:其它,a:所有用户(默认)
opcode,+:增加权限,-:删除权限,=:重新分配权限
permission,r:读,w:写,x:执行,s:设置用户(或组)的ID号,t:设置粘着位(sticky bit),防止文件或目录被非属主删除。

MODE也可以以八进制数字的形式来表示权限,第一位指定属主的权限,第二位指定组权限,第三位指定其他用户的权限,每位通过4(读)、2(写)、1(执行)三种数值的和来确定权限。如6(4+2)代表有读写权,7(4+2+1)有读、写和执行的权限。
还可设置第四位,它位于三位权限序列的前面,第四位数字取值是4,2,1,代表意思如下:
4,执行时设置用户ID,用于授权给基于文件属主的进程,而不是给创建此进程的用户,即SUID。
2,执行时设置用户组ID,用于授权给基于文件所在组的进程,而不是基于创建此进程的用户,即SGID。
1,设置粘着位。

简单的实例:
$ chmod u+x file             给file的属主增加执行权限
$ chmod 751 file             给file的属主分配读、写、执行(7)的权限,给file的所在组分配读、执行(5)的权限,给其他用户分配执行(1)的权限
$ chmod u=rwx,g=rx,o=x file  上例(751)的另一种形式
$ chmod =r file              为所有用户分配读权限
$ chmod 444 file             同上例(=r)
$ chmod a-wx,a+r file        同上例(=r)
$ chmod -R u+r directory     递归地给directory目录下所有文件和子目录的属主分配读的权限
$ chmod 4755                 设置SUID,给属主分配读、写和执行权限,给组和其他用户分配读、执行的权限。

5、针对x权限的解释,主要是目录具有x权限的解释
文件的可执行权限(x)很简单,就是可否执行它的意思。但目录的执行权限又代表什么意思呢?当然不可能是要执行这个目录了,其实这个执行权限如果用在目录上时,它不再代表执行的意思了,而是代表“搜索”权限(或者理解成是否可以接受cd命令,用户能否进入该目录成为工作目录,注意不是ls)。当你要访问 /etc/httpd.conf 文件时,你必须拥有对目录 /etc 的x(即搜索)权限,否则即便你对目录 /etc 和文件 httpd.conf 拥有读取权限,也是无法访问 httpd.conf 这个文件的。

6、针对r和w权限的解释,主要是针对目录具有r和w的解释
文件具有r和w就是具有读和写的权限,目录具有r表示可以获取目录中文件列表和子目录的信息,即目录结构,目录具有w表示可以修改目录的结构,即表示可以删除文件或删除子目录(这点对删除文件很重要)。

7、setUid, setGid,即:设置-用户ID位,设置-组ID位
当一个程序(即文件)一旦设置了该标记以后,运行该程序的进程将拥有该程序所有者同样的权限,比如你的某个程序是由root所有,又设置了 setUid 位,那即便是一个普通用户运行这个程序,但该程序的身份一样是超级用户的身份了,可以访问所有只能由root用户访问的资源。一个典型的例子就是 passwd 程序。类似的,如果是设置setGid表示你将拥有文件属主所在组拥有的权限,即程序运行时是按组的权限运行的。
setUid和setGid位是让普通用户可以以root用户的角色运行只有root帐号才能运行的程序或命令。比 如我们用普通用户运行passwd命令来更改自己的口令,实际上最终更改的是/etc/passwd文件,我们知道/etc/passwd文件是用户管理的配置文件,只有root权限的用户才能更改。

8、黏滞位(粘着位)的解释
在以前旧的系统当中,如果一个程序文件一旦设置了粘着位,那么当该程序中止的时候他的所有指令段将被保存到系统的交换分区当中,再次运行时可以更快的调入系统。不过,现在的操作系统已经不再使用这种功能了。但这并不表示这功能已经完全被废弃。当一个目录设置为粘着位时,它将发挥特殊的作用,即当一个目录被设置为“粘着位”(用chmod a+t),则该目录下的文件只能由
  超级管理员删除
  该目录的所有者删除
  该文件的所有者删除
也就是说,即便该目录是任何人都可以写,但也只有文件的属主才可以删除文件。

9、用ls -l命令显示文件列表信息时,文件名带有颜色,每种颜色的具体含义如下:
蓝色表示目录;绿色表示可执行文件;红色表示压缩文件;浅蓝色表示链接文件;白色表示其他文件;黄色是设备文件,包括block, char, fifo。

主要介绍第2点的
http://zhidao.baidu.com/link?url=LpE5M8_jdWMqeYajDS7W4cY-5N8-ZYxxMdBxDUNtFvmk3-EVUvZez1kWxfiLT__DF9th67AwRM-40K_LVIWfNa
主要介绍第4点
http://www.cnblogs.com/younes/archive/2009/11/20/1607174.html
主要介绍第5、6点
http://www.360doc.com/content/12/1014/21/9615799_241487997.shtml
主要介绍第7点
http://www.php100.com/html/webkaifa/Linux/2010/0812/6392.html
主要介绍第8点
http://lishaohui.qd.blog.163.com/blog/static/4865891620112119298796/
http://os.51cto.com/art/201004/194994.htm
主要介绍第9点
http://blog.163.com/fan_yishan/blog/static/47692213200951304813300/


chmod的使用理解说明