权限
今天学习权限
举个例子
我们使用 ls -al 查看当前目录下文件的信息,列表的第一项就是文件的权限 。
以第一个为例子 drwxrwxr-x
, 这10个字母代表3组信息,第一个字母 d 表示其为 目录 。还有其他的字母;
|符号|意义|例子|
|--:| :--:| |
|d|目录| - |
|-|文件| 普通的文本文件|
|l|连接文件| 类比与windows的快捷方式|
|b|可储存的设备| 类比Windows的D盘 |
|c|不可储存的设备| 各种外设如鼠标 |
以下是我 /dev 中的例子,其中的 sda1-5 就是我的各个分区,所以开头为 b.
rwx
rwx 分别是 read write execute 的缩写。
对文件
r 代表是否能查看文件的内容
w 代表你能否对文件的内容进行操作,但跟能不能删除或者改名没有关系。(这个要留着了解Linux的文件储存方式再解析)
x 代表能否被系统执行(还不太明白,占坑)
对目录
目录在某种意义来讲也是文件,其实它储存的信息为,文件名称与文件在硬盘中所在的位置等信息(把它现象成表格吧)。
了解了上面的信息,就很好理解了rwx的意思了
r 能否看这个表格,也就是我们能否查看该目录下保存了什么文件,比如能否用 ls 去查看。
w 能否改写这个表格,如果能,那我们就能够添加目录、文件,或者删除(无论我们对这个文件是否有权限,因为我们只是删除了一个名称),重命名也是一个道理。(我想这就是有些东西被删除了还能被还原的原因,因为文件本身压根就没被删除)
x 就不能用表格的概念了,x 能够被系统作为工作目录,也就是能否被 cd
分组概念
介绍完rwx,我们来说说为什么有3组rwx。这是因为Linux中把用户分为3类(拥有者,同组,普通用户)。
前面一组代表拥有者的权限,
第2组代表对同组的权限,
第3组代表普通用户的权限。
怎么看拥有者,同组呢? 额,就是ls -al 显示表的第3和第4项。
其他权限
SetUID
当一个二进制程序在程序拥有者的x位置出现s时,就说这个文件有 SUID权限。如 -rwsr-x-r-x 。
当一个用户执行了这个带有s权限的二进制程序时,这个用户就暂时拥有了这个二进制程序的拥有者权限。这就是s的作用。
例子:
一个二进制程序文件的权限为 -rwsr-x-r-x root root ,
还有一个普通文本文件里面写着 1 并且权限为 -rwx------ root root,
当执行这个二进制程序时会去修改这个写着1的文件变为2。
这时我去执行了这个二进制程序(因为我有x权限),执行完后1文件本成了2。 这意味着我这个对1文件没有任何权限的用户却对其做了修改,这就是 SUID 权限的作用。
注:其中的安全问题不太理解,只知道 SUID 只对二进制文件有效。
SetGID
跟 SUID 很像。不同点在于 :
1.s的位置 ,s在用户组的x位置,如-rwxr-s-r-x
2.暂时获得的权限为用户组相同的权限
3.可以设置在目录上或在文件上
坑:有什么用,没想明白
Sticky Bit
权限长这样 drwxrwxrwt , 这是一个只能用在目录的特殊权限。
我们知道决定你能否删除目录里的文件取决于你对这个目录有没有w权限,这就有个尴尬的问题,我们需要一个目录大家都能进来,都能够查看这里的文件,便于交流,但我不想让除了文件本人的人删除属于他的文件,那这个目录的w权限好像就不好设置了。为了解决这个问题Linux有了SBIT权限。
SBIT的作用:当你在使用目录的w权限时,还要判断你是否是文件的说有着。
特殊权限的设置
跟rwx一样我们使用 chmod 命令,只是我们在 chmod 的option 前加了一个数值 ,
4:SUID
2:SGID
1:SBIT
例子 : chmod 4777 filename
文件隐藏属性
文件还有一些ls看不到的属性,但是只有在 Ext2/Ext3/Ext4 文件系统中才会有。
可以使用 lsattr [files]
来查看文件的隐藏属性。 属性有许多比如不能删除的属性 i 。
更多信息 可以用man chattr
命令去查看。