go - How to control file access in Windows? -
go provides os.chmod() setting file , directory permissions. example, if want ensure file accessible current user, can following:
os.chmod("somefile.txt", 0600) this works great on linux absolutely nothing on windows. after digging go source code, came across its implementation. seems s_iwrite attribute supported.
how control access file or directory on windows using go?
explanation
windows not use traditional unix permissions. instead, windows controls access files , directories through access control. each object has acl (access control list)* controls access object.
each acl list of aces (access control entries) determine access specific trustee (user, group, etc.) granted. example, file may contain ace granting specific user read access (generic_read) file.
manipulating acls , aces done through authorization functions in windows api.
* technically each object has 2 acls - dacl , sacl
solution
thankfully, learning of these functions isn't necessary. i've put a small go package named "go-acl" of heavy-lifting , exposes function named (what else?) chmod. basic usage follows:
import "github.com/hectane/go-acl"  err := acl.chmod("c:\\path\\to\\file.txt", 0755) if err != nil {     panic(err) } results
the chmod() function creates 3 aces in file's acl:
- one owner (wincreatorownersid)
- one group (wincreatorgroupsid)
- one else (winworldsid)

Comments
Post a Comment