站点图标 星露谷值班站长

golang学习-使用go-chattr库锁定Linux文件权限

在 Linux 操作系统中,chattr 是用于修改文件或目录的扩展属性的命令。扩展属性是与文件或目录相关联的元数据,包括访问权限、拥有者、修改时间等。

chattr 命令可以用来设置或取消扩展属性,包括以下几种类型:

chattr 命令的使用格式为:chattr [选项] [文件名],常用的选项包括:

例如,要将文件 file.txt 设置为只读不可修改,可以使用以下命令:chattr +i file.txt。要取消该属性,可以使用命令:chattr -i file.txt

golang 中可以使用 go-chattr 库来实现对文件附加不可修改权限

package main

import (
	"fmt"
	"os"

	"github.com/g0rbe/go-chattr"
)

func main() {file, err := os.OpenFile("/etc/resolv.conf", os.O_RDONLY, 0666)
	if err != nil {fmt.Println(err)
	}
	// 打印当前是否拥有不可修改权限
	fmt.Println(chattr.IsAttr(file, chattr.FS_IMMUTABLE_FL))
	// 设置不可修改权限
	chattr.SetAttr(file, chattr.FS_IMMUTABLE_FL)
	// 打印当前是否拥有不可修改权限
	fmt.Println(chattr.IsAttr(file, chattr.FS_IMMUTABLE_FL))
}

打印输出

go run main.go
false <nil>
true  <nil>

可以看到刚开始是没有权限的,使用 SetAttr 设置后就拥有了权限

退出移动版