Linux学习第十一篇--默认权限和特殊属性
2017-06-16 14:12
274 查看
前言
我们在使用mkdir命令的时候可以通过使用 -m 选项来制定创建目录的权限.但是如果我们不使用-m参数,创建出来的目录的权限是什么样子呢?Linux的默认权限--umask
umask在linux可用于查看和设定用户创建目录或文件时的默认权限.我们可以直接键入命令umsk 查看当前的默认权限,也可使用umask -S 让默认权限以字符的形式展示出来,也可以使用umask 数值来设定默认权限
我们首先要知道一点,对于目录来说,其默认权限属性是777,而文件则是666.之所以出现这种状况,主要是因为.
1.对于目录来说,因为r权限涉及到该目录是否能够被查看,w权限代表着该目录内部是否允许操作,x权限代表着该目录是否能够进入,正常来说我们创建目录的目的,必然是需要进入其中,进行文件操作的.所有目录的默认权限属性是777,即drwxrwxrwx.
2.但是对于文件来说,rw权限通常来说是会使用到的,但是x权限通常只有shell script 等少数类型的文件才会使用,所有默认不开启x权限,故文件的默认权限时666.即 -rwxrwxrwx.
当然上面说的是目录和文件的默认权限属性,而不是实际创建出来的目录权限,在实际创建出目录后,还需要用这个默认值减去umask的值.
比如,如果umask的值为0022,那么创建目录的时候就需要使用drwxrwxrwx 减去 -----w--w- 即, drwxr-xr-x.而事实上也的确如此.
同理对于文件来说,默认权限是666,即- rw-rw-rw- 减去默认的权限0022即 -----w-w- 创建出来的文件权限应该为-rw-r--r--,结果如下:
这就是linux中文件/目录的默认权限.但是有一点需要特别注意的是.
[b]创建目录或文件的权限,并不是使用默认权限属性(666/777)减去umask就行,比如如果当前umask的值为0033,创建文件后,那么直接减的话,将会发现权限结果为633.
得出的权限结果为 -rw--wx-wx 但是实际权限应该是 -rw-r--r--.所以应该是转换成rwx的表示方法,然后剔除掉需要删掉的权限.
Linux文件的特殊权限
本篇博客一开始探讨的是默认权限的问题,通过之前的学习,此时已经不难发现,文件权限主要是rwx三个参数,那么除了这三个真的就没了吗?of course not,不然我在这干啥...
如果我们查看passwd命令的文件属性的话,会发现一件很尴尬的事情...
他的所属用户的执行权限的位置不是x也不是-.而是一个s...
喵喵喵!!?excuse me!!??
这个s是个什么权限,做什么用的?丫没见过啊...
在linux中,刚才的这个s,有一个名称叫 Set UID,也成为SUID,他是一种特殊权限.
SUID只能出现在文件上,且仅对二进制文件有效.他的作用就是,当一个用户拥有该文件x(执行)权限的时候,那么在执行过程中,执行者拥有该文件所属者的权限.
听不懂吗?是不是有点懵?别急,慢慢的,一句一句的,多读两遍.
读完之后就会发现自己慢慢懂了...是在搞不懂,去/usr/bin下看看这些命令,然后找到有SUID权限的文件,慢慢研究~(特殊权限的文件会被特殊颜色标记哦).
我们都知道一个文件的权限分为三个分组,所属者,所属组,其他用户,那么既然有使用在所属者上的特殊权限,也应该有用在所属组上权限呀.
当当当当...所属组上的这个权限就是 Set GID,简称SGID,在所属者上叫SUID,在所属组上叫SGID.恩,这个推理很完美,没有一丢丢的问题.
和SUID略有不同的是,SGID不仅能够应用在二进制程序文件上,也可以作用在目录上.
如果是文件,拥有SGID权限的文件的作用是这样的:当程序对该二进制文件有执行(x)的权限时,那么在该文件执行过程中执行者将会获取该程序所属组的权限.
老规矩..慢慢的,一句一句 ,多读几遍.
如果SGID作用于目录的话,如果用户对于该目录有rx(可进入该目录)权限,那么在此目录下,该用户在此目录下的有效群组是该目录的所属组.如果用户还有w(写的权限),那么该用户创建的文件的所属组为该目录的所属组.
等等,别急,先别急着读两遍,这里面提到了一个名词,叫做有效群组,何为有效群组?
我们知道用户和群组的关系是多对多的关系,即一个用户可以属于多个群组,一个群组可以拥有多个用户,那么对于用户来说哪个才是有效群组呢?我们可以使用groups命令来查看当前用户的群组列表,第一个输出的群组就是有效群组.通常来说,有效群组的作用就是用来创建文件.
好了,了解了有效群组,回到SGID目录那一部分,老规矩,你懂得.
接下来再聊一种只对目录有效的特殊权限--Sticky Bit.恩...他就叫SBIT.
SBIT作用于目录时,如果用户对该目录拥有wx(写入)权限,那么这个用户创建的文件只有ROOT用户和他本身才能够删除.
这个权限很6啊.用了这个命令配合文件的隐藏属性(待会学)简直不要太强大啊.
等等,好像忘了什么东西!?
说了这么多还米有说怎么修改文件的特殊权限呢.
文件的特殊权限也同样是使用三位二进制码来表示的,第一位表示SUID,十进制对应值4.第二位表示SGID,对应十进制值2,第三位表示SBIT,对应十进制1.
如果我们需要添加文件权限其实相对比较简单的,之前我们修改文件权限使用的是这种命令:
chmod 777 文件名.同理,如果我们需要修改特殊权限的话,依然使用chmod命令,只不过权限值不再是三位而是四位,其中第一位就表示特殊权限值.
比如,chmod 4777 文件名 ,这里的4就代表着特殊权限SUID.
当然我们也可以使用符号来改变文件的特殊权限,比如可以使用chmod u+s/g+s/o+t 来添加特殊权限SUID/SGID/SBIT.
还有一点需要注意的是,如果文件所属者/文件所属组都没有对应的执行权限,那么在权限上显示的不是s/t而是S/T,表示该权限是空的.
Linux的隐藏属性
在linux中,文件不止我们常见属性还有一些隐藏的属性,就好像我们打游戏的隐藏BOSS一样,他们不常被发现,但是往往极为强大.我们可以使用lsattr(List Attribut)来查看当前文件是否含有隐藏属性,也可以使用chattr(change attribute)来改变隐藏属性.
但是,我们先不讲这两条命令,而是先研究一下,隐藏属性具体是个什么东西?
骗你的...哈哈.我们先了解一下chattr命令.
好好看博客,别闹,不就骗一下你吗,有话好说,把刀放下....
在linux文档中描述chattr说这个命令是改变文件在linux文件系统中的属性,他可以通过+/-/=后面跟选项来给文件赋上隐藏属性.
举个栗子:
如果使用命令 chattr +A filename,那么以后这个对这个文件进行存储操作的时候,他的atime就不会变了.
现在学一下,chattr的常用参数
先搞清楚三个符号是啥意思:
+ :这个长得像加号的东西,可以用来增加一个特殊参数(隐藏属性啦).
-:这个长得像减号的东西,可以用来移除一个特殊参数(隐藏属性).
=:这个长得像等号的东西,可以将文件的特殊参数设置为后面的,不管以前啥样,改完之后,就变成=号后面的了.
在+-=后面可以跟的参数不多,但是每个都有其独特的作用,比如,示例中的A,
A属性,表示该文件/目录在存取时不会改变atime,
当然还有其他属性:
S,对该文件的修改,将会变成同步操作(一般默认是异步的).
a:这个属性很厉害,和SBIT权限一样牛,当设定了a属性后,这个档案只能增加数据,其他的像删除,修改之类的就不要想了,除非你是root用户.
c:这个属性就是告诉系统,以后存储该文件的时候先压缩在存储,读取的时候先解压在读取.
d:在dump程序执行的时候,该文件/目录不会被备份.
i:这个和a一样牛,他可以让一个文件不能被删除,不能被改名,不能写入和新增资料.不能设定链接.啥意思..意思就是设置了i属性,你要不是root,你就别想着对这个文件进行任何操作了!
s,被标记的文件/目录被删除时,完全删除.无法找回.
u:s的死对头,被标记的文件/目录被删除后,实际上还存在磁盘中,还能找回.
当然,上面这几个主要是特殊属性的操作,那么chattr本身就没有选项吗?
当然有,chattr 的R选项可以递归改变属性.剩下的选项就不是很重要了.
额咳咳,好了,现在我们学会如何修改文件的隐藏属性,但是会改了还不行啊..怎么查文件的隐藏属性啊!?在线等,挺急的!!!
查看文件的隐藏属性可以使用lsattr命令.
lsattr命令的作用就是显示在linux文件系统中文件的属性.
他常用的选项主要是:
R,递归,如果目标是目录的话,连其子目录的数据也列出来.
a,列出所有文件的属性,包括隐藏文件.
d,如果目标是个目录,那就只列出目录本身的属性.
哦了.终于打完了隐藏boss.
相关文章推荐
- linux操作学习06文件权限:文件属性查看(ls),文件所有人、组的管理(chown、chgrp),文件普通权限(chmod)、系统默认权限的设定(umask)、文件特殊权限
- linux学习入门 基础部分(6)【文件属性,目录属性,更改组,权限识别,默认权限,特殊权限,权限列表】
- linux学习(8)文件的隐藏属性,隐藏属性设置,特殊权限,特殊权限设置,观察文件类型
- 【Linux 学习】文件普通、默认和特殊权限
- 转载:linux的文件属性和权限学习——分析ls命令结果
- Linux学习记录--文件|目录的默认权限与隐藏权限
- [Linux学习]文件属性及权限
- 【Linux学习记录】Linux文件属性权限、目录管理
- linux文件权限学习 包括 特殊权限
- 再次学习linux文件特殊权限:SUID、SGID、Sticy Bit
- Linux学习记录--文件|目录的默认权限与隐藏权限
- Linux默认预设权限属性umask(鸟哥的Linux私房菜基础学习篇第三版-第七章) | (待完善)
- linux 文件的默认权限,隐藏权限和特殊权限
- Linux学习记录--文件特殊权限
- Linux基础学习-属性与权限控制
- 再次学习linux文件特殊权限:SUID、SGID、Sticky Bit
- Linux学习(一) ─── 文件属性及访问权限控制
- linux的文件属性和权限学习——分析ls命令结果
- 【Linux学习记录】Linux文件属性权限、目录管理
- linux学习入门14——Linux扩展权限(linuxcast.net)(uamsk、特殊权限(suid,sgid,sticky))