Check file permissions on Mono

I am working on a cross-platform application with Mono. I want to check permissions for RW access for the user who runs the application. In NT, I can use the .GetAccessControl methods (in Mono throws a PlatformNotSupported exception), but what about * nix and MacOS? Are there any cross solutions?

+4
source share
3 answers

Mono.Unix has specific UNIX implementations:

var ufi = new UnixFileInfo("/tmp/test.cpp"); ufi.CanAccess(AccessModes.F_OK); // is a file/directory ufi.CanAccess(AccessModes.R_OK); // accessible for reading ufi.CanAccess(AccessModes.W_OK); // accessible for writing ufi.CanAccess(AccessModes.X_OK); // accessible for executing FileSpecialAttributes sa = ufi.FileSpecialAttributes; //setuid, setgid and sticky bits FileAccessPermissions fa = ufi.FileAccessPermissions; 

FileAccessPermissions is defined as:

 [Flags ()] public enum FileAccessPermissions { UserReadWriteExecute, UserRead, UserWrite, UserExecute, GroupReadWriteExecute, GroupRead, GroupWrite, GroupExecute, OtherReadWriteExecute, OtherRead, OtherWrite, OtherExecute, DefaultPermissions, AllPermissions } 
+3
source

How to just try to open a file for RW and see if it succeeds?

+1
source

File.GetAttributes(path)

http://msdn.microsoft.com/en-us/library/system.io.fileattributes.aspx

Not as much information as .GetAccessControl , but you can determine if there is a ReadOnly file

0
source

Source: https://habr.com/ru/post/1438302/


All Articles