在服务器的系统里有很多关键的文件是不允许修改,以防止其他用户或者***者修改关键的文件,但是在实际生产环境中往往很多管理人员都没有注意这一点,这导致系统文件有会被改的可能性,如此就需要我们平时的对关键的文件加锁管理了,在系统中要加锁的关键文件,当然还有重要的不能被修改的文件也要加锁

[root@test test]# chattr +i /etc/passwd#用户关键信息文件
[root@test test]# chattr +i /etc/shadow#用户影子文件,存放用户的密文密码
[root@test test]# chattr +i /etc/gshadow#组影子文件
[root@test test]# chattr +i /etc/group#组文件
[root@test test]# chattr +i /etc/services#系统默认端口文件

加锁后连root用户都是无法对文件删除和修改的,其中chattr的使用参数和模式如下:

  这项指令可改变存放在ext2文件系统上的文件或目录属性,这些属性共有以下8种模式:
  a:让文件或目录仅供附加用途。 
 b:不更新文件或目录的最后存取时间。 
 c:将文件或目录压缩后存放。 
 d:将文件或目录排除在倾倒操作之外。 
 i:不得任意更动文件或目录。 
 s:保密性删除文件或目录。 
 S:即时更新文件或目录。 
 u:预防以外删除。
 参数:
 -R  递归处理,将指定目录下的所有文件及子目录一并处理。 
 -v<版本编号>  设置文件或目录版本。 
 -V  显示指令执行过程。 
 +<属性>  开启文件或目录的该项属性。 
 -<属性>  关闭文件或目录的该项属性。 
 =<属性>  指定文件或目录的该项属性。

但是如果有时要添加新用户的时候怎么办,或者有些明明有权限的文件不能被修改是为什么

[root@test test]# useradd test1
useradd:无法打开密码文件

我们可以看下用lsattr看下/etc/passwd文件的隐藏属性,像这样的都是被加锁过的文件

[root@test test]# lsattr /etc/passwd
----i-------- /etc/passwd

具体llattr的使用参数:

  -a  显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。 
  -d  显示,目录名称,而非其内容。 
  -l  此参数目前没有任何作用。 
  -R  递归处理,将指定目录下的所有文件及子目录一并处理。 
  -v  显示文件或目录版本。 
  -V  显示版本信息。

所以如果是需要修改那个文件就需要修改文件的隐藏属性就可以

[root@test test]# chattr -i /etc/passwd