linux 文件的默认权限,隐藏权限和特殊权限

时间:2022-08-29 15:14:10

1.默认权限

 新建一个新的文件或目录时,它存在一个默认权限~~基本上,umask就是指定“目前用户在新建文件或目录时候的权限默认值”~

可以通过两种方式来查看新建文件或目录的默认权限值:
1)直接输入umask,就可以看到数字形态的权限设置,这里看到的umask的值,文件或目录的默认值是777减去umask的值

2)加上-S这个参数,就会以符号类型的方式来显示出权限

也可以指定umask的值,从而改变文件或目录的默认权限~

2.隐藏属性

文件的隐藏属性对系统有很大的帮助,尤其是在系统安全上面~

设置文件的隐藏属性:可以使用chattr命令(只能在ext2/ext3的文件系统上生效)

chattr [+-=] [ASacdistu] 文件或目录名称

[+-=]分别用来增加删除或设置隐藏属性

这里有两个隐藏属性比较重要:

1)a:当设置a之后,这个文件将只能增加数据,而不能删除也不能修改数据,只有root才能设置这个属性

2)i:它可以让一个文件“不能被删除,改名,设置连接,也无法写入或添加数据”,对于系统安全性有相当大的帮助,只有root才能设置此属性

显示文件隐藏属性:可以使用lsattr命令

lsattr [-adR] 文件或目录

3.文件的特殊权限:SUID,SGID,SBIT

文件除了r、w、x这三个读、写、执行的权限外,还有两个特殊权限s和t,这两个权限的意义与系统的账号及系统的进程较为有关~

SUID:当s这个标志出现在文件所有者的x权限上时,此时就被称为Set UID,简称为SUID的特殊权限。SUID有这样的限制与功能:

1)SUID权限仅对二进制程序有效,shel script不是二进制文件

2)执行者对于该程序需要具有x的可执行权限

3)本权限仅在执行该程序的过程中有效

4)执行者将具有该程序所有者的权限

SGID:当s在用户组的x时则称为Set GID,SGID。与SUID不同的是,SGID可以针对文件或目录来设置。如果对于文件来说,SGID有如下功能:

1)SGID对二进制程序有用

2)程序执行者对于该程序来说,需具备x的权限

3)执行者在执行的过程中将会获得该程序用户组的支持(执行者是非本用户组成员,但是执行时拥有本用户组的权限

如果目录设置了SGID权限后,它将具有如下功能:

1)用户若对于此目录具有r与x的权限时,该用户能够进入此目录

2)用户在此目录下的有效用户组将会变成该目录的用户组

3)若用户在此目录下具有w的权限(可以新建文件),则用户所创建的新文件的用户组与此目录的用户组相同。

SBIT:这个Sticky Bit(SBIT)目前只针对目录有效,使用t在其他人的x,来对于文件已经没有效果了,它对于目录的作用是:(目录对多个用户具有写权限,多个用户可以在目录中写文件,但是每个用户只能管理自己的文件

1)当用户对于此目录具有w、x权限时,即具有写入的权限时

2)当用户在该目录下创建文件或目录时,仅有自己与root才有权限删除该文件,例如/tmp,它的权限设置为drwxrwxrwt,可知,如果不使用SBIT,任何人都可以管理/tmp中的文件,但是如果设置了SBIT,则只能是每个用户只能管理自己的文件

SUID/SGID/SBIT权限设置

4为SUID

2为SGID

1为SBIT

其实SUID和SGID的作用跟sudo是相似的。当用户A想执行一个原本属于用户B的可执行文件时,若B的文件设置了suid位,则A在执行时是以用户 B的身份来执行。 其中一个suid的应用实例就是passwd,在linux中,存储密码的文件是/etc/passwd与/etc/shadow这两个文件,这两个文件的所属用户是root,也就是说,只有root用户可以修改这个文件。但是在一个多用户 的系统中,即便是普通用户,也有更改自己的密码的权限吧?但是更改密码就要更到/etc/passwd这个文件,一般情况下是不被允许的。所以,这就是suid的作用了。

SGID多用在团队合作上,实际应用我觉得很少,具体应用是不太清楚,但是,可以创建一个目录,作为团队合作的工作目录,设置 sgid,那么团队成员都会以这个组的身份来访问操作这个目录的,如果在这个目录下创建了文件,则所属的组是这个目录所属的组。这个,属于这个组的其它成员就都可以共享这个文件的内容了。