优秀的编程知识分享平台

网站首页 > 技术文章 正文

linux下怎么禁止一个文件夹下的文件不被删除?同时支持读写

nanyue 2024-09-11 05:22:53 技术文章 5 ℃

需求

最近一段时间经常发生一些附件丢失的情况,所以需要将附件目录下的文件去加锁,不能给人删除,但是可以去读写和增加文件。

ps:附件是统一放在文件服务器上存储,通过nfs挂载。


思路

考虑用chattr命令来实现-->考虑在ln -s 软链接上限制-->考虑在mount 挂载上限制

下面主要介绍下 chattr命令。


chattr 语法

用chattr命令可以改变一个文件的隐藏属性。其语法格式为:

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

下面给出几个选项的含义:

最关键的是在[mode]部分,[mode]部分的格式是+-=[acdeijstuACDST],这部分是用来设置文件的属性。其中+表示在原有参数设定基础上追加参数;-表示在原有参数设定基础上移除参数;=表示更新为指定参数。下面列出几个常用的属性参数的含义:

lsattr

用lsattr命令列出文件的隐藏属性。其语法格式为:

lsattr [ -RVadv ] [ files… ]

下面给出几个选项的含义:

下面这条命令显示MySecretDir目录的隐藏属性:

$ lsattr -Rd MySecretDir/
----i----------- MySecretDir/

总结:

chattr测试是可以实现将一个文件夹下的文件禁止删除同时可以读写这个需求,但是只支持在ext2、ext3、ext4下实现,如果是其他文件系统就不支持了。

上面的附件因为是通过挂载去实现的,文件系统表现为nfs,所以不能用chattr实现,同样软链接也无法实现,mount只能限制ro或者rw,也无法满足需求,所以严格来说还是没有解决这个问题。大家有什么更好的意见可以在下方留言哦~

后面会分享更多关于devops和DBA内容,感兴趣的朋友可以关注下!!

最近发表
标签列表