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 module import os # File filename = "./file.txt" # Now get the status of the file # using os.stat() method print ( "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 value print ( "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_mode print ( "\nFile permission mask (in octal):" , oct (status.st_mode)[ - 3 :]) # Alternate way print ( "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 module import os # File filename = "./file.txt" # Get the file permission mask # of the specified file mask = oct (os.stat(filename).st_mode)[ - 3 :] # Print the mask print ( "File permission mask:" , mask) |
File permission mask: 644