1、理解Linux系统默认权限设定和掩码(umask)
在Linux操作系统上,所有文件系统预设的默认权限是666,即所有者、同一群组用户和其他用户都具有读和写权限,但都没有执行权限。而目录系统预设的默认权限是777,即所有者、同一群组用户和其他用户都具有读、写和执行的全部权限。但是以上所介绍的默认权限并不是生成文件和目录时所产生的最终的文件和目录的权限,而是要经过掩码(umask)挡掉某些不需要的默认权限,最后才能产生用户所需的文件和目录的最终权限。umask的英文原义是化装舞会上的面具,一个人带上了面具别人就看不到他/她的本来面目。
在文件或目录的某一些权限上使用了umask,系统将看不到这个(或这些)权限了,也就相当于它们被过滤掉了。Linux系统在预设的情况下,普通用户的默认掩码(umask)为002,而root用户的默认掩码为022。
2、怎样使用掩码产生用户所需的文件和目录的最终权限?
在Linux系统上,所有文件系统预设的默认权限为666,而root用户的外认掩码为022,所以经过掩码遮挡后group 和other的写权限都被遮挡掉了(也只有这两位被道挡掉, 因为其他位都没有遮罩),因此最终这个文件的权限 是644。
3、理解suid,sgid和sticky这三种特殊权限
① suid是借用所有者(u)权限中的最后一位,即可执行权限位,并以s来表示。
② sgid是借用群组(g)权限中的最后一位,即可执行权限位,并以s来表示。
③ sticky是借用其他用户(o)权限中的最后一位,即可执行权限位并以t来表示。
4、理解特殊权限对可执行文件的作用。
首先可以将suid和sgid特殊权限设定在可执行文件上,它们具有如下特性:
suid特殊权限是以命令(可执行文件)的所有者权限来运行这一命令(可执行文件)的,而不是以执行者的权限来运行该命令。
sgid特殊权限与suid类似,是以命令的群组的权限来运行这一命令的。
5、理解特殊权限对目录的作用。
将sticky和sgid特殊权限设定在目录上,它们具有如下特性:
① 如果在一个目录上设置了sticky特殊权限,那么就只有文件的所有者和root用户才可以删除该目录中的文件,而Linux系统不会理会group或other的写权限。
② 如果在一个目录上设置了sgid特殊权限,那么只要是同一群组的成员(具有相同gid的用户),都可以在这个目录中创建文件。
③ 通常会对目录同时设置sticky和sgid这两个特殊权限以方便项目的管理(将同一个项目的文件都放到这一个目录中以方便同一项目的成员之间共享信息)。
6、理解特殊权限在项目开发或管理中的使用方法以及对系统安全的影响等。
在实际应用中,很少使用项目的普通成员的家目录或它的子目录来作为项目的共享目录,因为这样这个普通成员用户的权限有些过大,如fox用户就可以删除其他用户在这个共享目求中创建的文件,这样可能会存在安全隐患。之所以使用这一方法,主要是为了减少书的篇幅。在实际工作中,也许单独创建一个用户如manager,而将这一用户的家目录或它的|子目录来作为项目的共享目录让其他用户分享会更好。