public FileSystemSecurity GetSecurity(AccessControlSections sections) { lock (Lock) { FileSecurity security = new FileSecurity(); if ((sections & AccessControlSections.Owner) != 0) { security.SetOwner(_file.Owner); } if ((sections & AccessControlSections.Group) != 0) { security.SetGroup(_file.Group); } if ((sections & AccessControlSections.Access) != 0) { foreach (var r in _fileSystem.GetAccessRules(_file)) { security.AddAccessRule( new FileSystemAccessRule(r.IdentityReference, r.FileSystemRights, r.InheritanceFlags, r.PropagationFlags, r.AccessControlType)); } } if ((sections & AccessControlSections.Audit) != 0) { foreach (var r in _fileSystem.GetAuditRules(_file)) { security.AddAuditRule( new FileSystemAuditRule(r.IdentityReference, r.FileSystemRights, r.InheritanceFlags, r.PropagationFlags, r.AuditFlags)); } } return(security); } }
static IpfsDokan() { var everyone = new SecurityIdentifier(WellKnownSidType.WorldSid, null); var everyoneRead = new FileSystemAccessRule(everyone, FileSystemRights.ReadAndExecute | FileSystemRights.ListDirectory, AccessControlType.Allow); readonlyFileSecurity.AddAccessRule(everyoneRead); readonlyFileSecurity.SetOwner(everyone); readonlyFileSecurity.SetGroup(everyone); readonlyDirectorySecurity.AddAccessRule(everyoneRead); readonlyDirectorySecurity.SetOwner(everyone); readonlyDirectorySecurity.SetGroup(everyone); }
public System.Security.AccessControl.FileSecurity GetFileSecurity(string path) { lock (lockThread) { Trace.WriteLine("Linux GetFileSecurity " + path); var fs = new FileSecurity(); fs.SetOwner(new SecurityIdentifier(GetAttr(path, "system.nt_sec_desc.owner"))); fs.SetGroup(new SecurityIdentifier(GetAttr(path, "system.nt_sec_desc.group"))); var acls = GetAttr(path, "system.nt_sec_desc.acl.*"); foreach (var acl in acls.Split(',')) { var part = acl.Split(':'); var part2 = part[1].Split('/'); var type = int.Parse(part2[0]); var flags = int.Parse(part2[1]); var access_mask = Convert.ToUInt32(part2[2], 16); fs.AddAccessRule(new FileSystemAccessRule(new SecurityIdentifier(part[0]), (FileSystemRights)access_mask, (AccessControlType)type)); } return(fs); } }