使用os.Stat获取文件权限,os.Chmod修改权限,os.OpenFile创建时指定权限。示例显示0600仅所有者读写,0644所有者读写、其他只读,0755用于可执行文件,在Unix-like系统生效,Windows支持有限。

在Go语言中操作文件权限,主要依赖于os包和io/fs模块提供的功能。文件权限控制对系统安全和多用户环境下的资源访问至关重要。本文将介绍如何查看和修改文件权限,并提供实用示例。
查看文件权限
使用os.Stat()可以获取文件的元信息,包括权限、大小、修改时间等。通过返回的os.FileInfo对象调用Mode()方法可提取权限位。
package main
import (
"fmt"
"os"
)
func main() {
info, err := os.Stat("example.txt")
if err != nil {
fmt.Println("无法读取文件:", err)
return
}
fmt.Printf("文件权限: %s\n", info.Mode().Perm())
}
输出结果类似 -rw-r--r--,表示所有者可读写,组和其他用户仅可读。
修改文件权限
使用os.Chmod()函数可更改指定文件的权限。该函数接收文件路径和fs.FileMode类型的权限值。
立即学习“go语言免费学习笔记(深入)”;
部分功能简介:商品收藏夹功能热门商品最新商品分级价格功能自选风格打印结算页面内部短信箱商品评论增加上一商品,下一商品功能增强商家提示功能友情链接用户在线统计用户来访统计用户来访信息用户积分功能广告设置用户组分类邮件系统后台实现更新用户数据系统图片设置模板管理CSS风格管理申诉内容过滤功能用户注册过滤特征字符IP库管理及来访限制及管理压缩,恢复,备份数据库功能上传文件管理商品类别管理商品添加/修改/
err := os.Chmod("example.txt", 0600)
if err != nil {
fmt.Println("修改权限失败:", err)
return
}
fmt.Println("权限已更改为 0600(仅所有者读写)")
常见权限模式:
- 0600:仅所有者可读写
- 0644:所有者读写,其他用户只读
- 0755:所有者可执行,其他人可读和执行(常用于可执行文件)
- 0666:所有人可读写(实际受umask影响)
创建文件时指定权限
使用os.OpenFile()创建新文件时,可通过第三个参数设置初始权限。
file, err := os.OpenFile(
"newfile.txt",
os.O_CREATE|os.O_WRONLY,
0600,
)
if err != nil {
fmt.Println("创建文件失败:", err)
return
}
defer file.Close()
file.WriteString("这是私有文件内容")
这里创建的文件仅允许所有者读写,增强安全性。
基本上就这些。掌握os.Stat、os.Chmod和os.OpenFile的使用,就能有效管理Go程序中的文件权限。注意权限数字采用八进制格式,且在Unix-like系统中生效,在Windows上部分权限可能不被完全支持。









