Linux系统下的文件权限

Linux系统下的文件权限

Linux系统下所有东西都是一个文件,每个文件都有着各自的权限和类型。

普通权限

可以说普通文件的权限理解起来还是很简单的。下面我们谈一谈文件和目录的 r , w , x 分别具有什么操作。

文件权限

读权限(r): 可以读取此文件的实际内容,如读取文本文件的文字内容。

写权限(w): 可以编辑,新增,或者修改该文件的内容。(但是不能够删除这个文件)。

执行权限(x): 可以被系统执行。

目录权限

读权限(r): 表示可以读取目录结构列表的权限,可以查询存储在该目录下的文件名,拥有此权限就可以使用ls命令列出目录中文件。这一权限允许Shell使用文件扩展名列出相匹配的文件名。

写权限(w): 表示更改该目录结构列表的权限。如:新建,删除,移出,重命名文件和目录等。

执行权限(x): 表示用户能够进入该目录,使其成为工作目录。

其他

  1. 我们用名字打开任意一个类型的文件时,对于此名字中包含的每一个目录,包括当前其可能隐含的当前工作目录都必须具有执行权限。
  2. 如果我们对一个目录只拥有读权限,那么我们只能够获得到该目录内的文件名列表,无法对该目录中的文件做任何操作。
  3. 在一个目录内创建,删除,或者移出文件或者目录时,必须对此目录具有写权限和执行权限。

特殊权限

Linux系统下的文件除了以上三种权限之外,还有特殊权限,虽然日常生活中并不是都能用到它,但是非常有必要了解的。

SUID

也被称为setUID,SUID权限仅对二进制程序有效。要求执行者对于程序具有 x 的可执行权限,执行者将具有该程序所有者的权限,且此权限只在程序的执行过程中有效。

简而言之呢,就是对于拥有SUID权限的一个二进制程序,其用户所有者是A,B用户拥有 x 权限,那么如果B用户在执行此二进制程序期间会转变乘用户A,可以实现一些原来B用户没有权限但是A用户拥有权限的操作。

通过ls -l查看文件权限时候,如果 s 这个标志出现在文件所有者的 x 的权限上时,此文件就具有了SUID的特殊权限。

/usr/bin/passwd就是这样的一个文件

ll /usr/bin/passwd
-rwsr-xr-x 1 root root 54256 329  2016 /usr/bin/passwd

普通用户在执行命令/usr/bin/passwd时,可以设置自己的密码,就是这个原理。由于/usr/bin/passwd具有SUID权限,普通用户执行时,就会具有root的权限,具体而言就是可以修改 /etc/shadow 文件,更改自己的登录密码。

SGID

也被称为setGID。

用于二进制程序:SGID对二进制程序有用,程序执行者对于该程序来说具有 x 的权限,执行者在执行的过程中将会获得该程序用户组的支持。

用于目录: 如果用户对于此目录具有 r 和 x 的权限时,该用户能够进入此目录,则该用户在此目录下的有效用户组将会变成该目录的用户组,换而言之,该用户在此目录下将会获得此目录所属组的权限,如果用户在此目录下具有权限,则用户新创建的新文件的用户组与此目录的用户组相同。

通过ls -l查看文件权限时候,如果 s 这个标志出现在文件所属组的 x 的权限上时,此文件就具有了SGID的特殊权限。

ll /usr/bin/chage 
-rwxr-sr-x 1 root shadow 62336 329  2016 /usr/bin/chage

SBIT

或者是Sticky Bit权限,只针对目录有效,对于文件已经没有效果了。

对于目录的作用是:当用户对于此目录具有w,x权限时,即具有写入的权限时,当用户在该目录下创建文件和目录时候,仅有自己和root才有权利删除这个文件。

通过ls -l查看文件权限时候,如果 t 这个标志出现在文件其他人的 x 的权限上时,此文件就具有了SBIT的特殊权限。

ll -d Test/
drwxrwxr-t 2 summer summer 4096 31 09:37 Test/

Note

大写的S T标志

在上述情况下,我们看到的小写的 s , t ,但是有时候也会变成大写的形式。如下

ll -d Test/
drwxrwxr-T  2 summer summer 4096 31 09:37 Test/

这种情况主要是由于SBIT特殊权限代替了 x 的权限位,如果原来其他人对于此目录具有 x 的权限,那么此目录加上 SBIT 权限之后将会显示小写的 s 标志,否则就会显示大写的 S 标志。

对于SUID和SGID的 s 标志也有着类似的道理,如果文件所属者和所属组的用户不存在 x 权限的话,就会以大写 S 标志显示。

设定特殊权限

对于一个 r w x 权限而言,三种权限组成了一个八进制数字,对于特殊权限而言,也有着这样的用法。SUID,SGID,SBIT,这三种权限也是组成了一个八进制数字,其中SUID,SGID,SBIT 分别是4(100),2(010),1(001),三种权限互相组合就形成了1到7八个数字。

可以使用chmod命令来更改文件的权限,一般情况下,如果chmod如果接收到三个参数,那么就会从后到前分别设置文件其他者,文件所属组,文件所属用户的权限。如果接受到四个数字,那么第一个数字就是用来设置文件的特殊权限的。

如下:

ll test
-rw-rw-r-- 1 summer summer 0 31 10:16 test

chmod 666 test
-rw-rw-rw-  1 summer summer    0 31 10:16 test

chmod 7666 test
-rwSrwSrwT  1 summer summer    0 31 10:16 test
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值