如何设置不可变文件属性

如何使用 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

慕桂英4014372
浏览 96回答 1
1回答

哔哔one

我不确定你在这里使用了正确的 ioctl...至少 chattr 和在 C 中使用ioctl() 设置不可变标志FS_IOC_SETFLAGS的解决方案(你可以看到 chattr 使用 做什么strace)。您可以查看/usr/include/linux/fs.h,特别是有关“Inode flags”.
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

Go