如何解决删除文件在Linux上不允许的操作
时间:2020-02-23 14:31:01 来源:igfitidea点击:
有时有必要防止包括root用户在内的所有用户删除文件。这通常是通过更改Linux文件系统上的文件属性来完成的。在Linux和其他Unix系统中用于更改文件属性的工具是chattr
。
符号模式的格式为+-= [acdeijstuADST]
。符号模式的格式为+-= [acdeijstuADST],并且它们选择了新的属性
文件。运算符+导致添加选定的属性
到文件的现有属性-导致将它们删除=使其成为文件唯一的属性。
请参阅以下所有字母的说明:
a - append only c - compressed d - no dump e - extent format i - immutable j - data journalling s - secure deletion t - no tail-merging u - undeletable A - no atime updates D - synchronous directory updates S - synchronous updates T - top of directory hierarchy
当目录或者文件设置了不可变属性时,尝试删除基础文件时会出现错误PermissionPermission。如果在文件上设置了属性i(不可变位),即使是root也无法修改它。
模拟删除文件在Linux上不允许的操作
在/tmp下创建目录
mkdir /tmp/testdir
触摸目录中的文件
touch /tmp/testdir/testfile
设置仅追加属性
sudo chattr +a /tmp/testdir/testfile
对于文件夹及其内容,请使用-R选项进行递归更改
sudo chattr -R +a /tmp/testdir/
查看文件属性
$lsattr /tmp/testdir/testfile -----a---------- testdir/testfile
尝试删除文件夹
$rm -f /tmp/testdir/testfile rm: cannot remove ‘testfile’: Operation not permitted
删除仅添加属性
sudo chattr -a /tmp/testdir/testfile
我们现在应该可以删除该文件
rm -f /tmp/testdir/testfile
对于不可变属性(i),其工作原理相同。
sudo chattr -i /tmp/testdir/testfile rm -f /tmp/testdir/testfile