如何设置不可变文件属性
Posted
技术标签:
【中文标题】如何设置不可变文件属性【英文标题】:How to set immutable file attribute 【发布时间】:2019-08-20 14:56:34 【问题描述】:如何使用 Go 为文件设置不可变属性?
我需要一个在文件上设置/取消设置此属性的函数,类似于chattr +i file
我发现了这个:IoctlSetInt
怎么用?
file, err := os.Open("file")
if err != nil
fmt.Printf("%s\n", err)
return
err = unix.IoctlSetInt(int(file.Fd()), unix.PERF_EVENT_IOC_MODIFY_ATTRIBUTES, unix.STATX_ATTR_IMMUTABLE)
if err != nil
fmt.Printf("%s\n", err)
错误:inappropriate ioctl for device
解决方案
我在snapd's repo找到了一段代码。
【问题讨论】:
【参考方案1】:我不确定你在这里使用了正确的 ioctl... 至少 chattr 和 Setting Immutable Flag using ioctl() in C 的解决方案使用 FS_IOC_SETFLAGS
(你可以看到 chattr 使用 strace
做了什么)。您可以查看/usr/include/linux/fs.h
,尤其是关于“Inode flags”的大评论,了解更多信息。
【讨论】:
在搜索FS_IOC_SETFLAGS
时,找到了解决方案,见上文。感谢您的想法:)以上是关于如何设置不可变文件属性的主要内容,如果未能解决你的问题,请参考以下文章