Macports configura la propiedad de su directorio de paquetes de sitio de Python como root.wheel
con permisos de lectura mundial. Los paquetes de Python instantáneamente a través de port install
tienen el mismo
# ls -l -d /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
drwxr-xr-x 151 root wheel 5134 Mar 8 10:56 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages
Por supuesto, esto evita que los usuarios individuales utilicen pip install para agregar paquetes, lo cual está bien ya que realmente debería hacerse como root.
Sin embargo, si se usa sudo o un shell raíz para pip install
, los paquetes se instalan con pip
como legibles solo con root.wheel
(740).
% sudo pip install BeautifulSoup
...
% ls -l -d /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/BeautifulSoup.py
-rw-r----- 1 root wheel 79567 Mar 8 11:09 /opt/local/Library/Frameworks/Python.framework/Versions/2.7/lib/python2.7/site-packages/BeautifulSoup.py
Esto impide que mi cuenta de usuario realmente importe o use el paquete (*).
¿Cómo puedo hacer que pip coloque siempre permisos razonables en los paquetes instalados?
Actualizar (editar)
He reescrito la pregunta para enfatizar que solo se trata de pip
de instalaciones. También me gustaría enfatizar aquí que el problema no es sobre la necesidad de permiso de escritura para los módulos. El problema es que los módulos se están instalando sin los permisos leer .
(*) Un truco para solucionarlo es chmod a+rX
de los permisos adecuados (744/755) en los archivos de paquetes recién instalados
Actualización 2 (solución)
Según lo sugerido por Mark e Ian, y confirmado en una prueba rápida, esto tiene que ver con el umask para la raíz. Aquí está la documentación sobre cómo cambiar /etc/sudoers
para OSX. Tenga en cuenta que no es necesariamente una buena idea cambiar el umask para todas las instancias de sudo.