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

Linux文件权限

2016-03-24 15:21 253 查看
Linux是一个面向多用户与多任务的系统。所以对于文件权限的设置就非常重要。

一般一个文件 分为 文件所有者用户组其他

文件所有者:看名字就知道了,是文件的所有人。

用户组:表示的是这个组的人对于这个文件所能进行的操作。

其他:表示的是除了上面两者之外的人。

用户组的概念很重要,他可以让大家协同工作。(一定要注意Linux是面向多用户与多任务的,所以有这么多的概念。)

用ls 查看一个目录,会有

-rwx—r–:之类的。

可以把他们分为3部分,分别编号:1,2,3…..9

1:表示文件的类型。

2,3,4:表示文件所有者可以对该文件进行何等操作

5,6,7:表示用户组可以对该文件进行何等操作

8,9,0:表示其他人可以对该文件进行何等操作

r:表示我可以对这个文件有读的权利

w:表示我对这个文件有写得权利(但是没有删除的权利)

x:表示我对这个文件有执行的权利

如果这个文件是个目录类型呢:

drwx—r-x:

r:表示可以查看该目录下面有什么东西

w:表示可以对这个目录进行异动操作:例如删除这个目录下面的文件(即使这个文件的所有者不是我们自己,但是只要我们对于它所在的这个目录有w权限,那么我们就可以删除它)

x:表示可以把这个目录作为工作目录

注意:

在没有umask的情况下

目录的权限是777

文件的权限是666

相关命令

1.chown name filename:把filename的所有者变为name

2.chgrp name filename:把filename的用户组变为name

3.chmod更改filename的相关权限

r:4

w:2

x:1

那么chmod 441 filename :表示对于所有者我们有4 + 0 + 0有r–的权利

对于用户组我们也是r–,而对于其他我们只是—的权利。

或者用chmod u=r g=r filename来更改相关权限

也可以用chmod a[+-] [r,w,x]来表示对于所有者,用户组,其他都进行[+-][r,w,x]的操作

setuid与setgid

setuid只是对可执行文件有效果,表示的是普通用户执行这个程序时,可以获得 这个文件所有者 一样的权限。

例如:有一个普通文件myfile,属于foo,且是可执行的

那么他的权限假设为:

-rwxr-xr-x 1 foo staff 7734 myfile

说明myfile的所有者为foo,用户组为staff。

Unix内核如何确定一个进程对资源的访问权限:是这个进程的运行用户的有效ID,包括user id和group id。除了这两个ID之外,还有euid,egid。内核主要通过euid与egid来确定进程对资源的访问权限。

一个进程如果没有设置SUID和SGID,那么euid = uid, egid = gid。例如kevin用户的uid和gid分别为204和202,foo用户的uid和gid为200和201,kevin运行myfile程序形成的进程euid=uid=204,egid=gid=202,内核根据这些值来判断进程对资源访问的限制,其实就是kevin用户对资源的访问限制,和foo没关系。

但是如果myfile设置了suid,那么kevin用户运行myfile是形成的euid=200, egid=201,就是foo运行myfile是用的uid与gid,即具有foo的资源访问权限。

类似于suid,对于sgid是其他用户运行时,会获得用户组的权限。

例如一个myfile

-r-xr-sr-x 1 bin system ps,

ps的用户是bin,此时有一个kevin来运行myfile时,就会是相当于system组的成员运行myfile。

上面是sgid对于一个文件来说,如果一个目录设置了SGID,那么其他用户:

用户若对于此目录有r与x的权限,该用户可以进入该目录

用户在此目录下的egid将会变成该目录的群组

用途:若用户在此目录下具有w的权限(可以新建文件),则该用户所建立的新文件的用户组与此目录的用户组是一样的。

注意

需要注意的是如果一个目录有set gid,那么在这个目录下再去创建一个目录,这个新创建的目录也会有set gid,且gid为新创建目录所属目录的gid。

例如:mydir

drwxrwsr-x foo system mydir

那么一个用户kevin来到这个目录下后,kevin的egid就会与system一致,且kevin新建了一个文件kevinfile,这个kevinfile的用户组会是system,即:

drw-rw-r-x kevin system kevinfile

这对于多个人在一个项目组工作很有帮助。

SBIT

只对于目录来说,如果一个目录设置了该权限。那么如果一个用户对于该目录有wx的权限时,它只能删除自己的东西,而不能删除别人的东西(root除外)。

文件的隐藏属性

chattr [+-=] [ASacdistr] filename

+:增加一个特殊属性,其他属性不变

-:移除一个特殊属性,其他属性不变

=: 把该文件或目录的属性设置为后面的参数。

a:设定了a之后,这个文件只能增加数据,而不能删除也不能修改数据,只有root可以设定该属性

i:设定之后,该文件不能删除,改名。只有root可以设置该权限。

lsattr [-adR] filename

-a:将隐藏文件的属性也显示出来

-d:如果接的是目录,仅列出目录本身的属性而非目录内的文件名

-R:连同子目录的数据也一并列出来
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  linux