Linux文件的umask默认权限、隐藏属性(chattr、lsattr)、文件特殊权限(SUID、SGID、SBIT)
原创
©著作权归作者所有:来自51CTO博客作者董哥的黑板报的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、默认权限:umask
- 创建文件时:rw-rw-rw-
- 创建目录时:rwxrwxrwx
- 上面的是系统的默认权限,我们自己设置的权限=系统默认权限-umask显示的值
查看默认权限的两种方式
- 第一种查看出来会显示4个数字,第1个数字先不用管,默认权限与后面3位数有关
- 后三位分别代表:拥有者、用户组、其他人的权限,数字代表我们自己在创建文件时:系统默认权限要减去的值的组合(r:4,w:2,x:1)
- 下面例如我的是0002,分别代表:--- --- -w-
- 我的系统在创建文件时,文件的权限为:(rw-rw-rw-) - (--- --- -w-)===>rw-rw-r--
- 我的系统在创建目录时,目录的权限为:(rwxrwxrwx) - (--- --- -w-)===>rwxrwxr-x
- 原理和上面一样的
- 我的系统是002,则umask -S查看显示的是:u=rwx,g=rwx,o=rx
二、隐藏属性:chattr、lsattr
- chattr [+-=] [选项] 文件/目录
- +、-、=分别代表对文件/目录属性的增、减、赋值
- A:设置了这个权限,当你在存取文件时,它的存取时间(atime)将不会被修改,可避免I/O较慢的机器过度的读写磁盘
- S:一般的文件时非同步写入磁盘的(sync),如果设置了S,则文件直接同步到磁盘
- a:文件将只能增加数据,不能删除或者修改数据(只有root才能设置这个权限)
- c:自动将文件进行压缩,在读取的时候自动解压。在存储的时候,将会先进行压缩再存储(对大文件比较有用)
- d:当dump程序被执行的时候,d属性可使该文件不会被dump备份
- i:很重要。它可以让一个文件不能被删除、改名、设置链接、无法写入更新数据。对系统安全性很有帮助(只有root才能设置这个权限)
- s:如果该文件被删除,将从硬盘上完全删除,不能恢复
- u:与s相反。如果该文件被删除,数据还存在磁盘中,可以恢复
- 上面的参数只能在ext2、ext3、ext4的Linux文件系统上生效,xfs文件系统仅支持[AadiS]这几个参数
- 很多选项只能root权限才能设置
查看文件的隐藏属性:lsattr
- 格式:lsattr [选项] [文件/目录]
- 选项
- -a:将隐藏文件的属性也显示出来
- -d:如果后面是目录,仅列出目录本身的属性
- -R:如果后面是目录,连同子目录的数据也一起列出来
- 前面的文章我们介绍过了r、w、x权限,分别代表读、写、执行
- 接下来介绍s与t权限。这两个权限与系统的账号以及系统的进程管理较为相关
三、SUID(Set UID)
- 概念:当s权限出现在文件拥有者的x权限上时,例如:-rwsr-xr-x,此时就被称为Set UID,简称SUID
- SUID权限的特殊功能与特点
- 重点:SUID权限仅对二进制程序有效(不能够用在shell脚本上面,因为shell脚本只是将很多的二进制文件调用执行而已)
- 执行者对于程序需要具有x的可执行权限
- 本权限仅在该程序执行的过程中有效
- 执行者在执行的时候将获得程序拥有者的权限
举例说明,更容易理解
- ①引入:我们Linux系统中,所有账号的密码都存在与/etc/shadow这个文件里面,其属性为:-rw-r-----(我的系统下是这样),代表只有root才可以修改密码。既然只有root才可以修改密码,为什么我们一般用户(例如使用dongshao)使用passwd命令时也可以修改密码哪?这就牵扯到passwd命令的属性了
- 我们列出passwd命令的属性可以看到:-rwsr-xr-x(在拥有者的x权限上出现了s属性)
- 解释原因:当我们用一般用户dongshao去执行passwd这个命令时
- dongshao属于passwd的其他人,拥有x权限
- 当dongshao去执行passwd这个程序时,因为拥有者具有s权限,所以donbgshao在执行的过程中,获得了拥有者的权限
- 获得拥有者权限之后,dongshao就可以通过passwd这个命令去修改密码(/etc/shadow这个文件可以被dongshao执行的passwd命令所修改)
四、SGID(Set GID)
- 概念:
- 当s权限出现在文件用户组的x权限上时,例如:-rwxr-sr-x,此时就被称为Set GID,简称SGID
- SGID可以针对文件或目录来设置
SGID权限的特殊功能与特点
- SGID对二进制程序有效
- 程序执行者对于程序来说,需要具备x权限。执行者在执行的过程中将会获得该程序用户组的支持
- 用户若对于此目录具有r和x权限时,该用户能够进入此目录
- 用户在此目录下的文件/目录的有效用户组都将会变成该目录的用户组
- 用途:若用户在此目录下具有w权限时,则用户所建立的新文件,新文件的用户组就是此目录的用户组
- 例如:/usr/bin/locate这个程序可以查找/var/lib/mlocate/mlocate.db这个文件
- /usr/bin/locate:-rwx--s--x. 1 root slocate
- /var/lib/mlocate/mlocate.db:-rw-r-----. 1 root slocate
- 当我们使用dongshao这个账号去执行/usr/bin/locate这个程序去查找/var/lib/mlocate/mlocate.db这个文件时,会取得slocate用户组的支持,因此能够读取mlocate.db
五、SBIT(Sticky Bit)
- 概念:当t权限出现在文件其他人的x权限上时,例如:-rwxrwxrwt,此时就被称为Sticky Bit,简称SBIT
- SBIT权限的特殊功能与特点
- 重点:此用户需要对此目录具有w、x权限,即具有写入功能
- 当用户在该目录下建立文件或目录时,仅有自己与root才有权力删除该文件
- 例如甲这个用户对于A目录来说具有用户组或其他人的身份,并拥有该目录w的权限,代表甲用户可以对该目录内任何人建立的目录/文件进行删除、更名、移动等。不过如果,我们将A目录加上了SBIT权限后,则甲只能针对自己建立的文件或目录进行删除、更名、移动等操作,而无法删除它人的文件
- 例如:我们的/tmp目录的权限是:drwxrwxrwt。代表任何人可以在/tmp目录下新增、修改文件,但是该文件仅有建立者和root可以删除
六、设置SUID、SGID、SBIT权限
- 设置:SUID、SGID、SBIT可以使用前面文章介绍过的chmod命令修改。chmod修改可以又有两种格式
- 数字格式设置:r、w、x三个权限的数字分别为:4,2,1。SUID、SGID、SBIT也有三个数字代表,分别为加在rwx数字的前面
- 例如:加入SUID权限chmod:chmod 4775 test;
- 加入SUID、SGID权限:chmod 6775;
- 将test文件修改为-rws--x--x:chmod u=rws,go=x test;
- 承上,将test文件修改为-rws--s--t:chmod g+s,o+t test;
七、注意事项
- 原因:上面介绍过,能使用s和t权限,执行者必须对文件/目录具有可执行的x权限,大写是因为执行者对于文件/目录不具有x权限,是无效的
- 例如,我们修改一个文件的属性为7666,就会出现以下情况:666代表rw-rw-rw-,都不具有x权限,因此都是大写
- 我是小董,V公众点击"笔记白嫖"解锁更多【Linux入门基础】资料内容。