Nat*_*man 2 file-permissions chmod go
Go提供os.Chmod()设置文件和目录权限.例如,如果我想确保只有当前用户可以访问文件,我可以执行以下操作:
os.Chmod("somefile.txt", 0600)
Run Code Online (Sandbox Code Playgroud)
这在Linux上很有用,但在Windows上绝对没有.在深入研究Go源代码之后,我遇到了它的实现.似乎S_IWRITE是唯一支持的属性.
如何使用Go控制对Windows上的文件或目录的访问?
Windows不使用传统的Unix权限.相反,Windows通过访问控制来控制对文件和目录的访问.每个对象都有一个ACL(访问控制列表)*,用于控制对象的访问.
每个ACL基本上是一个ACE(访问控制条目)列表,用于确定授予特定受托者(用户,组等)的访问权限.例如,文件可能包含ACE,授予GENERIC_READ该文件特定用户读取访问权限().
操纵ACL和ACE是通过Windows API中的授权功能完成的.
*从技术上讲,每个对象都有两个ACL - 一个DACL和一个SACL
值得庆幸的是,没有必要学习所有这些功能.我已经整理了一个名为"go-acl"的小型Go包,它可以完成所有繁重工作,并公开一个名为(还有什么?)的函数Chmod.基本用法如下:
import "github.com/hectane/go-acl"
err := acl.Chmod("C:\\path\\to\\file.txt", 0755)
if err != nil {
panic(err)
}
Run Code Online (Sandbox Code Playgroud)
该Chmod()函数在文件的ACL中创建三个ACE:
WinCreatorOwnerSid)WinCreatorGroupSid)WinWorldSid)| 归档时间: |
|
| 查看次数: |
1442 次 |
| 最近记录: |