Linux 的 chattr 命令详解

发布于 2019-06-01

Linux 的 chattr 命令详解

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

wordpress 中 .user.ini 权限问题

安装完WordPress后,在赋权限或者删除的时候可能会收到下面的提示。

[root@localhost default]# sudo chmod -R 755 /www/wwwroot/
chmod: changing permissions of '/www/wwwroot/wordpress/.user.ini': Operation not permitted

此时需要使用chattr命令来解锁。

[root@localhost default]# sudo chattr -i /home/wwwroot/default/.user.ini 

解锁后即可正常运行。

chattr与lsattr命令详解

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

chattr语法:

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

chattr参数说明:

+:在原有参数设定基础上,追加参数。
-:在原有参数设定基础上,移除参数。
=:更新为指定参数设定。
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处理能力(标识)的进程能够施加该选项。

lsattr命令

lsattr命令是显示chattr命令设置的文件属性。

应用举例

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
喜欢 1
奋楫笃行,臻于至善!

相关文章

Linux 进程管理工具 supervisor 的安装及使用教程

Supervisor 是用 Python 实现的一个进程管理工具,可以很方便用来管理进程,包括启动、关闭及重启等操作,经常被用来监听 web 服务,一旦服务挂掉,可以让服务自动重启。Superviso...
阅读全文

通过脚本命令实现数据库定时自动备份

备份网站数据有很多种方法,今天为大家分享一下最常用的脚本备份命令。 编写脚本backup.sh #!/bin/bash tool=/usr/bin/mysqldump dd=`date +%Y%m%d...
阅读全文

Linux 自定义登录提示信息

想不想你的Linux登录界面个性一些?可以通过修改/etc/motd文件或/etc/issue文件的方式实现。/etc/issue文件的使用方法与/etc/motd文件相差不大,它们主要区别在于:当一...
阅读全文

Linux 查看端口占用情况

我们在使用一个新的端口时,有时候会发现它已经已经被其他进程占用了,在linux中如何查询端口被占用的情况呢,可以使用 lsof 和 netstat 命令。 1、lsof -i:端口号 用于查看某一端口...
阅读全文

在 Ubuntu / Debian 中用 UFW 配置防火墙

之前整理过一篇在 CenterOS 下如何开启防火墙与开放端口的文章,除了 CenterOS ,Ubuntu 也是我们经常使用的 Linux 操作系统,那么在 Ubuntu下该如何开启防火墙与开放端口...
阅读全文

Linux vi/vim 常用命令

之前发表过一篇Linux vi/vim 命令大全的文章,但由于里面的命令很多,没法一一记忆下来,本文收集了一些常用但经常忘记的命令,方便使用时查询。 Vim快速移动光标至行首和行尾 1、快速移动光...
阅读全文

发表回复

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