linux命令 chattr超级权限控件

by admin on 2019年9月11日

linux chattr命令学习

lsattr和chattr命令

澳门威斯尼人平台登陆,linux命令:chattr
1.作用 修改ext2和ext3文件系统属性(attribute),使用权限超级用户。

在linux中lsattr与chattr命令相比chattr命令的作用很大,而lsattr命令就是简单的文件显示使用了,不过chattr命令不能保护/、/dev、/tmp、/var目录哦,大家要注意

概述

 

 

 

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

[root@localhost ~]# rpm -qf /usr/bin/chattr
e2fsprogs-1.41.12-18.el6.x86_64

linux系统下的档案会有很多attributes,这些attributes的使用对于保证系统的安全

1. lsattr命令

linux命令:chattr

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

chattr命令的作用很大,其中一些功能是由Linux内核版本来支持的,如果Linux内核版本低于2.2,那么许多功能不能实现。同样-D检查压缩文件中的错误的功能,需要2.5.19以上内核才能支持。另外,通过chattr命令修改属性能够提高系统的安全性,但是它并不适合所有的目录。chattr命令不能保护/、/dev、/tmp、/var目录。
lsattr比较简单,只是显示文件的属性。这两个命令是用来改变文件、目录属性的,和chmod,ls这些命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

有很大的帮助。运用好这些attributes有助于系统管理员有效的管理系统。

作用:

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

chattr命令的用法:chattr [ -RV ] [ -v version ] [ mode ] files…

解释
chattr命令的用法:chattr [ -RV ] [ -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处理能力(标识)的进程能够施加该选项。

 

显示文件属性

2.格式
chattr [-RV] [-+=AacDdijsSu] [-v version] 文件或目录

最关键的是在[mode]部分,[mode]部分是由+-=和[ASacDdIijsTtu]这些字符组合的,这部分是用来控制文件的
属性。

案例
1、用chattr命令防止系统中某个关键文件被修改
# chattr +i /etc/fstab
然后试一下rm mv rename等命令操作于该文件,都是得到Operation not
permitted 的结果
2、让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作
# chattr +a /data1/user_act.log
3、不能修改root密码
lsattr /etc/passwd /etc/shadow
chattr -i /etc/passwd
chattr -i /etc/shadow    再修改root的密码就可以
chattr +i /etc/passwd
chattr +i /etc/shadow

那档案到底有哪些属性呢?

语法:

3.主要参数
-R:递归处理所有的文件及子目录。
-V:详细显示修改内容,并打印输出。
-:失效属性。
+:激活属性。
= :指定属性。
A:Atime,告诉系统不要修改对这个文件的最后访问时间。
S:Sync,一旦应用程序对这个文件执行了写操作,使系统立刻把修改的结果写到磁盘。
a:Append
Only,系统只允许在这个文件之后追加数据,不允许任何进程覆盖或截断这个文件。如果目录具有这个属性,系统将只允许在这个目录下建立和修改文件,而不允许删除任何文件。
i:Immutable,系统不允许对这个文件进行任何的修改。如果目录具有这个属性,那么任何的进程只能修改目录之下的文件,不允许建立和删除文件。
D:检查压缩文件中的错误。
d:No dump,在进行文件系统备份时,dump程序将忽略这个文件。
C:Compress,系统以透明的方式压缩这个文件。从这个文件读取时,返回的是解压之后的数据;而向这个文件中写入数据时,数据首先被压缩之后才写入磁盘。
:Secure Delete,让系统在删除这个文件时,使用0填充文件所在的区域。
u:Undelete,当一个应用程序请求删除这个文件,系统会保留其数据块以便以后能够恢复删除这个文件。

  • :在原有参数设定基础上,追加参数。
  • :在原有参数设定基础上,移除参数
    = :更新为指定参数设定。
    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.

档案的属性有很多,如果你不是系统管理员的话,估计你也很难都记住。

lsattr [-adlRvV][files...]

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

各参数选项中常用到的是a和i。a选项强制只可添加不可删除,多用于日志系统的安全设定。而i是更为严格的安全设定,只有superuser
(root) 或具有CAP_LINUX_IMMUTABLE处理能力(标识)的进程能够施加该选项。

在chattr命令的man手册里面可以查到各个属性的详细含义,在需要时查一下就好。

参数

应用实例:

sh-# man chattr

  • -a
     显示所有文件和目录(包括隐藏文件)的属性。
  • -d
     只显示指定文件或目录(不包括目录下的文件或子目录)的属性。
  • -l  此参数目前没有任何作用。
  • -R
     递归处理,将指定目录下的所有文件及子目录一并处理。
  • -v  显示文件或目录版本。
  • -V  显示版本信息。

1、用chattr命令防止系统中某个关键文件被修改

 

 

 代码如下

有如此之多的文件属性,其中用的比较多的有两个:

2. chattr命令

复制代码

1.
i属性,一旦档案具有这个属性,那这个文件既不能被删除也不能被重命名,也不能

作用:

# chattr +i /etc/fstab

创建链接文件,而且也不能向该档案中写入数据;

改变文件或目录的属性

然后试一下rm mv rename等命令操作于该文件,都是得到Operation not
permitted 的结果

  1. a属性,一旦档案具有此属性,那么只能向该档案中append数据。

说明:

2、让某个文件只能往里面追加内容,不能删除,一些日志文件适用于这种操作

通常这两个属性都是用来保护系统中非常重要的档案。

与chmod命令相比,chmod只是改变文件的读写、执行权限,更底层的属性控制是由chattr来改变的。

 代码如下

 

语法:

复制代码

sh-# touch /attr_test.txt

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

# chattr +a /data1/user_act.log

sh-# chattr +i /attr_test.txt

**参数:**

3、查看文件属性

chattr: Operation not permitted while setting flags on /attr_test.txt

  • -R 递归地修改文件夹和子文件夹的属性。
  • -V chattr命令会输出带有版本信息的冗余信息。
  • -f 忽略大部分错误信息。

 代码如下

出现这个执行错误的原因在于chattr这个命令只有root才有权限去执行。

复制代码

可以通过id这个命令来确认当前用户是不是root用户。

  • -v 设置文件或目录的版本。

# lsattr /data1/user_act.log
—–a——- /data1/user_act.log

sh-# id

4、取消权限,修改文件

uid=123(my_name) gid=456(ooxx)

  • +
    :在原有参数设定基础上,追加参数。

  • :在原有参数设定基础上,移除参数。
  • = :更新为指定参数设定。
  • A :文件或目录的 atime (access time)不可被修改(modified),
    可以有效预防例如手提电脑磁盘I/O错误的发生。
  • S :硬盘I/O同步选项,功能类似sync。
  • a
    :即append,设定该参数后,只能向文件中添加数据,而不能删除,多用于服务器日志文件安全,只有root才能设定这个属性。
  • c
    :即compresse,设定文件是否经压缩后再存储,读取时需要经过自动解压操作。
  • d :即no dump,设定文件不能成为dump程序的备份目标。
  • 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处理能力(标识)的进程能够施加该选项。

复制代码

sh-# lsattr /var/log/messages

 

# chattr -i /etc/fstab

 

 

这样就可以继续修改/etc/fstab文件了。

由于本人的linux系统似乎有点问题,暂时无法在root用户下去进行更多的实验验证。

3. 示例

所以关于chattr的学习就暂时性的到此为止。

例:1 使用‘i’属性使文件不可更改

  1. [root@linuxtechi ~]# chattr +i dummy_data
  2. [root@linuxtechi ~]# lsattr dummy_data
  3. ----i----------- dummy_data

现在试着删除或者修改文件

  1. [root@linuxtechi ~]# rm -f dummy_data
  2. rm: cannot remove 'dummy_data': Operation not permitted
  3. [root@linuxtechi ~]# echo "test" >> dummy_data
  4. -bash: dummy_data: Permission denied

chattr命令学习
linux系统下的档案会有很多attributes,这些attributes的使用对于保证系统的安全
有很大的帮助。运用好这些attributes有助于系…

例:2 移除不可更改属性

  1. [root@linuxtechi ~]# chattr -i dummy_data
  2. [root@linuxtechi ~]# lsattr dummy_data
  3. ---------------- dummy_data

例:3 在文件中只允许追加操作

  1. [root@linuxtechi ~]# chattr +a dummy_data
  2. [root@linuxtechi ~]# lsattr dummy_data
  3. -----a---------- dummy_data

现在试着把fstab文件的内容追加到dummy_data文件

  1. [root@linuxtechi ~]# cat /etc/fstab >> dummy_data
  2. [root@linuxtechi ~]#

例 :4 使用 -R 选项和 ‘+i’ 属性使文件夹和它的子文件夹成为安全目录

让我们来新建一个sysadmin文件夹和它的子文件夹

  1. [root@linuxtechi ~]# mkdir sysadmin
  2. [root@linuxtechi ~]# mkdir sysadmin/admim_{1,2,3,4,5}
  3. [root@linuxtechi ~]# ls -l sysadmin/
  4. total 0
  5. drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_1
  6. drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_2
  7. drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_3
  8. drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_4
  9. drwxr-xr-x. 2 root root 6 Apr 19 09:50 admim_5

在sysadmin文件夹递归设置不可更改属性

  1. [root@linuxtechi ~]# chattr -R +i sysadmin
  2. [root@linuxtechi ~]# lsattr -R sysadmin/
  3. ----i----------- sysadmin/admim_1
  4. sysadmin/admim_1:
  5. ----i----------- sysadmin/admim_2
  6. sysadmin/admim_2:
  7. ----i----------- sysadmin/admim_3
  8. sysadmin/admim_3:
  9. ----i----------- sysadmin/admim_4
  10. sysadmin/admim_4:
  11. ----i----------- sysadmin/admim_5
  12. sysadmin/admim_5:
  13. [root@linuxtechi ~]#

现在试着用rm命令删除文件夹

  1. [root@linuxtechi ~]# rm -rf sysadmin
  2. rm: cannot remove ‘sysadmin/admim_1’: Permission denied
  3. rm: cannot remove ‘sysadmin/admim_2’: Permission denied
  4. rm: cannot remove ‘sysadmin/admim_3’: Permission denied
  5. rm: cannot remove ‘sysadmin/admim_4’: Permission denied
  6. rm: cannot remove ‘sysadmin/admim_5’: Permission denied
  7. [root@linuxtechi ~]#

使用以下命令递归取消属性

  1. [root@linuxtechi ~]# chattr -R -i sysadmin

 

发表评论

电子邮件地址不会被公开。 必填项已用*标注

网站地图xml地图