Python dist-packages 权限

Python dist-packages permissions

我在 Python 2.7 的 dist-packages 文件夹中搞砸了一些权限,我担心它会导致问题。

这源于一个完全独立的导入问题,这导致我更改了此文件夹的权限以进行测试。 我接受了 运行 的建议: chmod -R 775 /usr/local/lib/python2.7/dist-packages/.

当这不起作用时,我尝试将其改回原来的样子:

chmod 765 /usr/local/lib/python2.7/dist-packages/
注意缺少递归标志。傻我。

当我执行 ls -l 时,我看到我对该文件夹拥有 drwxrwSr-x 的权限。它应该是 drwxrwsr-x 。所以我给了它 chmod +x 的执行权限,然后是 setgid - chmod g+s mydir

好的,我的文件夹权限现在恢复正常了。但是现在在文件夹中我看到大部分(不是全部)文件是 drwxrwSr-x.

我该怎么做才能解决这个问题? 这是杂乱文件夹内容的摘录:

drwxrwSr-x  2 root staff    4096 Jul 19 12:48 wheel-0.30.0.dist-info
drwxrwSr-x 12 root staff    4096 Jul 19 12:48 whoosh
drwxrwSr-x  2 root staff    4096 Jul 19 12:48 Whoosh-2.7.4.dist-info
drwxrwSr-x  2 root staff    4096 Jul 19 12:48 xmltodict-0.11.0.dist-info
-rwxrw-r-x  1 root staff   17356 Jul 19 12:48 xmltodict.py
-rwxrw-r-x  1 root staff   15128 Jul 19 12:48 xmltodict.pyc
drwxrwSr-x  2 root staff    4096 Jul 19 12:48 yaml
-rwxrw-r-x  1 root staff 1115503 Jul 19 12:48 _yaml.so

可能有更短的方法,但我使用 find 对目录和文件执行不同的 chmod。在 dist-packages 下没有可执行文件(至少我从未见过)所以你可以这样做:

find /usr/local/lib/python2.7/dist-packages/ -type d -exec chmod 755 {} +
find /usr/local/lib/python2.7/dist-packages/ -type f -exec chmod 644 {} +

或者,您可以使用 775 作为目录(上)行,使用 664 作为文件。

dist-packages 下可能会有符号链接(在我基于 Debian 的系统上有),但是它们的 permission setting should not matter.