文件权限详解
一、文件类型
ll指令查看文件详细信息中,第一列就是文件类型。
常见的文件类型有:
1、 - :普通文件 (文本、源代码、图片、视频、可执行)
2、 d :目录文件
3、b :块设备
4、c :字符设备
5、l:链接文件
6、p:管道文件
7、s:socket文件
二、文件的权限
文件权限分为:读(r),写(w),执行(x)。
对于文件而言,用户也分为三类:拥有者(user),所属组(group),其他(other)。
这里三三为一组,顺序为:user、group、other
为 '-' 则代表没有对应权限,例如 test.txt 的user没有执行权限,other没有写和执行权限。
三、改变文件权限
1、普通文件的权限
1、用 chmod u+r 文件名 给 文件拥有者加读权限
类似操作:chmod u+rw 文件名 chmod g+rx 文件名 chmod o+xw 文件名
拥有者加读写权限 所属组加写执行权限 其他加写执行权限
任意组合即可实现权限的增加和移除。
2、因为权限只有 有 和 没有 两个状态,所以可以用1和0标识
因为有三种权限所以三种用户的权限可以用三个八进制表示
777(111111111) 代表 rwxrwxrwx 664(110110100) 代表 rw-rw-r--
所以可以 chmod 777 文件名 添加所有权限给全部人
只有文件的拥有者和root可以改变文件的权限!
2、目录文件的权限
对于一个目录而言
r权限代表可否查看目录内文件的信息
w权限代表可否增加和删除文件
x权限代表可否进入目录
没有读权限代表无法看目录内文件的信息!
没有写权限代表不能在目录中增加和删除文件
没有执行权限代表无法进入目录
四、umask权限掩码
权限掩码可以用来设置文件的初始权限。
使用方法:umask 0xxx xxx代表三个八进制数字,含义与上面一样
出现在掩码中的权限不会出现在文件的初始权限中
最终权限 = 起始权限 & (~umask) ==> ~umask的意思是对umask按位取反
普通文件的起始权限是666; 目录是777;
起始权限:把umask设为0即可看到
把umask设为0002,所有创建的文件other就没有写权限了
五、粘滞位
在同一台云服务器中,我们无法进入其他用户的目录(root除外),那我们想和别人一起维护一个文件时应该怎么办呢?
在/目录下就存在了tmp目录,文件写在里面,帮助我们不同的用户一起维护同一个文件。
因为tmp目录权限是777,所以我们写在里面的文件是可以被其他无关用户删掉的!!
为了解决这个问题,就引入了粘滞位,把目录的最后一位变成 t ,这样除了拥有者和root之外的其他人就无法删除文件了。
tmp目录最后一位为t,就是粘滞位,让除了文件拥有者、目录拥有者和root之外的其他人就无法删除文件。
我们也可以用chmod 为想要的目录加粘滞位
感谢大家观看!