Linux怎么设置只读文件系统_Linux chattr设置文件不可修改【技巧】

大杰姑娘_7000

大杰姑娘_7000

2026-03-31

534人浏览

原创

使用chattr命令可为linux文件或目录设置不可变(i)或仅追加(a)属性:i属性使文件完全只读,root也无法修改、删除或重命名;a属性允许追加但禁止覆盖或截断;支持递归应用及组合使用以实现分层防护。

linux怎么设置只读文件系统_linux chattr设置文件不可修改【技巧】

如果您希望在Linux中让某个文件或目录变为只读状态,即使root用户也无法修改、删除或重命名,需使用chattr命令设置不可变属性。以下是实现此目标的具体方法:

一、设置文件为不可修改(i属性)

通过添加属性,可使文件进入完全只读锁定状态:任何用户(包括root)均无法写入、截断、删除、重命名或创建硬链接/软链接指向该文件。该属性生效后,常规权限(如chmod 444)将不再起作用。

1、以root身份执行命令,为指定文件添加i属性:
$ sudo chattr +i /path/to/file

2、验证属性是否已成功设置:
$ lsattr /path/to/file

3、尝试向该文件写入内容,系统将返回错误:
$ echo "test" > /path/to/file
-bash: /path/to/file: Permission denied

4、若需恢复可修改状态,必须先移除i属性:
$ sudo chattr -i /path/to/file

二、设置文件仅允许追加(a属性)

对于日志类文件,常需保证其内容不可被覆盖或清空,但允许持续追加新条目。此时应使用属性,它限制文件只能以追加方式写入,禁止截断、覆盖及删除操作,且仅root可设置该属性。

1、为日志文件启用a属性:
$ sudo chattr +a /var/log/myapp.log

2、确认属性已应用:
$ lsattr /var/log/myapp.log

3、测试追加操作(应成功):
$ echo "$(date): Event occurred" >> /var/log/myapp.log

4、测试覆盖操作(应失败):
$ echo "reset" > /var/log/myapp.log
-bash: /var/log/myapp.log: Permission denied

三、递归锁定整个目录及其内容

当需保护整个配置目录(如/etc/ssl/private)免受任何结构性变更时,可结合-R选项递归应用i属性。该操作将使目录本身不可重命名或删除,同时其下所有现有文件和子目录均获得i属性,无法被修改或移除。

1、对目标目录递归设置不可变属性:
$ sudo chattr -R +i /etc/ssl/private

2、检查目录顶层属性:
$ lsattr /etc/ssl/private

3、检查其下任意文件属性(例如私钥):
$ lsattr /etc/ssl/private/server.key

4、尝试在该目录中新建文件:
$ touch /etc/ssl/private/test.txt
touch: cannot touch '/etc/ssl/private/test.txt': Permission denied

四、组合使用a与i属性实现分层防护

某些场景下需对目录结构施加差异化控制:例如允许在日志目录中创建新日志文件,但禁止修改已有日志内容。此时可对目录本身设a属性(允许新建文件),对其内已有日志文件单独设i属性(禁止修改)。

1、为日志目录设置a属性(允许新增文件):
$ sudo chattr +a /var/log/applogs

2、为已存在的日志文件逐个添加i属性:
$ sudo chattr +i /var/log/applogs/access.log
$ sudo chattr +i /var/log/applogs/error.log

3、验证目录属性:
$ lsattr /var/log/applogs

4、验证单个日志文件属性:
$ lsattr /var/log/applogs/access.log

五、临时解除锁定并恢复操作权限

当需要对已锁定的文件进行必要维护(如更新证书、轮转日志)时,必须显式移除对应属性。注意:移除i属性前,务必确认操作意图明确且具备充分审计依据;移除a属性后,文件将恢复完整写入能力,可能被意外覆盖。

1、移除单个文件的i属性:
$ sudo chattr -i /etc/hosts

2、移除目录下全部文件的a属性(不递归):
$ sudo chattr -a /var/log/applogs/*.log

3、递归移除整个目录树的i属性:
$ sudo chattr -R -i /etc/secure_config

4、操作完成后,建议立即重新应用所需属性以维持防护状态。

PHP速学视频免费教程(入门到精通)
PHP速学视频免费教程(入门到精通)

PHP怎么学习?PHP怎么入门?PHP在哪学?PHP怎么学才快?不用担心,这里为大家提供了PHP速学教程(入门到精通),有需要的小伙伴保存下载就能学习啦!

下载

相关标签:

本站声明:本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn

相关专题

更多
scripterror怎么解决
scripterror怎么解决

scripterror的解决办法有检查语法、文件路径、检查网络连接、浏览器兼容性、使用try-catch语句、使用开发者工具进行调试、更新浏览器和JavaScript库或寻求专业帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.18

949

5

500error怎么解决
500error怎么解决

500error的解决办法有检查服务器日志、检查代码、检查服务器配置、更新软件版本、重新启动服务、调试代码和寻求帮助等。本专题为大家提供相关的文章、下载、课程内容,供大家免费下载体验。

2023.10.25

2660

5

SSL检测工具介绍
SSL检测工具介绍

SSL检测工具有SSL Labs、SSL Check、SSL Server Test、SSLMate、SSL/TLS Analyzer等。详细介绍:1、SSL Labs是一个由Qualys提供的在线SSL检测工具,可以评估服务器证书的部署情况、加密套件、协议支持等方面的安全性,它提供了一个详细的报告,包括证书的颁发者、有效期、安全性配置等;2、SSL Check等等。

2023.10.20

730

3

磁盘配额是什么
磁盘配额是什么

磁盘配额是计算机中指定磁盘的储存限制,就是管理员可以为用户所能使用的磁盘空间进行配额限制,每一用户只能使用最大配额范围内的磁盘空间。php中文网为大家提供各种磁盘配额相关的内容,教程,供大家免费下载安装。

2023.06.21

3890

4

如何安装LINUX
如何安装LINUX

本站专题提供如何安装LINUX的相关教程文章,还有相关的下载、课程,大家可以免费体验。

2023.06.29

3353

10

linux find
linux find

find是linux命令,它将档案系统内符合 expression 的档案列出来。可以指要档案的名称、类别、时间、大小、权限等不同资讯的组合,只有完全相符的才会被列出来。find根据下列规则判断 path 和 expression,在命令列上第一个 - ( ) , ! 之前的部分为 path,之后的是 expression。还有指DOS 命令 find,Excel 函数 find等。本站专题提供linux find相关教程文章,还有相关

2023.06.30

2493

5

linux修改文件名
linux修改文件名

本专题为大家提供linux修改文件名相关的文章,这些文章可以帮助用户快速轻松地完成文件名的修改工作,大家可以免费体验。

2023.07.05

6010

7

linux系统安装教程
linux系统安装教程

linux系统是一种可以免费使用,自由传播,多用户、多任务、多线程、多CPU的操作系统。本专题提供linux系统安装教程相关的文章,大家可以免费体验。

2023.07.06

5642

7

linux查看文件夹大小
linux查看文件夹大小

Linux是一种自由和开放源码的类Unix操作系统,存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。linux怎么查看文件夹大小呢?php中文网给大家带来了相关的教程以及文章,欢迎大家前来学习阅读。

2023.07.20

3313

8

热门下载

更多
网站特效
/
网站源码
/
网站素材
/
前端模板

精品课程

更多
热门推荐
/
最新课程
phpStudy极速入门视频教程
phpStudy极速入门视频教程

共6课时 | 54.6万人学习

独孤九贱(4)_PHP视频教程
独孤九贱(4)_PHP视频教程

共89课时 | 133.4万人学习