一、umask
1、功能说明
umask是通过八进制的数值来定义用户创建文件或目录的默认权限的。系统会根据预先设定的umask值计算出默认情况下创建的文件或目录权限。
2、语法
#umask
3、文件默认权限计算
1)创建文件默认最大的权限为666(rw-rw-rw-),其默认创建的文件没有可执行权限x位。
对应文件来说,umask的设置是在假定文件拥有八进制666的权限上进行的,文件的权限就是666减umask(umask的各个位数字也不能大于6,比如077就不符合条件)的掩码数值。如果得到的3位数字每一位都是偶数,那么这就是最终结果;如果有若干位的数字是奇数,那么这个奇数需要加1变成偶数,最后得到全是偶数的结果。
示例如下:
①假设umask值为022(所有位为偶数),那么文件的对应权限计算式为:666-022=644;
②假设umask值为045(其他用户组位为奇数),那么文件的对应权限计算式为:666-045+001=622;
2)目录默认权限计算(umask没有奇偶之分)
创建目录默认最大权限777(rwxrwxrwx),默认创建的目录属主是有x权限的,即允许用户进入。
对于目录来说,umask的设置是在假定文件拥有八进制777权限上进行的,目录八进制权限777减去umask的掩码数值,即为:777-022=755.
二、linux系统特殊权限位知识
1、suid
suid(setuid)位通过S字符标识,存在于基本权限的用户权限位的x权限对应的位置,如果用户权限位对应的x权限位上有x权限,则suid就用小写的s标识,suid的s对应的数字权限为4,完整权限八进制4000.
suid位也是通过chmod命令设置的,可用利用字符权限以及数字权限来实现:
#chmod u+s text.txt
#ls -l text.txt
-rwSr--r--. 1 root root 0 Feb 22 01:23 text.txt
2、sgid
sgid位同样是通过S字符来标识,但是,sgid位存在于基本权限的用户组权限位的x权限对应的位置,如果用户组权限位对应的x权限位上有x权限,则sgid就用小写的s标识,suid的s对应的数字权限为2,完整的权限用八进制数2000表示。
sgid位同样是通过chmod命令来设置的,也可以利用字符权限以及数字权限来实现:
#chmod g+s text.txt
#ls -l text.txt
-rwSr-Sr--. 1 root root 0 Feb 22 01:23 text.txt
3、sticky(粘滞位)知识简介
sticky(粘滞)位通过字符T标识,存在于基本权限的其他用户位对应的x权限上,如果其他用户位的x权限位上有x权限,则sticky(粘贴)位通过小写的t标识,对应的数字权限是1,对应的数字权限是1,完整的权限用八进制数1000表示,被设置了sticky(粘滞)位权限的文件会显示黑字绿底,最典型的带sticky(粘滞)位权限的目录就是/tmp。
三、深入理解
1、为什么会有suid位功能
在linux系统中,有时执行某个命令(例如普通用户使用passwd修改自身账号密码)时,需要对另一个文件(/etc/shadow)进行操作,而执行passwd修改的文件/etc/shadow又是普通用户没有权限进行操作的。例如,修改用户密码的命令passwd,该命令文件的所有者和用户组都是root,但是/etc/shadow文件的权限极低,不允许任何普通用户及属主用户访问,具体信息如下:#ls -l /etc/shadow
----------. 1 root root 911 Feb 27 00:48 /etc/shadow
suid到底有什么作用:简单地说,suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,拥有和root管理员一样的身份和权限。
2、suid核心知识小结
①suid功能是针对二进制命令或程序的,不能用在shell等类似脚本文件上。
②用户或属主对应的前三位权限的x位上,如果有s(S)就表示具备suid权限。
③suid的作用就是让普通用户可以在执行某个设置了suid位的命令或程序时,拥有和root管理员一样的身份和权限(默认)。
④二进制命令程序需要有可执行权限x配合才行。
⑤suid对应的身份和权限仅在程序命令执行过程中
⑥suid是一把双刃剑,是一个比较危险的功能,对系统安全有一定的威胁,企业里用户授权可用使用sudo等替代sgid功能。
⑦在进行安全优化时,系统中默认设置了suid权限的命令要取消掉。
三、sgid核心知识小结
1)与suid不同的是,sgid既可以针对文件,也可以针对目录设置;
2)sgid的权限是针对用户组权限位的。
对于文件来说,sgid的功能如下:
1)sgid仅对二进制命令及程序有效;
2)二进制命令或程序,也需要有可执行权限x配合;
3)执行命令的任意用户可以获得该命令程序执行期间所属组的身份和权限。
对于目录(继承目录所属的组)来说,sgid的功能如下:
1)linux里默认情况所有用户创建文件,默认用户和组都是自身;
2)sgid可以让用户在此目录下创建文件和目录具有和此目录相同的用户组设置。
补:
删除一个用户 出现500:#ls -l
drwxrwxrwt. 2 500 500 4096 Jan 4 06:30 pulse-vyeFCubEuO3m
增加一个用户:#useradd user -u 500




