目录权限
常见的目录权限有rwx,即读、写、可执行,那么具体权限是如何划分的呢?
如果我们需要进入一个目录,需要什么权限呢?
创建一个名为permission的目录,我们可以看到,该目录的拥有者拥有rwx权限,此时我们可以进入到该目录:
在没有r权限的目录下,可以进入该目录吗? 答案是可以的。
同样的,在没有w权限的目录下也可以进入该目录
如果去掉x权限呢?
对于目录来讲,r代表什么意思呢?
对目录来讲,w代表什么意思呢?
可执行权限:如果目录没有可执行权限,则无法cd到目录中;
可读权限:如果目录没有可读权限,则无法该目录下的文件名及文件属性;
可写权限:如果目录没有可写权限,则无法在目录中创建和删除文件。
默认权限
首先我们创建一个普通文件和一个目录,可以看到我们创建的普通文件(不包括可执行)默认权限是从664开始的,而目录的默认权限是从775开始的(当然,不同的操作系统默认权限可能是不一样的),这是为什么呢?
我们了解几个概念
默认权限:创建目录和文件时你所看到的权限;
起始权限:系统设定的权限
普通文件起始权限:666(没有x的),目录文件起始权限:777(rwx);
最终权限:就是你最终所看到的,也就是默认权限
系统为了更好的控制文件的权限,系统会有默认的权限掩码(umask)的概念
权限掩码:在起始权限中,去掉在umask中出现的权限,不能影响其他任何权限。
最终权限=起始权限&(~umask)
umask命令可以查看当前的权限掩码,也可以修改权限掩码:
举个例子:
假设我们创建一个普通文件,权限为666,而我们设置的umask为 002,所以最终我们看到的默认权限就是665啦!
粘滞位
在使用Linux的时候,可能会有一些共享目录,被所有普通用户共享,用来保存普通用户所产生的的临时数据,共享的目录通常由root提供,当文件被所有人共享的时候,大家都会受到该目录权限的约束。
我们知道,当在该目录下我们扮演的角色拥有可写权限的时候,我们可以对该目录下的文件进行创建和删除,也就是说,这些共享的文件我们可以对其随意删除了,很显然随便删除这种事情并不安全,为了让大家共享文件,同时不让其他人随意删掉别人的文件,我们在共享目录上添加粘滞位来防止该情况的发生:
当一个目录被设置为粘滞位(chmod +t),该目录文件只能由:root、该目录所有者、该文件所有者来删除。