我想知道在使用C#时如何检查Linux系统上文件和目录的访问权限。
我想知道我是否可以阅读,写作或执行。
System.IO.Directory.GetAccessControl()
在Linux上不起作用。
Unhandled Exception:
System.PlatformNotSupportedExcpetion: Operation is not supported on this platform.
跟踪从:System.Security.AccessControl.NativeObjectSecurity.InternalGet
我尝试使用的方法:
static bool HasDirectoryPermission(FileSystemRights right, string path) {
var allowed = false;
var denied = false;
var accessControlList = System.IO.Directory.GetAccessControl(path);
if (accessControlList == null)
return false;
var accessRules = accessControlList.GetAccessRules(true, true,
typeof(System.Security.Principal.SecurityIdentifier));
if (accessRules == null)
return false;
foreach (FileSystemAccessRule rule in accessRules) {
if ((right & rule.FileSystemRights) != right)
continue;
if (rule.AccessControlType == AccessControlType.Allow)
allowed = true;
else if (rule.AccessControlType == AccessControlType.Deny)
denied = true;
}
return (allowed && !denied);
}
文件路径的方法几乎相同。
答案 0 :(得分:0)
我自己想出了一个“肮脏”的解决方案。
ls -l
+文件或目录的路径作为参数