如何在Python中更改文件权限


How can I change the file permissions in Python?

我正试图找到与此PHP代码等效的Python码,但我不知道如何翻译0640:

PHP代码:

chmod($credentials_file, 0640);
chown($credentials_file, 'webapp');

我在这里查看os.chmod文档,但我不确定0640如何等同于stat.SOMETHING_HERE。有人知道如何将这两行移植到Python吗?

0640是一个八进制数字(这是前导0的含义,它不算作数字),表示以下权限(例如维基百科):

  • 第一位是文件的所有者,并且(由于6是二进制的110,其中位分别为read、write和ex执行权限)意味着读写权限
  • 第二个数字用于,并且(由于4是二进制的100)表示只读;以及
  • 第三个数字表示其他用户,表示没有权限(0000!)

因此,在这种情况下,您希望组合S_IRUSR(用户读取)、S_IWUSR(用户写入)和S_IRGRP(组读取):

>>> import stat
>>> oct(stat.S_IRUSR | stat.S_IWUSR | stat.S_IRGRP)
'0640'

您可以通过以二进制形式显示八进制数来单独查看每个权限:

>>> bin(0640)
'0b110100000'

其分解如下:

 # USR
0b 110 100 000
 # ^ user read (yes)
 #  ^ user write (yes)
 #   ^ user execute (no)
     # GRP
0b 110 100 000
     # ^ group read (yes)
     #  ^ group write (no)
     #   ^ group execute (no)
         # OTH
0b 110 100 000
         # ^ other read (no)
         #  ^ other write (no)
         #   ^ other execute (no)