码迷,mamicode.com
首页 > 系统相关 > 详细

Linux的文件权限

时间:2016-06-01 21:27:11      阅读:207      评论:0      收藏:0      [点我收藏+]

标签:

1 文件权限的表示

  (1)字母表示法

  Linux中所有文件(普通文件、目录文件、字符特殊文件、块特殊文件、管道或FIFO、符号链接、套接字)都有9个权限,如下图所示:

技术分享

  -rw-rw-r--就是文件a的权限了。首先最左边的-表示了文件类型,如果是目录的话,就是d;接下来的三位rw-表示了a的用户(Andy)权限、再接下来的三位rw-表示了a的组(Andy)权限,最后三位代表了其他用户对文件a的权限。

  每组三个权限位依次代表了文件的读(r)、写(w)、执行(x)权限。如果某一位上是-就代表着该位不具有某一权限。

  (2)数字表示法

  Linux允许以数字来代表文件的权限,r为4,w为2,x为1。则上述的4的权限为(4+2)(4+2)(4)=664。

2 更改权限

  (1)字母法

  u、g、o分别代表了文件的用户权限、组权限、其他用户权限。我们可以使用chmod命令如下操作:

  chmod u+x a  //赋予用户执行权限

  chmod o-r a  //取消其他用户读权限

  这样a的权限就变成了-rwxrw----,也就是740

  (2)数字法

  简单粗暴:直接用你要更改的目标权限的数字:

  chmod 740 a

3 默认权限

  新建一个普通文件或目录,它们的默认权限是怎么样的呢?Linux是有默认值的。我们用umask命令可以获得: 

  技术分享

  这个0002代表什么意思呢?从名字中我们可以知道,它是一个掩码来的。也就是用某一个值来减这个值,就获得了默认权限,对文件来说,是666,目录来说是777。为什么是这样呢?因为Linux不允许文件默认是可执行的。所以无论怎么更改umask,我们都无法让一个文件默认是可执行的。那为什么umask是4位的呢?第一位是特殊权限位,下边再讲,所以这里的umask的其他权限位是002,对应文件的默认权限是664,目录的默认权限是775。

  更改umask,直接umask 777,就可以把umask变成0777

4 特殊权限

  (1)Linux中的文件有三个特殊位:

    SUID:设置用户ID(set-user-ID)。对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的属主身份来执行。
    SGID:设置组ID(set-group-ID)。对一个可执行文件,不是以发起者身份来获取资源,而是以可执行文件的属组身份来执行。
    STICKY:粘滞位,通常对目录而言。通常对于全局可写目录(other也可写)来说,让该目录具有sticky后,删除只对属于自己的文件有效(但是仍能编辑修改别人的文件,除了root的)。不能根据安全上下文获取对别人的文件的写权限。

  (2)设置
   #chmod u+s
   #chmod g+s
  同上,去除特殊位有: #chmou u-s  .等

  (3)表示
    SUID:置于 u 的 x 位,原位置有执行权限,就置为 s,没有了为 S .
    SGID:置于 g 的 x 位,原位置有执行权限,就置为 s,没有了为 S .
    STICKY:粘滞位,置于 o 的 x 位,原位置有执行权限,就置为 t ,否则为T .

  数字字表示法SUID:4,SGID:2,STICKY:1,特殊权限位于u/g/o之前。例如:对某个目录:

         #chmod  4551  file  // 权限: r-sr-x--x
         #chmod  2551  file  // 权限: r-xr-s--x
         #chmod  1551  file  // 权限: r-xr-x--t

Linux的文件权限

标签:

原文地址:http://www.cnblogs.com/qiaoconglovelife/p/5550900.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!