chattr和lsattr

有时候你发现用root权限都不能修改某个文件,大部分原因是曾经用chattr命令锁定该文件了。chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,不过现在生产绝大部分跑的linux系统都是2.6以上内核了。通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。lsattr命令是显示chattr命令设置的文件属性。

这两个命令是用来查看和改变文件、目录属性的,与chmod这个命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

chattr命令的用法:chattr [ -RVf ] [ -v version ] [ mode ] files…
最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,这部分是用来控制文件的
属性。

+ :在原有参数设定基础上,追加参数。
- :在原有参数设定基础上,移除参数。
= :更新为指定参数设定。
A:文件或目录的 atime (access time)不可被修改(modified), 可以有效预防例如手提电脑磁盘I/O错误的发生。
S:硬盘I/O同步选项,功能类似sync。
a:即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
c:即compresse,设定文件是否经压缩后再存储。读取时需要经过自动解压操作。
d:即no dump,设定文件不能成为dump程序的备份目标。
i:设定文件不能被删除、改名、设定链接关系,同时不能写入或新增内容。i参数对于文件 系统的安全设置有很大帮助。
j:即journal,设定此参数使得当通过mount参数:data=ordered 或者 data=writeback 挂 载的文件系统,文件在写入时会先被记录(在journal中)。如果filesystem被设定参数为 data=journal,则该参数自动失效。
s:保密性地删除文件或目录,即硬盘空间被全部收回。
u:与s相反,当设定为u时,数据内容其实还存在磁盘中,可以用于undeletion。
各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser (root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。

应用举例:

1、用chattr命令防止系统中某个关键文件被修改:
# chattr +i /etc/resolv.conf

然后用mv /etc/resolv.conf等命令操作于该文件,都是得到Operation not permitted 的结果。vim编辑该文件时会提示W10: Warning: Changing a readonly file错误。要想修改此文件就要把i属性去掉: chattr -i /etc/resolv.conf

# lsattr /etc/resolv.conf
会显示如下属性
----i-------- /etc/resolv.conf

2、让某个文件只能往里面追加数据,但不能删除,适用于各种日志文件:
# chattr +a /var/log/messages

 

扩展说明:

lsattr

  语法: #lsattr [-aR]

  参数说明:

-a :将隐藏文件的属性也列出来;

-R :连同子目录的数据也一并列出来!

 

 

范例:

# chattr +i .bash_logout     ——>添加一个隐藏的i属性,后面再细讲

#lsattr -a             ——>将当前目录的文件或目录下的文件所有属性(包括隐藏属性)列出 

-------------- ./.

-------------- ./..

---i---------- ./.bash_logout

-------------- ./.bash_profile

-------------- ./.bashrc

 

chattr

  语法:#chattr [+-=][ASacdistu] [档案或目录名称]

  参数说明:

+-= :分别为 [+ 增加] [- 减少] [= 设定] 属性的意思

A  :当设定了 A 这个属性时,这个档案(或目录)的存取时间

atime (access) 将不可被修改, 可避免例如手提式计算机容易有磁盘 I/O 错误的情况发生!

S  :这个功能有点类似 sync 的功能!就是会将数据同步写入磁盘当中!可以有效的避免数据流失!

a  :当设定 a 之后,这个档案将只能增加数据,而不能删除,只有 root 才能设定这个属性。 

c  :这个属性设定之后,将会自动的将此档案『压缩』,在读取的时候将会自动解压缩出来,但是在储存的时候,将会先进行压缩之后再储存(看来对于大档案似乎蛮有用的!)

d  :当 dump (备份)程序被执行的时候,设定 d 属性将可使该档案(或目录)具有 dump 功效!

i  :这个 i 可就很厉害了!他可以让一个档案『不能被删除、改名、设定连结也无法写入或新增数据!对于系统安全性有相当大的帮助!

j  :当使用 ext3 这个档案系统格式时,设定 j 属性将会使档案在写入时先记录在 journal 中! 但是当 filesystem 设定参数为 data=journalled 时,由于已经设定了日志了,所以这个属性无效!

s  :当档案设定了 s 参数时,他将会被完全的移除出这个硬盘空间。

u  :与 s 相反的,当使用 u 来设定档案时,则数据内容其实还存在磁盘中,可以使用来 undeletion.

 

范例:

#chattr +i  /etc/shadow     ——>添加i隐藏属性后,就无法更动这个文件了

#chattr -i  /etc/shadow     ——>解除"i"这个隐藏属性

#chattr +i /etc/passwd  /etc/shadow  /etc/group  /etc/gshadow

 

#chattr +a#只能写文件不能删除文件,不能覆盖文件

#chattr -a

[root@localhost oldboy]# ll test.sh

-rw-r--r-- 1 root root 0 Jul 13 09:35 test.sh

[root@localhost oldboy]# chattr +a test.sh

[root@localhost oldboy]# rm -rf test.sh

rm: cannot remove `test.sh': Operation not permitted

[root@localhost oldboy]# echo "111" >> test.sh

[root@localhost oldboy]# cat test.sh

111

[root@localhost oldboy]# echo "111" > test.sh

-bash: test.sh: Operation not permitted

[root@localhost oldboy]# lsattr test.sh

-----a-------e- test.sh

 

Linux系统优化:

#chattr +i  /etc/passwd     /etc/shadow/    /etc/group     /etc/gshadow   /etc/inittab

#mv chattr oldboy

 

 

  补充说明:

  本命令是重要的,尤其是在系统的安全性上面。由于这些属性是隐藏的性质,所以需要以 lsattr才能看到该属性。其中,最为重要的是属 +i 这个属性了,因为他可以让一个档案无法被更动,对于需要强烈的系统安全的人来说,真是相当的重要的!里头还有相当多的属性是需要 root 才能设定的!此外,如果是 log file 这种的登录档,就更需要 +a 这个可以增加,但不会被杀掉的参数了

 

 

 

chattr可以防止关键文件被修改

  在linux下,有些配置文件是不允许任何人包括root修改的,为了防止被误删除或修改,

可以设定该文件的"不可修改位(immutable)"。

  例如:

chattr +i /etc/fstab

  如果需要修改文件则:

chattr -i /etc/fstab

  以后再修改文件。

 

 

对系统安全非常重要的一个命令 chattr

 

chattr 用于设置文件属性     lsattr 用于查看文件属性

 

1.作用

 

修改ext2和ext3文件系统属性(attribute),使用权限超级用户。

 

2.格式

 

chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录

 

3.主要参数

 

R:递归处理所有的文件及子目录。

 

V:详细显示修改内容,并打印输出。

 

-:失效属性。

 

+:激活属性。

 

= :指定属性。

 

A:Atime,告诉系统不要修改对这个文件的最后访问时间。

 

S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。

 

a:Append Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。

 

i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。

 

D:检查压缩文件中的错误。

 

d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。

 

C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。

 

s:Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。

 

u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。

 

4.说明

 

chattr 命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

 

 

 

 

Linux命令:lsattr

功能说明:显示文件属性。  语  法:lsattr [-adlRvV][文件或目录...]  补充说明:用chattr执行改变文件或目录的属性,可执行lsattr指令查询其属性。 参  数: -a  显示所有文件和目录,包括以"."为名称开头字符的额外内建,现行目录"."与上层目录".."。  -d  显示,目录名称,而非其内容。  -l  此参数目前没有任何作用。  -R  递归处理,将指定目录下的所有文件及子目录一并处理。  -v  显示文件或目录版本。  -V  显示版本信息。

 

指令名称:chattr(change attribute)

 

功能介绍:修改ext2和ext3文件系统属性(attribute),chattr 命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。

 

功能说明:改变文件属性。

语  法:chattr [-RV][-v<版本编号>][+/-/=<属性>][文件或目录...]  

  补充说明:这项指令可改变存放在ext2文件系统上的文件或目录属性,

 这些属性共有以下8种模式:  

a:让文件或目录仅供附加用途。  

b:不更新文件或目录的最后存取时间。  

c:将文件或目录压缩后存放。  

d:将文件或目录排除在倾倒操作之外。  

i:不得任意更动文件或目录。  

s:保密性删除文件或目录。  

S:即时更新文件或目录。  

u:预防以外删除。

参  数:  

-R 递归处理,将指定目录下的所有文件及子目录一并处理。  

-v<版本编号> 设置文件或目录版本。  

-V 显示指令执行过程。  

+<属性> 开启文件或目录的该项属性。  

-<属性> 关闭文件或目录的该项属性。  

=<属性> 指定文件或目录的该项属性。

 

提  示:

如果Linux内核版本低于2.2,那么有些功能不能实现。同样-D检查压缩文件中的错误 的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能 保护/、/dev、/tmp、/var目录

 

使用实例:

在为校园搭建Samba,访问出现teachers及students目录 。教师用户对teachers目录有读写权限.学生用户对students目录有读写权限.为了方便管理  需要提示每位教师或学生登陆时,建立以自己为名的目录,这样管理更方便.用readme.txt来实现.这时就需要对readme.txt来设置相应属性,以免被删除.

#chattr +i readme.txt 


分割线
感谢打赏
江西数库信息技术有限公司
YWSOS.COM 平台代运维解决方案
 评论
 发表评论
姓   名:

Powered by AKCMS