Linux文件特殊属性

文中有不对或者有不清楚的地方,请你们告诉我,谢谢!
 
Linux文件特殊属性
Linux文件特殊属性主要包括它的默认权限、隐藏属性和特殊权限(SUID/SGID/SBIT)。
下面咱们就来分别讲解它的这些特殊属性。
 
1. Linux文件默认权限:umask
咱们在新创建一个文件时,它都有本身的默认属性。它们的默认属性是经过“umask”值来设定的。
那么如何来查看和设置umask值呢?
① 查看umask值
[root@localhost /]#umask(数字形式)
0022
[root@localhost /]#umask –S(符号形式)
u=rwx,g=rx,o=rx
上面的命令显示出umask值的两种表现形式。咱们看到数字表现出来的有4位数字,第一位数字用来表示特殊权限,咱们在后面介绍,第二三四位数字分别用来表示用户/组/其余用户的权限。
在默认权限的属性上,目录文件和普通文件是不一样的。由于咱们不但愿普通文件具备可执行权限,因此,普通文件在默认状况下是没有执行权限的。又由于目录文件须要具备可执行权限才能够进入,因此普通文件的默认属性最大为666,目录文件的默认属性最大为777。
 
② umask值的意义
umask值就是指“Linux文件的默认属性须要减掉的权限”。好比Linux普通文件的最大默认属性是666,目录文件的最大属性是777。可是咱们不想要用户在新创建文件时,文件的属性是666或777,那么咱们就要设置umask值。Linux系统预置的umask值是022,那么用户在新创建普通文件时,普通文件的属性就是666-022=644,新创建目录文件时,目录文件的属性就是777-022=755。
 
③ umask值设置
咱们不想要新创建的普通文件的属性是644,目录文件的属性是755,咱们想要新创建普通文件的属性是664,新创建目录文件的属性是775。那么咱们就设置umask值为002便可。设置方法就是“umask 002”。
 
2. Linux文件隐藏属性
文件都具备隐藏属性,隐藏属性对于系统安全来讲很重要。
① 设置文件隐藏属性
[root@localhost /]#chattr [-R] [-+=] [AacDdijsSu] 文件名
(A)no atime updates;(a)append only;(c)compressed;(D)synchronous directory updates;(d)no dump;(i)immutable;(j)data journalling;(s)secure deletion;(S)synchronous updates;(u)undeletable;(T)and top of directory hierarchy;(t)no tail-merging。
经常使用参数意义:
-R:递归处理。
-:删除某个隐藏属性,其余本来存在的属性不改变。
+:添加某个隐藏属性,其余本来存在的属性不改变。
=:将隐藏属性设置为指定的参数,其余本来存在的属性会被改掉。
A(atime):若是设置了A属性,则这个文件的最后访问时间atime不能被修改。
a(append only):若是设置了a属性,则这个文件只能增长数据,不容许任何进程覆盖或截断这个文件。若是某个目录具备这个属性,那么只能在这个目录下创建和修改文件,而不能删除任何文件。
i(immutable):若是设置了i属性,则不能对这个文件作任何修该。若是某个目录具备这个属性,那么只能修改该目录下的文件,而不能创建和删除文件。
s(secure deletion):若是设置了s属性,则这个文件将从硬盘空间中彻底删除。
u(undeletable):与s彻底相反。若是设置了u属性,则这个文件虽然被删除了,可是还在硬盘空间中存在,还能够用来还原恢复。
 
② 查看文件隐藏属性
文件既然有隐藏属性,那么咱们如何查看这些文件的隐藏属性呢?
[root@localhost /]#lsattr [-RVadlv] 文件名
-R:递归显示目录文件下的全部文件。
-a:显示隐藏文件的属性。
 
[root@localhost /]#lsattr –Ra CaiWu
-----a------- CaiWu/.bb.swo
------------- CaiWu/aa
CaiWu/aa:
------------- CaiWu/aa/.
-----a------- CaiWu/aa/..
-----a------- CaiWu/.
------------- CaiWu/..
------------- CaiWu/bb
-----a------- CaiWu/.bb.swp
-----a------- CaiWu/.bb.swn
-----a------- CaiWu/.bb.swpx
 
3. Linux文件特殊权限
Linux文件特殊权限主要体如今set UID、set GID、Sticky Bit这三个上面。
要理解这三个特殊权限,就要先理解帐号的ID(UID和GID)以及进程等概念。
① SUID
SUID就是Set UID。设置它是为了让普通用户在执行某些程序时,可以暂时具备该程序的拥有者权限。
好比:在Linux系统中普通用户也可使用passwd命令来修改本身的密码。可是密码文件shadow只有root用户有读权限,其余用户没有任何权限,那么普通用户是怎样经过passwd命令来修改本身的密码呢?咱们看下/usr/bin/passwd程序的属性就知道了。
[root@localhost /]# ll /usr/bin/passwd
-rwsr-xr-x 1 root root 22984 Jan 7 2007 /usr/bin/passwd
咱们发现passwd程序user的x权限位变成了s。那么在这里就是这个s使普通用户有权限来执行这个程序。它让普通用户在执行passwd这个程序时暂时拥有了root的权限。
所以,当某程序user的x权限位变成s时,就是进行了Set UID设置,简称SUID。
SUID仅可用于二进制文件,对于其余普通文件,目录文件和脚本之类的文件是无效的。
 
② SGID
SGID就是Set GID。设置它用来做用于用户组。
若是将SGID设置在二进制文件上,则不论用户是谁,在执行该程序时,它的有效用户组将会变成改程序的用户组全部者;
若是将SGID设置在目录文件上,则在该目录文件内所创建的文件或目录的用户组,将会变成该目录的用户组。
SGID通常用于团队的项目开发上,在系统中不多使用。若是设置了SGID,那么该二进制文件或者目录group的x属性位将会变成s。
 
③ SBIT
SBIT就是Sticky Bit。若是在设置了SBit属性的目录中,用户在该目录下拥有w和x权限,那么当用户在该目录下新建文件时,只有文件拥有者和root才有权利删除。
好比:root在/目录下创建了一个文件夹test,test的权限是0777。在没有加特殊权限前,任何人均可以在test目录下作任何事,包括删除别人创建的文件。当我给test目录设置了SBit属性后,那么bobyuan这个用户在test下新建了一个文件bobtest, 属性是0777;bob这个用户进入test目录下试图删除bobtest,发现没有权限删除。
若是某个目录设置了SBit属性,那么该目录other的x属性位将会变成t。如【drwxrwxrwt】。
SBIT仅可用于目录文件对于普通文件是不生效的。
若是某个文件的user或者group或者other没有设置x属性,可是设置了SUID或者SGID或者GBIT,那么,这些特殊属性将会以大写的S和T表现出来。
 
④ 设置SUID/SGID/SBIT
咱们用数字形式来表示这三个特殊属性,他们和r/w/x的数字表现形式相似。
SUID:4
SGID:2
SBIT:1
好比我要设置cat命令的SUID属性,那就能够用chmod 4755来实现。
好比我要设置test目录的SBIT属性,那就能够用chmod 1777来实现。
注意,在设置目录或者二进制文件的特殊属性时,必定要给予这些目录或者文件可执行权限。若是未给予可执行权限,即便设置了特殊属性,也将会是空的,会用大写的S和T表示。
相关文章
相关标签/搜索