os.access()
doesn’t work as expected; it always returns True.
I found this method to verify if I have permission to read a file or directory, which should also imply that I have permission to check the path’s permissions.
def _readable_path(abs_path: Path, uname: str):
# Existing validation
try:
exists = abs_path.exists()
except PermissionError as e:
return build_not_path_access(abs_path, uname, e)
except Exception as e:
return build_general_path_access(abs_path, uname, e)
if not exists:
return build_file_not_found(abs_path)
# Reading perm check
try:
security_descriptor = win32security.GetFileSecurity(
str(abs_path), win32security.DACL_SECURITY_INFORMATION
)
except win32security.error as e:
if e.winerror == 5: # Not reading perms
return False
return build_general_path_access(abs_path, uname, e)
return True
Is there a library that simplifies path permission validation on Windows in a way similar to how os.access()
works on Linux?
user27330410 is a new contributor to this site. Take care in asking for clarification, commenting, and answering.
Check out our Code of Conduct.
3