一、umask命令:
umask是chmod相关的东西,代表权限掩码,总共4位,以反掩码的形式表示,文件的原始权限是666,目录的原始权限是777,将相应的原始权限和umask值进行与运算,得出的结果就是默认新建的文件或目录的权限。具体如下:
可以查看出来四位数字,分别是“0022”,依次表示的是特殊权限、属主权限、属组权限以及其他人的权限,如上面查询出来的0022,那么现在新建一个文件,该文件的默认权限就是644,若新建一个目录,那么该目录的默认权限就是755,如下:
修改umask权限数字:
umask命令只能临时修改umask值,系统重启之后umask将还原成默认值。如果要永久修改umask值,需要修改/etc/profile文件或是修改/etc/bashrc文件,例如要将默认umask值设置为027,那么可以在文件中增加一行“umask 027”,并且使用source /etc/profile,使更改生效。
/etc/profile和/etc/bashrc都可以用于设置用户登录系统时自动执行某些操作,他们的区别是/etc/profile只在用户第一次登录时被执行,而/etc/bashrc则在用户每次登录加载Bash Shell时都会被执行。
因而,如果是修改/etc/profile文件,将只对新创建的用户生效;而如果是修改/etc/bashrc文件,则对所有用户都生效。
针对对某个特定用户,以上两种配置文件,.bashrc文件中的配置优先级更高。
二、chattr及lsattr命令
有时候我们会遇到这种情况,就是root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了。通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性。
这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制(也就是特殊权限)是由chattr来改变的。
1、chattr命令用法:
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。
注:xfs文件系统仅支持AadiS参数。
2、lsattr命令语法:
用法示例:
1、用chattr命令防止系统中某个关键文件被修改:
然后用mv /etc/resolv.conf等命令操作于该文件,都是得到Operation not permitted 的结果。vim编辑该文件时会提示W10: Warning: Changing a readonly file错误。要想修改此文件就要把i属性去掉: chattr -i /etc/resolv.conf
三、 SUID、SGID及SBIT的作用
1、SUID的作用
其实SUID和SGID的作用跟sudo是相似的。当用户A想执行一个原本属于用户B的可执行文件时,若B的文件设置了suid位,则A在执行时是以用户 B的身份来执行。
SUID是Set UID的简称,翻译过来是设置用户ID,它会出现在文件拥有者权限的执行位上,具有这种权限的文件会在其执行时,使调用者暂时获得该文件拥有者的权限。例如,使用如下命令:
可以看到,在文件拥有者的执行位上出现为s而不是x,所以说passwd这个程序是具有SUID权限的。我们在修改用户密码的时候,用的就是passwd这个命令,这是系统默认给了passwd这个命令的SUID权限,因为总不能说用户改自己的密码还需要提权吧?
我们都知道密码是保存在/etc/shadow中的,但是这个文件,只有root可以写入,那么我们普通用户是怎么将新密码写入的呢?这就和SUID有关了,当我们使用passwd命令时,就获得了passwd的所有者也就是root的权限,进而可以对shadow文件进行写入操作。
下图可以生动的表示SUID的作用:
2、SGID的作用
SGID即Set GID的缩写,它出现在文件所属组权限的执行位上面,它对普通二进制文件和目录都有效。当它作用于普通文件时,和SUID类似,在执行该文件时,用户将获得该文件所属组的权限。当SGID作用于目录时,意义就非常重大了。当用户对某一目录有写和执行权限时,该用户就可以在该目录下建立文件,如果该目录有SGID的特殊权限,则该用户在这个目录下建立的文件都是属于这个目录所属的组。
3、SBIT
SBIT即Sticky Bit,它出现在其他用户权限的执行位上,它只能在一个目录上设置。当某一个目录拥有SBIT权限时,则任何一个能够在这个目录下建立文件的用户,该用户在这个目录下所建立的文件,只有该用户自己和root可以删除,其他用户均不可以。/tmp就是很好的例子,例如:
这就是SBIT的作用。
修改SUID、SGID及SBIT有两种方法,都是使用chmod这个命令,chmod既可以修改普通权限,也可以修改这三个特殊权限,
如,想要给/tmp目录一个sbit的权限,那么执行以下两种命令其中之一即可:
注:u=用户;g=组;o=其他人,一般推荐使用权限数字方法修改权限,方便些!!!
使用举例: