Python module os.chmod(file, 664) does not change the permission to rw-rw-r-- but -w--wx----
chmod, file, permissions, python
Solution
Found this on a different forum
If you're wondering why that leading zero is important, it's because permissions are set as an octal integer, and Python automagically treats any integer with a leading zero as octal. So os.chmod("file", 484) (in decimal) would give the same result.
What you are doing is passing `664` which in octal is `1230`
In your case you would need
os.chmod("/tmp/test_file", 436)
[Update] Note, for Python 3 you have prefix with 0o (zero oh). E.G, `0o666`
Problem
Recently I am using Python module os, when I tried to change the permission of a file, I did not get the expected result. For example, I intended to change the permission to rw-rw-r--, ``` os.chmod("/tmp/test_file", 664) ``` The ownership permission is actually -w--wx--- (230) ``` --w--wx--- 1 ag ag 0 Mar 25 05:45 test_file ``` However, if I change 664 to 0664 in the code, the result is just what I need, e.g. ``` os.chmod("/tmp/test_file", 0664) ``` The result is: ``` -rw-rw-r-- 1 ag ag 0 Mar 25 05:55 test_file ``` Could anybody help explaining why does that leading 0 is so important to get the correct result?