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
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]的操作
例如:有一个普通文件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
这对于多个人在一个项目组工作很有帮助。
+:增加一个特殊属性,其他属性不变
-:移除一个特殊属性,其他属性不变
=: 把该文件或目录的属性设置为后面的参数。
a:设定了a之后,这个文件只能增加数据,而不能删除也不能修改数据,只有root可以设定该属性
i:设定之后,该文件不能删除,改名。只有root可以设置该权限。
lsattr [-adR] filename
-a:将隐藏文件的属性也显示出来
-d:如果接的是目录,仅列出目录本身的属性而非目录内的文件名
-R:连同子目录的数据也一并列出来
一般一个文件 分为 文件所有者,用户组,其他。
文件所有者:看名字就知道了,是文件的所有人。
用户组:表示的是这个组的人对于这个文件所能进行的操作。
其他:表示的是除了上面两者之外的人。
用户组的概念很重要,他可以让大家协同工作。(一定要注意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的所有者变为name2.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 socket 初步
- Linux Kernel 4.0 RC5 发布!
- linux lsof详解
- linux 文件权限
- Linux 执行数学运算
- 10 篇对初学者和专家都有用的 Linux 命令教程
- Linux 与 Windows 对UNICODE 的处理方式
- Ubuntu12.04下QQ完美走起啊!走起啊!有木有啊!
- 解決Linux下Android开发真机调试设备不被识别问题
- 运维入门
- 运维提升
- Linux 自检和 SystemTap
- Ubuntu Linux使用体验
- c语言实现hashmap(转载)
- Linux 信号signal处理机制
- linux下mysql添加用户
- Scientific Linux 5.5 图形安装教程
- Linux 下无损图片压缩小工具介绍