如何在Python中更改文件权限?

时间:2015-02-13 16:32:11

标签: php python

我正在尝试为此 PHP 代码找到等效的 Python 代码,但我不确定如何翻译0640:< / p>

PHP 代码:

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

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

1 个答案:

答案 0 :(得分:5)

0640八进制号码(这是前导0的含义,不计入数字),表示以下权限(请参阅例如Wikipedia):

  • 第一个数字用于文件的所有者,(6110为二进制,其中位为 r ead, w rite和e x 分别执行权限)表示 读写权限;
  • 第二个数字用于,而(4100为二进制)表示只读;和
  • 第三位数字用于其他用户,表示没有权限(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)