您的位置:首页 > 运维架构 > Linux

Linux权限的简单剖析

2016-07-01 03:47 666 查看
一、权限是什么

权限(privilege)是指某个特定的用户具有特定的系统资源使用权力。举个简单的例子,夏日炎炎,你看到路边有卖西瓜的,你想要吃西瓜,你就得买它,买它其实就是获取你对西瓜的使用权限,买了它,你就可以大快朵颐了。

二、Linux的文件权限

Linux的文件权限主要体现在的两个方面,文件的访问者即文件的事物属性。

1、文件访问者

a)文件和文件目录的所有者:u—User

b)文件和文件目录的所有者所在的组的用户:g—Group

c)其它用户:o—Others

2、文件的事物属性(权限)

1)普通权限

a)读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限

b)写(w/2):Write对文件而言,具有修改文件内容的权限;对

目录来说具有删除移动目录内文件的权限

c)执行行(x/1):execute对文件而言,具有执行文件的权限;

对目录来说,具有进入目录的权限

注:这里的r、w、x和4、2、 1分别代表文件权限的字符表示方法和8进制表示方法。

2)特殊权限

a) (s/4)只能应用在可执行文件上,允许任意用户在执行文

件时以文件拥有者的身份执行

b) sgid (s/2)只能应用在可执行文件上,使任意用户在执行可

执行文件时,将以拥有组成员的身份执行

c) 粘着位(t/1)只能应用在目录文件上,将使用户在目录中执

行删除时,只能删除自己己拥有的对象

下面用一个例子来具体看看文件的权限:



注:用ll命令显示出来的文件信息,从左至右分别是文件类型及权限、链接数(硬链接,即指向该文件的引用次数)、文件所有者、文件所属组、文件大小、文件创建时间、文件名

其中红色方框里面的内容分别对应了三个文件的权限值(./代表当前目录,../代表父级目录,两个问价都是隐藏文件)。

拿file文件的权限来说,红色方框来一共10个字符,第一个代表文件的类型,后面每三个一组分别代表文件的所有者、用户组、其它用户具有的权限。

首先看第一个字符,是’-‘,代表该文件是普通文件(d代表是目录文件,关于文件分类这儿不做过多解释)。

接着的三个字符”rw-“,代表文件的所有者具有的权限,”r’表所有者具有可读权限,’w’代表所有者具有可写权限,’-‘代表所有者不具有可执行权限。

再往后的三个字符”rw-“,代表文件的所有者的所属组具有的权限,”r’表所属组具有可读权限,’w’代表所属组具有可写权限,’-‘代表所属组不具有可执行权限。

最后的三个字符”r–”,代表文件的其它用户具有的权限,”r’表其它用户具有可读权限,’-‘代表其它用户不具有可写权限,’-‘代表其它用户不具有可执行权限。

三、文件权限的设置方法

参数:

R -> 递归修改目录文件的权限

V -> 显示指令执行过程

注:下面提到的参数都是指这些参数。

1、chmod命令设置权限值

命令格式:chmod [参数] 权限 文件名

注:只有文件的拥有者和root才可以改变文件的权限

1)权限字符修改

a)用户标识符:

u:拥有者

g:拥有者同组用用户

o:其它用用户

a:所有用用户

b)用户标示符+/-=权限字符

+:向权限范围增加权限字符所表示的权限

-:向权限范围取消权限字符所表示的权限

=:向权限范围赋予权限字符所表示的权限

例:



原本文件file的权限值为“rw-rw-r–”,经过修改之后,权限值变为“rwxr–rw-”,即增加了所有者的’x’->可执行权限,减少了用户组的’w’->可写权限,增加了其它用户的’w’->可写权限,而且可以明显的看到文件变成了可执行文件。

2)权限的8进制值修改方式

文件的可读、可写、可执行权限对应的权限值分别是4、2、 1,0表示不具有权限,那么文件的权限值与文件的权限就有以下对应关系:

0 -> 不具有任何权限 - - -

1-> 具有可执行权限 - -x

2-> 具有可写权限 -w-

3-> 具有可写、可执行权限 -wx

4-> 具有可读权限 r- -

5-> 具有可读、可执行权限 r-x

6-> 具有可读、可写权限 rw-

7-> 具有全部权限 rwx

例:



修改前,文件file的权限值为“rwxr–rw-”,经过修改之后,权限值变为“rw-rw-r–”,即减少了所有者的’x’->可执行权限,增加了用户组的’w’->可写权限,减少了其它用户的’w’->可写权限,而且可以明显的看到文件从可执行文件变成了不可执行文件。

3)、示例赋权方式

格式:chmod –reference reference target 参 照reference的权限值 , 来设置target的权限

例:



可以看到我先把file和file1的权限分别设置成了“rw-rw-r–”和”- - - - - - - - -“,然后执行了命令chmod - -reference file1 file,file的权限就变得和file1一样了,相当于file复制了file1的权限。

注:因为连续的‘-’会变成一条长横线,所以这儿在’-‘与’-‘之间加了空格。

2)chown

功能:修改文件的拥有者

格式:chown [参数] 用户名 文件名

例:



执行命令后,文件的拥有者变成了root。

注:因为要修改文件的拥有者为root,所以要先进入root(超级用户)模式。

3)chgrp

功能:修改文件或目录的所属组

格式:chgrp [参数] 用户组名 文件名

参数:-R 递归修改文件或目录的所属组

例:



执行命令后,文件的所属组变成了root。

4)umask

功能:查看或修改文件掩码

新建文件默认权限:0666

新建目录默认权限:0777

格式:umask 权限值 修改文件掩码值

说明:

将默认权限减去权限掩码后,即可产生建立文件时预设权限。

注:默认权限中有的权限在权限掩码中有对应的权限时,才相减。

超级用户默认掩码值为0022,普通用户默认为0002。

例:



此时,是在root用户模式下,所以umask查看权限掩码为0022(所属组和其它用户的可写权限),创建一个新的文件file,因为默认权限为0666(拥有者、所属组和其它用户的可读、可写权限),包含0022,所以这儿要0666要减去0022,最终的权限值为0644,接下来修改权限掩码为0444(拥有者、所属组和其它用户的可读权限),可以看到修改成功,此时创建一个新的文件file1,因为默认权限为0666,包含0444,所以这儿要0666要减去0444,最终的权限值为0222。

上面为什么要说包含呢?因为文件的最终权限不是简单直接拿默认权限减去权限掩码,而是当默认权限和掩码权限中有相同的权限才做减法。

如:



修改权限掩码为0111(拥有者、所属组和其它用户的可执行权限),默认权限为0666(拥有者、所属组和其它用户的可读、可写权限),按照之前的想法,最终的权限值应该为0555,但可以看到此时的权限值为0666,也就是二者并没有做减法。这是因为默认的权限为0666,里面不包含0111。

用户的权限就总结到这儿。下面来看一下目录的权限对目录的一些操作的影响。

四、目录的权限对操作的影响



为了验证结果,先把创建的目录dir的权限值修改为000,可以看到此时是不能进入目录的,那么接着修改dir权限值为100,可以看到能进入目录了,说明进入目录需要的是拥有者的可执行权限,此时在目录里创建文件,权限不够,再修改dir权限值为300(为什么不是200呢?因为目录的可执行权限是进入目录所必须的,而想要在目录里创建文件就得先进入目录,所以这儿修改的范围是100,300,500,700),可以看到能在目录里创建文件爱你并删除文件,但使用ls命令是没有权限的,继续修改dir的权限为500,进入目录,可以看到ls命令簇中的命令都可以使用了。

总结一下:

1、进入目录需要目录的执行权限

2、在目录下创建文件,需要目录的执行权限与写权限(首先得能进入目录)

3、在目录下删除文件,需要目录的执行权限与写权限

4、想在目录下使用ls命令簇需要目录的执行权限与读权限

注:这儿要记住进入目录需要的是目录的可执行权限,而不是可读权限。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息