Linux-鸟菜-6-文件与目录的 默认权限、隐藏权、特殊权限
除了基本r,w,x权限外,在Linux还可以设定其他系统隐藏属性,可以用chattr来设定,和lsattr来查看,但注意一点,CentOS 7.x当中利用xfs作为预设文件系统,但是xfs就没有支持所有的chattr的参数了。仅支持部分参数。
文件预设权限:umask
Umask是指定目前用户在建立文件或目录时候的权限默认值,可以获取和设定umask。
上面0022中的0代表的是特殊权限,下面再说,基本权限相关的是剩下的那三个数字022.
022的意思是刨除的意思,是用户组刨除0(也就是不刨除),而组或者其他人则刨除2(w),同时文件在创建的时候还默认刨除x属性,也就是比如022 对于其他人是刨除2(2),再加上默认的刨除x,则最后其他人的属性是 rwx - w - x = r,最后整理得到,022默认对应的文件属性是rw-r--r-- 就是上面的a.dat。
而相对于文件夹来说,没有默认刨除x的这个事,2对应的就是
Rwx - w = r-x。所以022对应的文件夹属性就是rwxr-xr-x 上面图中a.dir就是。
若使用者建立文件,则预设没有x权限,亦即只有rw这两个权限,也就是最大为666,预设权限如下:
-rw-rw-rw-
若是建立文件的话,则没有默认删除x权限的事。最大为777:
drwxrwxrwx
一定要注意,umask的默认权限是排除权限的意思。同时处理权限的时候一定不能直接做减法然后去看,因为文件里面有一个默认x排除的事。同时也不要想着,如果是文件的话就直接666-umask,文件夹就777-umask,如果umask里面有x的话,666-umask会出错。
下面是修改umask
文件隐藏属性
Chattr(配置文件隐藏属性)
下面是演示一下chattr 中的 -i,root自己也删除不了。
lsattr(显示文件隐藏属性)
增加和查询隐藏属性
文件特殊权限:SUID,SGID,SBIT
看到S属性和T属性了吗?之前接触的都是rwx,而那个S T属性就是特殊文件权限。
Set UID
当s这个标志出现在文件拥有者的x权限上时,例如上面那个passwd这个文件权限的状态-rwsr-xr-x中的s,此时称为Set UID,简称SUID的特出选线,SUID权限对于文件特殊功能是:
Passwd是更改密码的程序,shadow里面存的是密码,当我们作为一个非root的普通用户的时候我们依然可以更改自己的密码,也就是说我们可以操作权限为 ---------- 1 root root 的这个shadow文件,原因是passwd这个程序(文件)中有SUID的特殊权限,当执行这个passwd的时候我们就获得了文件拥有者root的权限,所以可以对shadow进行操作,有点类似与windows的内核态切换。根据经验,这种权限切换的地方很容易出现漏洞的,其他windows是这样,Linux的话刚接触没几天,并不知道相关情况。慢慢玩后期再看。
当然因为cat没有s[SUID]权限,所以在飞root权限下无法通过cat来看shadow文件内容:
对于cat和passwd两个中的SUID权限比较,书上有这个图:
同时注意。SUID只能用在binary program上,不能用在shell script上面。
Set GID
当s标志在文件拥有者的x项目为SUID,当s在组群的x时则称为Set GID,SGID。
与SUID不同的是,SGID可以针对文件或目录来设定,如果是对文件来说,SGID有如下功能:
对于目录的话:
Sticky Bit,SBIT 目前只针对于目录有效。作用是:
当用户对于此目录具有w,x权限,亦即具有写入的权限时;
当用户在该目录下创建文件木偶目录,仅有自己与root才有权利删除该文件。
SUID/SGID/SBIT权限设定
4 SUID
2 SGID
1 SBIT
chmod ?---中问号就是可以设置特殊权限,后面的三个是之前提到的 u g o 的三个权限的 r w s权限设定。
设定之后如果出现大写的S T的话就是空,比如chmod 7666,这样后面666本身没有x属性,而特殊权限是建立在有x属性上的,所以就大写表示,大写表示不存在S T。
观察文件类型 file
总结:
鸟哥这章里还说了文件查找,明天单独列出来一个笔记来整理,不加在这里了。