a标签linux路径,linux – “chattr a”对目录的影响是什么?

本文介绍了Linux中的chattr命令,特别是'a'属性如何使文件只能追加写入,不能删除或修改。当应用于目录时,该属性会阻止删除目录及其直接子文件和子目录。然而,如果子目录内再创建新的子目录和文件,则不会继承此保护,可以被删除。这提供了一种限制对特定目录操作的安全机制。
摘要由CSDN通过智能技术生成

Linux文件属性通常记录为适用于文件.

chattr(1)联机帮助页:

A file with the ‘a’ attribute set can only be open in append mode for writing.

0x20 File can only be appended (07001).

我的问题是:

> chattr仅限于文件吗?

>它是否在新的子目录和文件上递归?

解决方法:

仅附加标志(chattr a)阻止删除目录,以及直接在该目录中创建的文件和目录:

创建测试目录和文件:

# mkdir /tmp/foo

# chattr +a /tmp/foo

该目录无法删除:

# rmdir /tmp/foo

rmdir: failed to remove ‘/tmp/foo’: Operation not permitted

现在在其中创建文件和目录:

# touch /tmp/foo/bar

# mkdir /tmp/foo/baz

让我们检查:

# lsattr -d /tmp/foo /tmp/foo/ba*

-----a-------e-- /tmp/foo

-------------e-- /tmp/foo/bar

-------------e-- /tmp/foo/baz

试着抹去东西:

# rm /tmp/foo/bar

rm: cannot remove ‘/tmp/foo/bar’: Operation not permitted

# rmdir /tmp/foo/baz

rmdir: failed to remove ‘/tmp/foo/baz’: Operation not permitted

rm -Rf /tmp/foo

rm: cannot remove ‘/tmp/foo/bar’: Operation not permitted

rm: cannot remove ‘/tmp/foo/baz’: Operation not permitted

最后,子目录和子目录中的文件不受保护:

# mkdir /tmp/foo/baz/bat

# touch /tmp/foo/baz/baff

# rm --verbose -Rf /tmp/foo/baz

removed directory: ‘/tmp/foo/baz/bat’

removed ‘/tmp/foo/baz/baff’

rm: cannot remove ‘/tmp/foo/baz’: Operation not permitted

再次注意,只有/ tmp / foo有append标志:

# lsattr -d /tmp/foo /tmp/foo/baz

-----a-------e-- /tmp/foo

-------------e-- /tmp/foo/baz

标签:linux,directory,xattr

来源: https://codeday.me/bug/20190812/1644457.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值