Changing file permission in Python
Changing file permission in Python
os.chmod(path, stat.S_IRUSR | stat.S_IRGRP | stat.S_IROTH)
The following flags can also be used in the mode argument of
os.chmod():
stat.S_ISUID
Set UID bit.
stat.S_ISGID
Set-group-ID bit. This bit has several special uses. For
a directory it indicates that BSD semantics is to be used for that
directory: files created there inherit their group ID from the
directory, not from the effective group ID of the creating process,
and directories created there will also get the S_ISGID bit set. For a
file that does not have the group execution bit (S_IXGRP) set, the
set-group-ID bit indicates mandatory file/record locking (see also
S_ENFMT).
stat.S_ISVTX
Sticky bit. When this bit is set on a directory it means
that a file in that directory can be renamed or deleted only by the
owner of the file, by the owner of the directory, or by a privileged
process.
stat.S_IRWXU
Mask for file owner permissions.
stat.S_IRUSR
Owner has read permission.
stat.S_IWUSR
Owner has write permission.
stat.S_IXUSR
Owner has execute permission.
stat.S_IRWXG
Mask for group permissions.
stat.S_IRGRP
Group has read permission.
stat.S_IWGRP
Group has write permission.
stat.S_IXGRP
Group has execute permission.
stat.S_IRWXO
Mask for permissions for others (not in group).
stat.S_IROTH
Others have read permission.
stat.S_IWOTH
Others have write permission.
stat.S_IXOTH
Others have execute permission.
stat.S_ENFMT
System V file locking enforcement. This flag is shared
with S_ISGID: file/record locking is enforced on files that do not
have the group execution bit (S_IXGRP) set.
stat.S_IREAD
Unix V7 synonym for S_IRUSR.
stat.S_IWRITE
Unix V7 synonym for S_IWUSR.
stat.S_IEXEC
Unix V7 synonym for S_IXUSR.
os.chmod(path, 0444)
is the Python command for changing file permissions in Python 2.x. For a combined Python 2 and Python 3 solution, change 0444
to 0o444
.
You could always use Python to call the chmod command using subprocess
. I think this will only work on Linux though.
import subprocess
subprocess.call([chmod, 0444, path])
Changing file permission in Python
Simply include permissions integer in octal (works for both python 2 and python3):
os.chmod(path, 0o444)