Linux命令

推荐列表 站点导航

当前位置:首页 > 服务器技术 > Linux命令 >

使用chattr命令更改文件属性

来源:网络整理  作者:网友投稿  发布时间:2020-12-28 14:02
前言 其实在好久之前我就遇到了这个问题的,只不过现在才有时间坐下来去搜索解决。问题是这样的:怎样对unbunt...

其实在好久之前我就遇到了这个问题的,只不过现在才有时间坐下来去搜索解决。问题是这样的:怎样对unbuntu下的文件或者目录写上保护,让其可以被添加内容,但不允许在没有经过允许的情况下被rm命令删除?

原因是我有洁癖,经常对home目录进行清理,很多重要文件一不小心就会被删除,很是麻烦。解决办法很简单,就是使用chattr命令。

 

chattr命令

chattr命令有很多选项,它的用法如下(摘录自man文档):

chattr [-RVf] [-v version] [mode] files…

它的简要描述如下(摘自man离线手册):

chattr 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性

模式有+-=[ASacdisu]几种格式.

符’+’文件已有属性的基础上增加选定的属性; ‘-‘来去掉文件上的选定的属性;而’=’来指定该文件的唯一属性.

‘ASacdisu’用作文件新属性的选项: 不更新atime(A),同步更新(S),只能添加(a), 压缩(c),不可变(i),不可转移(d),删除保护(s)以及不可删除(u).

它的选项

OPTIONS(选项)

-R

递归地修改目录以及其下内容的属性. 如果在递归目录时遇到了符号链接,遍历将跳过.

-V

详尽地给出chattr的输出信息并打印出程序的版本.

-v version

设置文件系统的版本.

看起来好像很复杂的样子,但解决这个问题我们只需要使用a这个属性和-R这个选项(如果你想将你指定的目录下的文件也加上属性的情况)。a属性如下(其余属性我不去看了,以后遇到了再来):

设置了`a’属性的文件只能在添加模式下打开用于写入. 只有超级用户可以设置或清除该属性

这段话意味着,如果你给一个文件添加了a属性,那么在不清除该属性的情况下,该文件只能用于打开进行添加而不能被删除。

 

chattr的实际用法

在我的家目录下有一个名为doc的文件夹,该文件夹里有一个名为a.txt的普通文件,在没有给doc目录加上a属性的情况下,doc目录很容易就被rm命令删除了。

zhenghong@zhenghong-VB:~$ ls -l

总用量 32

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  4 22:48 desktop

drwxrwxr-x 2 zhenghong zhenghong 4096  2月 16 12:13 doc

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  4 15:58 document

drwxr-xr-x 2 zhenghong zhenghong 4096 12月 25 21:56 download

-rw-r--r-- 1 zhenghong zhenghong  234 12月  4 16:25 example.desktop

drwxrwxr-x 6 zhenghong zhenghong 4096 12月 26 10:17 kuaipan

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  5 21:27 picture

drwxrwxr-x 3 zhenghong zhenghong 4096 12月  5 22:39 ProgramFiles

zhenghong@zhenghong-VB:~$ rm -rfv doc

已删除"doc/a.txt"

已删除目录:"doc"

zhenghong@zhenghong-VB:~$

重新创建doc目录并给doc目录加上a属性

zhenghong@zhenghong-VB:~$ mkdir doc

zhenghong@zhenghong-VB:~$ touch ./doc/a.txt

zhenghong@zhenghong-VB:~$ sudo chattr -R +a doc

[sudo] password for zhenghong: 

zhenghong@zhenghong-VB:~$

再来尝试删除doc文件夹,rm命令遍历到a.txt时,因为无法删除就退出了

zhenghong@zhenghong-VB:~$ rm -rfv doc

rm: 无法删除"doc/a.txt": 不允许的操作

zhenghong@zhenghong-VB:~$

尝试在已经添加a属性的a.txt文件里添加内容,结果可以实现。这样就解决了我的问题了。

 

注意

在刚才的尝试中,我还是发现了该命令的一点出乎意料的情况:在你对某个文件夹添加了a属性甚至还使用了-R选项时,如果你在该文件夹里的子文件夹里添加一个新的子文件夹,然后再在该文件夹里添加一个文件,那么这个文件是没有被添加a属性的。比如下面的情况。有一个doc文件夹,里面有一个普通文本文件a.txt和两个文件夹tmp1和tmp2。对doc使用-R选项加上a属性后,无法删除doc文件夹里的任何一个文件。

zhenghong@zhenghong-VB:~$ ls -l

总用量 28

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  4 22:48 desktop

drwxrwxr-x 4 zhenghong zhenghong 4096  2月 16 12:45 doc

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  4 15:58 document

drwxr-xr-x 2 zhenghong zhenghong 4096 12月 25 21:56 download

drwxrwxr-x 6 zhenghong zhenghong 4096 12月 26 10:17 kuaipan

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  5 21:27 picture

drwxrwxr-x 3 zhenghong zhenghong 4096 12月  5 22:39 ProgramFiles

zhenghong@zhenghong-VB:~$ ls -l ./doc

总用量 8

-rw-rw-r-- 1 zhenghong zhenghong    0  2月 16 12:45 a.txt

drwxrwxr-x 2 zhenghong zhenghong 4096  2月 16 12:45 tmp1

drwxrwxr-x 2 zhenghong zhenghong 4096  2月 16 12:45 tmp2

zhenghong@zhenghong-VB:~$ sudo chattr -R +a doc

[sudo] password for zhenghong: 

zhenghong@zhenghong-VB:~$ rm -rvf doc

rm: 无法删除"doc/a.txt": 不允许的操作

rm: 无法删除"doc/tmp1": 不允许的操作

rm: 无法删除"doc/tmp2": 不允许的操作

zhenghong@zhenghong-VB:~$

在doc文件夹的子文件夹tmp1里再添加一个文件夹tm,然后再在tm文件夹里添加一个普通文件c.txt。

文件夹之间的包含关系如下图所示:

使用chattr命令更改文件属性

然后在使用rm命令尝试删除整个doc文件夹。发现c.txt文件被删除了,重复一次之后,没有再删除任何东西

zhenghong@zhenghong-VB:~$ rm -rvf doc

rm: 无法删除"doc/a.txt": 不允许的操作

rm: 无法删除"doc/tmp1/b.txt": 不允许的操作

已删除"doc/tmp1/tm/c.txt"

rm: 无法删除"doc/tmp1/tm": 不允许的操作

rm: 无法删除"doc/tmp2": 不允许的操作

zhenghong@zhenghong-VB:~$ rm -rvf doc

rm: 无法删除"doc/a.txt": 不允许的操作

rm: 无法删除"doc/tmp1/b.txt": 不允许的操作

rm: 无法删除"doc/tmp1/tm": 不允许的操作

rm: 无法删除"doc/tmp2": 不允许的操作

zhenghong@zhenghong-VB:~$

如何解决这个问题呢?一个最笨最简单的方法:每次你在已经添加了a属性的目录里创建了新文件的时候你都再添加a属性一次就好了。

相关热词:

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供用于网络技术学习参考,学习中请遵循相关法律法规!

本文地址: https://v30.fanwenzhu.com/server/ml/10188.shtml

相关文章
Copyright © www.juheyunku.com      关于 | 合作 | 声明 | 联系 | 更新 | 地图 | Tags

使用chattr命令更改文件属性

2020-12-28 编辑:网友投稿

其实在好久之前我就遇到了这个问题的,只不过现在才有时间坐下来去搜索解决。问题是这样的:怎样对unbuntu下的文件或者目录写上保护,让其可以被添加内容,但不允许在没有经过允许的情况下被rm命令删除?

原因是我有洁癖,经常对home目录进行清理,很多重要文件一不小心就会被删除,很是麻烦。解决办法很简单,就是使用chattr命令。

 

chattr命令

chattr命令有很多选项,它的用法如下(摘录自man文档):

chattr [-RVf] [-v version] [mode] files…

它的简要描述如下(摘自man离线手册):

chattr 修改文件在Linux第二扩展文件系统(E2fs)上的特有属性

模式有+-=[ASacdisu]几种格式.

符’+’文件已有属性的基础上增加选定的属性; ‘-‘来去掉文件上的选定的属性;而’=’来指定该文件的唯一属性.

‘ASacdisu’用作文件新属性的选项: 不更新atime(A),同步更新(S),只能添加(a), 压缩(c),不可变(i),不可转移(d),删除保护(s)以及不可删除(u).

它的选项

OPTIONS(选项)

-R

递归地修改目录以及其下内容的属性. 如果在递归目录时遇到了符号链接,遍历将跳过.

-V

详尽地给出chattr的输出信息并打印出程序的版本.

-v version

设置文件系统的版本.

看起来好像很复杂的样子,但解决这个问题我们只需要使用a这个属性和-R这个选项(如果你想将你指定的目录下的文件也加上属性的情况)。a属性如下(其余属性我不去看了,以后遇到了再来):

设置了`a’属性的文件只能在添加模式下打开用于写入. 只有超级用户可以设置或清除该属性

这段话意味着,如果你给一个文件添加了a属性,那么在不清除该属性的情况下,该文件只能用于打开进行添加而不能被删除。

 

chattr的实际用法

在我的家目录下有一个名为doc的文件夹,该文件夹里有一个名为a.txt的普通文件,在没有给doc目录加上a属性的情况下,doc目录很容易就被rm命令删除了。

zhenghong@zhenghong-VB:~$ ls -l

总用量 32

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  4 22:48 desktop

drwxrwxr-x 2 zhenghong zhenghong 4096  2月 16 12:13 doc

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  4 15:58 document

drwxr-xr-x 2 zhenghong zhenghong 4096 12月 25 21:56 download

-rw-r--r-- 1 zhenghong zhenghong  234 12月  4 16:25 example.desktop

drwxrwxr-x 6 zhenghong zhenghong 4096 12月 26 10:17 kuaipan

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  5 21:27 picture

drwxrwxr-x 3 zhenghong zhenghong 4096 12月  5 22:39 ProgramFiles

zhenghong@zhenghong-VB:~$ rm -rfv doc

已删除"doc/a.txt"

已删除目录:"doc"

zhenghong@zhenghong-VB:~$

重新创建doc目录并给doc目录加上a属性

zhenghong@zhenghong-VB:~$ mkdir doc

zhenghong@zhenghong-VB:~$ touch ./doc/a.txt

zhenghong@zhenghong-VB:~$ sudo chattr -R +a doc

[sudo] password for zhenghong: 

zhenghong@zhenghong-VB:~$

再来尝试删除doc文件夹,rm命令遍历到a.txt时,因为无法删除就退出了

zhenghong@zhenghong-VB:~$ rm -rfv doc

rm: 无法删除"doc/a.txt": 不允许的操作

zhenghong@zhenghong-VB:~$

尝试在已经添加a属性的a.txt文件里添加内容,结果可以实现。这样就解决了我的问题了。

 

注意

在刚才的尝试中,我还是发现了该命令的一点出乎意料的情况:在你对某个文件夹添加了a属性甚至还使用了-R选项时,如果你在该文件夹里的子文件夹里添加一个新的子文件夹,然后再在该文件夹里添加一个文件,那么这个文件是没有被添加a属性的。比如下面的情况。有一个doc文件夹,里面有一个普通文本文件a.txt和两个文件夹tmp1和tmp2。对doc使用-R选项加上a属性后,无法删除doc文件夹里的任何一个文件。

zhenghong@zhenghong-VB:~$ ls -l

总用量 28

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  4 22:48 desktop

drwxrwxr-x 4 zhenghong zhenghong 4096  2月 16 12:45 doc

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  4 15:58 document

drwxr-xr-x 2 zhenghong zhenghong 4096 12月 25 21:56 download

drwxrwxr-x 6 zhenghong zhenghong 4096 12月 26 10:17 kuaipan

drwxr-xr-x 2 zhenghong zhenghong 4096 12月  5 21:27 picture

drwxrwxr-x 3 zhenghong zhenghong 4096 12月  5 22:39 ProgramFiles

zhenghong@zhenghong-VB:~$ ls -l ./doc

总用量 8

-rw-rw-r-- 1 zhenghong zhenghong    0  2月 16 12:45 a.txt

drwxrwxr-x 2 zhenghong zhenghong 4096  2月 16 12:45 tmp1

drwxrwxr-x 2 zhenghong zhenghong 4096  2月 16 12:45 tmp2

zhenghong@zhenghong-VB:~$ sudo chattr -R +a doc

[sudo] password for zhenghong: 

zhenghong@zhenghong-VB:~$ rm -rvf doc

rm: 无法删除"doc/a.txt": 不允许的操作

rm: 无法删除"doc/tmp1": 不允许的操作

rm: 无法删除"doc/tmp2": 不允许的操作

zhenghong@zhenghong-VB:~$

在doc文件夹的子文件夹tmp1里再添加一个文件夹tm,然后再在tm文件夹里添加一个普通文件c.txt。

文件夹之间的包含关系如下图所示:

使用chattr命令更改文件属性

然后在使用rm命令尝试删除整个doc文件夹。发现c.txt文件被删除了,重复一次之后,没有再删除任何东西

zhenghong@zhenghong-VB:~$ rm -rvf doc

rm: 无法删除"doc/a.txt": 不允许的操作

rm: 无法删除"doc/tmp1/b.txt": 不允许的操作

已删除"doc/tmp1/tm/c.txt"

rm: 无法删除"doc/tmp1/tm": 不允许的操作

rm: 无法删除"doc/tmp2": 不允许的操作

zhenghong@zhenghong-VB:~$ rm -rvf doc

rm: 无法删除"doc/a.txt": 不允许的操作

rm: 无法删除"doc/tmp1/b.txt": 不允许的操作

rm: 无法删除"doc/tmp1/tm": 不允许的操作

rm: 无法删除"doc/tmp2": 不允许的操作

zhenghong@zhenghong-VB:~$

如何解决这个问题呢?一个最笨最简单的方法:每次你在已经添加了a属性的目录里创建了新文件的时候你都再添加a属性一次就好了。

本站内容来源于网络,如有侵权请与我们联系,我们会及时删除,我们深感抱歉!
注:本站所有信息仅供学习参考!
本文地址为 https://v30.fanwenzhu.com/server/ml/10188.shtml

相关文章

风云图片

推荐阅读

返回Linux命令频道首页