我们通过chattr来锁定一个文件为不可修改或不可删除时,要用到chattr的+i数;这在ext2和ext3文件系统是有效的,但在reiserfs文件系统是没有任何效果的;
8种模式:
a:让文件或目录仅供附加用途。
b:不更新文件或目录的最后存取时间。
c:将文件或目录压缩后存放。
d:将文件或目录排除在倾倒操作之外。
i:不得任意更动文件或目录。
s:保密性删除文件或目录。
S:即时更新文件或目录。
u:预防以外删除。
语法:
chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]
参数:
-R 递归处理,将指定目录下的所有文件及子目录一并处理。
-v<版本编号> 设置文件或目录版本。
-V 显示指令执行过程。
+<属性> 开启文件或目录的该项属性。
-<属性> 关闭文件或目录的该项属性。
=<属性> 指定文件或目录的该项属性。
命令示例:
[root@w zdw]# chattr +a test.sh [root@w zdw]# rm -f test.sh rm: cannot remove `test.sh': Operation not permitted [root@w zdw]# echo 11 >>test.sh [root@w zdw]# echo 11 >>test.sh [root@w zdw]# echo 11 >test.sh -bash: test.sh: Operation not permitted [root@w zdw]# lsattr test.sh -----a-------e- test.sh
锁定关键的系统文件可以增加系统的安全性,使用chattr命令来锁定,下面是几个需要锁定的文件:
chattr +i /etc/passwd 用户文件
chattr +i /etc/shadow 用户密码文件
chattr +i /etc/group 用户组文件
chattr +i /etc/gshadow 主密码文件
chattr +i /etc/inittab 开机启动的重要文件
示例:
加锁:
[root@localhost ~]# chattr +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab [root@localhost ~]# rm -f /etc/passwd rm: cannot remove '/etc/passwd': Operation not permitted [root@localhost ~]# useradd test1 useradd: cannot open /etc/passwd
解锁:
[root@localhost ~]# chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab
注:非法用法也可以使用chattr -i来解锁。我们可以把chattr换成别的名称,这样就找不到了。如下
修改chattr名称:
[root@localhost ~]# which chattr 找到chattr在哪 /usr/bin/chattr [root@localhost ~]# mv /usr/bin/chattr /usr/bin/zdw 把chattr换成zdw [root@localhost ~]# chattr -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab -bash: /usr/bin/chattr: 2‰é£a–– 用chattr解锁不成功 [root@localhost ~]# zdw -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab [root@localhost ~]# useradd test1 用zdw解锁成功,添加新用户成功 [root@localhost ~]#
查看是否加锁:
[root@localhost ~]# zdw +i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab [root@localhost ~]# lsattr /etc/passwd 查看是否加锁用lsattr命令 ----i----------- /etc/passwd 如果有i就说明加锁了 [root@localhost ~]# zdw -i /etc/passwd /etc/shadow /etc/group /etc/gshadow /etc/inittab [root@localhost ~]# lsattr /etc/passwd ---------------- /etc/passwd 没有i就说明没有加锁