Checking File Permissions in Linux with Python
Just to help other people like me who came here for something a bit different :
import os
import stat
st = os.stat(yourfile)
oct_perm = oct(st.st_mode)
print(oct_perm)
# -> 0o100664
The last 3 or 4 digits is probably what you want.
See this for more details: https://stackoverflow.com/a/5337329/1814774
You're right that os.access, like the underlying access syscall, checks for a specific user (real rather than effective IDs, to help out with suid situations).
os.stat is the right way to get more general info about a file, including permissions per user, group, and others. The st_mode
attribute of the object that os.stat
returns has the permission bits for the file.
To help interpret those bits, you may want to use the stat module. Specifically, you'll want the bitmasks defined here, and you'll use the &
operator (bit-and) to use them to mask out the relevant bits in that st_mode
attribute -- for example, if you just need a True/False check on whether a certain file is group-readable, one approach is:
import os
import stat
def isgroupreadable(filepath):
st = os.stat(filepath)
return bool(st.st_mode & stat.S_IRGRP)
Take care: the os.stat
call can be somewhat costly, so make sure to extract all info you care about with a single call, rather than keep repeating calls for each bit of interest;-).