基本权限
i.读(r/4):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
ii.写(w/2):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
iii.执行(x/1):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
iv.“—”表示不具有该项权限
文件权限值的表示方法
-
字符表示法
LInux表示 说明 LInux表示 说明 r– 只读 -w- 只写 –x 只可执行 rw- 可读可写 -wx 可写可执行 r-x 可读和可执行 rwx 可读可写可执行 — 无任何权限 -
八进制数值表示法
权限符号(读、写、执行) 八进制 二进制 r 4 100 w 2 010 x 1 001 rw 6 110 rx 5 101 wx 3 011 rwx 7 111 — 0 000
文件的默认权限
Linux里创建普通文件或目录文件是有默认权限的,普通文件的默认起始权限是666,而目录文件的默认起始权限是777.
而我们可以通过
umask
来查看当前默认权限,这个默认权限的影响是创建文件的时候三个人(所有者、所属组、其它人)能有的权限,一般没动过默认权限的话,那么它给的是002。
那么这个002是什么意思的呢?你不是说它默认权限是666和777吗?
注意我说的是其实权限,它们确实是666和777而当前的002的意思是如下图:
注意:以上是八进制的形式操作
而这样做之后变成664又是啥意思,其实很简单我们十进制的话就是一个数字对应一个人,如下图:
你可以这么理解你想要创建的文件默认权限是多少的话可以减去相应的10进制如:我不想所属组能写,我就直接022
可以看到这样操作就能达到我们想要的目的。
文件目录权限和普通文件权限的区别
普通文件权限
如果一个普通文件你所扮演的角色没有相应的权限会无法操作,如没有r权限那么你将无法打开普通文件,如果没有w你将没有写操作,如果强制写还是能写进去的。
如果想修改可以使用chmod
指令进行文件权限修改,而如果这个文件所有者不是你,你无权修改当然你使用权限提升是可以修改的。
目录文件权限
面试题: 目录文件的rwx权限对应的是什么效果?
答: r代表读,如果没有这个权限我们我们无法打印目录内的内容,因为要打印的话需要先读再输出到屏幕上,w代表写:我们依然能进入目录,但是不能创建任何文件,x代表可执行:如果没有可执行不能进入目录,不仅不能进入目录你就算有读和写的权限也不能查看目录内的详细内容,只能查看大概的文件名,而且也写不进去,所以目录文件不管怎么样都必须有可执行权限,如果没有那么什么都干不了。
粘滞位
粘滞位是一把锁,为什么会有粘滞位?
因为Linux下所有的文件权限只针对读和写,如果这个文件我无任何权限,那么我可不可以删掉它呢?答案是可以的,不仅普通用户的文件能删而且root用户的文件也一样能删,那你可能会说我们把工作目录设为不可读和写那么它不是不就删不了了吗?是的,但是有些文件我们需要公开任何人都能访问,但是 如果有人想删掉的话怎么办?我们可以用粘滞位,这个目录文件一旦有了粘滞位,目录文件及目录文件内的内容除了root用户和文件所有者能删除其它人无法删除。
添加粘滞位的方法:chmod o+t 文件目录名
如果你的目录是不可执行的话那么t会变成T,正常情况下没有都是t不会是T的因为目录文件无法访问也就不存在删除里面内容的问题了。
drwxrwxr-x 3 ls ls 4096 Dec 8 09:25 code
drwxrwxr-t 3 ls ls 4096 Dec 10 14:04 dir1
drwxr-xr-x 2 root root 4096 Dec 10 14:40 dir2
-r-xrw-r-- 1 ls ls 69 Dec 10 13:41 test1.txt
-rw----r-- 1 ls ls 0 Dec 10 13:29 test2.txt
-rwxrwxrwx 1 root root 0 Dec 10 13:44 test3.txt
[root@VM-4-7-centos ls]\# chmod o+t dir2 #添加粘滞位
[root@VM-4-7-centos ls]\# ll
total 16
drwxrwxr-x 3 ls ls 4096 Dec 8 09:25 code
drwxrwxr-t 3 ls ls 4096 Dec 10 14:04 dir1
drwxr-xr-t 2 root root 4096 Dec 10 14:40 dir2
-r-xrw-r-- 1 ls ls 69 Dec 10 13:41 test1.txt
-rw----r-- 1 ls ls 0 Dec 10 13:29 test2.txt
-rwxrwxrwx 1 root root 0 Dec 10 13:44 test3.txt
其它用户无法删除
drwxrwxr-x 3 ls ls 4096 Dec 8 09:25 code
drwxrwxr-t 3 ls ls 4096 Dec 10 14:04 dir1
drwxr-xr-t 3 root root 4096 Dec 10 14:42 dir2
-r-xrw-r-- 1 ls ls 69 Dec 10 13:41 test1.txt
-rw----r-- 1 ls ls 0 Dec 10 13:29 test2.txt
-rwxrwxrwx 1 root root 0 Dec 10 13:44 test3.txt
[ls@VM-4-7-centos ~]$ rm -r dir2
rm: descend into write-protected directory ‘dir2’? y
rm: remove write-protected regular empty file ‘dir2/test.txt’? l^H^C
[ls@VM-4-7-centos ~]$ rm -r dir2
rm: descend into write-protected directory ‘dir2’? ^C
[ls@VM-4-7-centos ~]$ rm -rf dir2
rm: cannot remove ‘dir2/test.txt’: Permission denied
rm: cannot remove ‘dir2/dir3’: Permission denied