服务器之家:专注于服务器技术及软件下载分享
分类导航

Linux|Centos|Ubuntu|系统进程|

服务器之家 - 服务器系统 - Linux - 在Linux下创建写保护的文件的教程

在Linux下创建写保护的文件的教程

2019-10-09 16:55开源中文社区 Linux

这篇文章主要介绍了在Linux下创建写保护的文件的教程,是创建出的文件不可被变更,标志位不被取消时root权限下同样无法修改~需要的朋友可以参考下

假如你想对Linux中的一些重要文件做写保护,这样它们就不能被删除或者被篡改成之前的版本或者其他东西,或者在其他情况下,你可能想避免某些配置文件被软件自动修改。使用chown和chmod命令修改文件的归属关系或者权限位是处理这种情况的一个解决方法,但这并不完美,因为这样无法避免有root权限的操作。这时chattr就派上用场了。

chattr是一个可以设置或取消文件的标志位的Linux命令,它和标准的文件权限(读、写、执行)是分离的。与此相关的另一个命令是lsattr,它可以显示文件的哪些标志位被设置上了。最初只有EXT文件系统(EXT2/3/4)支持chattr和lsattr所管理的标志位,但现在很多其他的原生的Linux文件系统都支持了,比如XFS、Btrfs、ReiserFS等等。
在这个教程中,我会示范如果使用chattr来让Linux中的文件不可变更。

chattr和lsattr命令是e2fsprogs包的一部分,它在所有现代Linux发行版都预装了。

下面是chattr的基本语法。

  •     $ chattr [-RVf] [操作符][标志位] 文件...

其中操作符可以是“+”(把选定的标志位添加到标志位列表)、“-”(从标志位列表中移除选定的标志位)、或者“=”(强制使用选定的标志位)。

下面是一些可用的标志位。

  •     a: 只能以追加模式打开。
        A: 不能更新atime(文件访问时间)。
        c: 当被写入磁盘时被自动压缩。
        C: 关掉“写时复制”。
        i: 不可变更。
        s: 通过自动归零来安全删除。(LCTT 译注:一般情况文件被删后内容不会被修改,改标志位会使得文件被删后原有内容被“0”取代)

“不可变更”标志位

为了让一个文件不可变更,你需要按照如下方法为这个文件添加“不可变更”标志位。例如,对/etc/passwd文件做写保护:

   

复制代码

代码如下:

$ sudo chattr +i /etc/passwd

 

注意设置或取消一个文件的“不可变更”标志位是需要root用户权限的。现在检查该文件“不可变更”标志位是否被添加上了。

   

复制代码

代码如下:

$ lsattr /etc/passwd

 

一旦文件被设置为不可变更,任何用户都将无法修改该文件。即使是root用户也不可以修改、删除、覆盖、移动或者重命名这个文件。如果你想再次修改这个文件,需要先把“不可变更”标志位取消了。

用如下命令取消“不可变更”标志位:

   

复制代码

代码如下:

$ sudo chattr -i /etc/passwd

    

 

在Linux下创建写保护的文件的教程   

如果你想让一个目录(比如/etc)连同它下边的所有内容不可变更,使用“-R”选项:

   

复制代码

代码如下:

$ sudo chattr -R +i /etc

 

“只可追加”标志位

另一个有用的的标志位是“只可追加”,它只允许文件内容被追加的方式修改。你不能覆盖或者删除一个设置了“只可追加”标志位的文件。这个标志位在你想避免日志文件被意外清理掉的情况很有用。

和“不可变更”标志位类似,你可以使用如下命令让文件变成“只可追加”模式:

   

复制代码

代码如下:

$ sudo chattr +a /var/log/syslog

 

注意当你复制一个“不可变更”或者“只可追加”的文件到其他地方后,新文件不会保留这些标志位!
结论

在这个教程中,我展示了如何使用chattr和lsattr命令来管理额外的文件标志位,来避免文件被篡改(意外或者其他情况)的方法。注意你不能将chattr作为一个安全措施,因为“不可变更”标志位可以很容易被取消掉。解决这个问题的一个可能的方式是限制chattr命令自身的可用性,或者去掉CAPLINUXIMMUTABLE内核权能标志。关于chattr以及可用的标志位的更多细节,请参考它的man手册。

延伸 · 阅读

精彩推荐
  • LinuxLinux 统计代码行数的代码

    Linux 统计代码行数的代码

    这篇文章主要介绍了Linux 统计代码行数的代码,需要的朋友可以参考下...

    Linux之家3882019-06-12
  • Linux修改Linux终端界面分辨率的方法

    修改Linux终端界面分辨率的方法

    这篇文章主要介绍了修改Linux终端界面分辨率的方法,虽然一片黑的界面没有任何观赏性...但分辨率适配屏幕以后起码可以看起来舒服些....需要的朋友可以参...

    大步's Blog5132019-09-09
  • Linux详解Linux系统中的root权限控制

    详解Linux系统中的root权限控制

    这篇文章主要介绍了Linux系统中的root权限控制,是Linux入门学习中的重要知识,需要的朋友可以参考下 ...

    大步's Blog3592019-09-11
  • Linux使用Git管理二进制大对象的方法

    使用Git管理二进制大对象的方法

    Git 是一个非常强大和扩展性非常强的系统应用软件,如何使用 Git 管理二进制大对象?下面小编将为大家详细的讲述使用Git管理二进制大对象的方法;希望...

    Linux之家3932019-06-09
  • LinuxLinux使用scp命令进行文件远程的上传或下载

    Linux使用scp命令进行文件远程的上传或下载

    Linux系统的操作大部分要通过命令来实现,想要进行文件远程的上传或下载的话,可选择使用scp命令,下面为大家介绍下scp命令远程传输文件的方法 ...

    Linux教程网2382019-09-24
  • Linux详解Linux系统中ping和arping命令的用法

    详解Linux系统中ping和arping命令的用法

    这篇文章主要介绍了Linux系统中ping和arping命令的用法,这两个命令的使用也是检查与网络另一端主机连接性的基本方法,需要的朋友可以参考下...

    Linux命令手册3502019-06-24
  • LinuxLinux中安装使用http_load对服务器进行压力测试的教程

    Linux中安装使用http_load对服务器进行压力测试的教程

    这篇文章主要介绍了Linux中安装使用http_load对服务器进行压力测试的教程,http_load可以简单地通过txt文本文件中记录的参数来对HTTP服务器进行压力测试,需要...

    Linux运维日志3622019-06-17
  • Linux在Linux系统中限制CPU占用率的教程

    在Linux系统中限制CPU占用率的教程

    这篇文章主要介绍了在Linux系统中限制CPU占用率的教程,使用nice工具和cpulimit工具以及Linux内建的control groups来协作实现,需要的朋友可以参考下 ...

    开源中文社区2512019-09-29