How to get the permission mask of a file in Python

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 –

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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))

chevron_right


Output:

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 –

filter_none

edit
close

play_arrow

link
brightness_4
code

# 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)

chevron_right


Output:

File permission mask: 644


My Personal Notes arrow_drop_up

Check out this Author's contributed articles.

If you like GeeksforGeeks and would like to contribute, you can also write an article using contribute.geeksforgeeks.org or mail your article to contribute@geeksforgeeks.org. See your article appearing on the GeeksforGeeks main page and help other Geeks.

Please Improve this article if you find anything incorrect by clicking on the "Improve Article" button below.




Article Tags :

Be the First to upvote.


Please write to us at contribute@geeksforgeeks.org to report any issue with the above content.