Prerequisite: Python | os.umask() method
In UNIX-like operating systems, new files are created with a default set of permissions. We can restrict or provide any specific or set of permissions by applying a permission mask. Using Python, we can get or set file’s permission mask.
In this article, we will discuss about how to get the permission mask of a file in Python.
Method used –
os.stat() : This method is used to performs
stat()system call on the specified path. This method is used to get status of the specified path.
Below is the Python program to get a file’s permission mask –
# Python program to get file permission mask# of a given file # Import os moduleimport os # Filefilename = "./file.txt" # Now get the status of the file# using os.stat() methodprint("Status of %s:" %filename)status = os.stat(filename) # os.stat() method will return a# stat_result’ object of ‘os.stat_result’ class# which will represent # the status of file.print(status) # st_mode attribute of# returned 'stat_result' object# will represent the file type and# file mode bits (permissions).print("\nFile type and file permission mask:", status.st_mode) # st_mode attribute is an integer value# but we are interested in octal value# for file's permission mask # So we will change the integer value# to octal valueprint("File type and file permission mask(in octal):", oct(status.st_mode)) # last 3 octal digit # represents the file permission mask# and upper parts tells the file type # so to get the file's permission # we will extract last 3 octal digit# of status.st_modeprint("\nFile permission mask (in octal):", oct(status.st_mode)[-3:]) # Alternate wayprint("File permission mask (in octal):", oct(status.st_mode & 0o777)) |
Status of ./file.txt: os.stat_result(st_mode=33188, st_ino=801303, st_dev=2056, st_nlink=1, st_uid=1000, st_gid=1000, st_size=409, st_atime=1561590918, st_mtime=1561590910, st_ctime=1561590910) File type and file permission mask: 33188 File type and file permission mask(in octal): 0o100644 File permission mask (in octal): 644 File permission mask (in octal): 0o644
Below program is the short version of above program –
# Python program to get file permission mask# of a given file # Import os moduleimport os # Filefilename = "./file.txt" # Get the file permission mask# of the specified filemask = oct(os.stat(filename).st_mode)[-3:] # Print the maskprint("File permission mask:", mask) |
File permission mask: 644
