¿Mis permisos para / usr / local / correct?

85

Estoy usando HomeBrew para mis necesidades de puerto (parece un poco más "limpio" que MacPorts).

Puedo instalar sin sudo ing (lo cual es genial), pero el paso de vinculación del hombre parece requerirlo ( /usr/local/share/man/man3 es propiedad de root ).
Una guía I encontrado sugiere que recursivamente chown /usr/local haciendo

sudo chown -R 'whoami' /usr/local

¿Es seguro ... o es una mala idea ™?

También: ¿mis permisos son correctos?

$ pwd
/usr/local/share/man
$ ls -lah
total 32
drwxrwxr-x    8 root  staff   272B  4 Set 11:02 .
drwxrwxr-x    9 root  staff   306B 10 Set 11:27 ..
drwxr-xr-x    3 root  wheel   102B  4 Ago  2009 de
drwxrwxr-x  163 root  staff   5,4K 10 Set 11:27 man1
drwxr-xr-x   11 root  wheel   374B 10 Set 11:27 man3
drwxr-xr-x    7 ago   staff   238B 10 Set 11:39 man5
drwxr-xr-x   11 ago   staff   374B 10 Set 11:39 man7
-rw-r--r--    1 root  staff    13K  4 Set 11:02 whatis
    
pregunta Agos 10.09.2010 - 12:07

6 respuestas

35

Por lo general, es mejor mantener los permisos lo más estrictos posible. Mantener a /usr/local propiedad de root significa que solo los procesos que se ejecutan como root / sudo (o solicitar un usuario administrador a través del cuadro de diálogo de autorización de Apple) pueden escribir en esta área. Por lo tanto, una descarga de proceso tiene que pedirle una contraseña antes de corromper los archivos allí.

Pero como dices, hace que sea más difícil agregar nuevos programas.

Estoy bien con la ejecución de sudo , ya que instala las cosas con menos frecuencia que ejecutándolas, pero tiene que confiar en que el proceso de compilación no cambia nada de lo que debería.

Si desea evitar el sudo, instalaría Homebrew en ~/usr/local y modificará su ruta, manpath, etc. para incluir los directorios debajo.

Una mejor manera es crear otro usuario, por ejemplo, homebrew y crear un directorio de propiedad de ese usuario. Luego, instale allí usando sudo -U homebrew . Otros usuarios tendrán la ventaja de no poder sobrescribir ningún otro archivo, ya que no se ejecutan como root y otros programas no pueden afectar a homebrew. (Observo que las Preguntas frecuentes sobre Homebrew sugieren este nuevo usuario si se encuentra en un "entorno multiusuario". Diría que que cualquier máquina Unix, incluyendo macOS, es un entorno multiusuario)

Sin embargo, como la wiki de Homebrew dice que las recetas no encuentran todos los casos de /usr/local y los reemplazan con el directorio elegido, sospecho que estamos atascados con /usr/local .

    
respondido por el Mark 10.09.2010 - 12:50
46

También uso Homebrew y puedo confirmar que es totalmente seguro. Cotizando el Página de instalación en la página oficial Homebrew :

  

Hazte un favor y elige /usr/local

     
  1. Es más fácil
    /usr/local/bin ya está en tu PATH .

  2.   
  3. Es más fácil
      Toneladas de scripts de compilación se rompen si sus dependencias no están en / usr o / usr / local. Solucionamos esto para las fórmulas de Homebrew (aunque no siempre lo probamos), pero encontrarás que se rompen muchos scripts de configuración de RubyGems y Python, lo cual está fuera de nuestro control.

  4.   
  5. Es seguro
    Apple se ha adaptado a POSIX y nos dejó este directorio. Lo que significa que no hay un directorio /usr/local de forma predeterminada, por lo que no hay que preocuparse por desordenar las herramientas existentes.
  6.   

Si planeas instalar gemas que dependen de las cervezas, ahórrate un montón de problemas e instálalas en /usr/local !

     

No es trivial decirle a gema que busque en los directorios no estándar para encabezados y dylibs. Si elige /usr/local , todo "simplemente funciona!"

Simplemente agregaré que hacer cosas como root es una muy mala idea , por lo que chown ing /usr/local no solo me parece razonable (no es un directorio de sistema en OSX), pero sane .

Sus permisos no son correctos (todavía). Simplemente ejecute el comando que enumeró y estará bien.

Si tienes otros problemas, recuerda, ¡ brew doctor puede ayudarte!

    
respondido por el Carmine Paolino 10.09.2010 - 12:47
8

Si está utilizando Homebrew, debe otorgar el permiso de escritura a un grupo específico (ya sea admin o staff ), para que los archivos se puedan compartir entre los usuarios que están en ese grupo.

Por ejemplo:

sudo chgrp -R admin /usr/local /Library/Caches/Homebrew
sudo chmod -R g+w /usr/local /Library/Caches/Homebrew

Luego, asigne los usuarios que deberían tener acceso al comando brew a ese grupo (verifique sus grupos a través de: id -Gn ).

Luego, cuando trabaje con brew , no lo ejecute con sudo .

Cuando aún tengas algún problema de permiso, ejecuta brew doctor para solucionar el problema.

    
respondido por el kenorb 30.05.2015 - 12:09
7

Para su valor, /usr/local no se considera una carpeta de "sistema" por OS X, y en una nueva instalación de Snow Leopard esa carpeta está vacía.

Cualquier cosa de raíz en esa carpeta es el resultado de sudo make install en otro software, o le da su contraseña después de hacer doble clic en un .pkg que quiere volcar cosas en /usr/local .

Ser propietario de /usr/local ha "trabajado para mí" en 2 máquinas durante más de un año.

Una respuesta es que si has instalado MySQL (sin usar Homebrew) y has chown sus archivos, entonces probablemente ya no podrá ver sus bases de datos (por lo que tendrías que devolverlos a cualquier usuario MySQL). se está ejecutando como.)

    
respondido por el Adam Vandenberg 10.09.2010 - 17:57
6

Como en Homebrew 1.0.0:

  

Homebrew ya no necesita tener la propiedad de / usr / local. Si lo desea   puede devolver / usr / local a su propiedad predeterminada con: sudo chown   root: wheel / usr / local

    
respondido por el Yuhao Zhang 21.09.2016 - 19:55
0

Creo que está bien que los usuarios tengan permisos de escritura para /usr/local . Después de todo, eso significa que no está utilizando sudo en cada script de compilación. No me gusta la idea de que un usuario ordinario posea /usr/local . Prefiero tener root (o similar) propio /usr/local , pero cambiar los permisos para que los usuarios (o al menos algún grupo privilegiado) puedan escribir en él. Ese parece ser el enfoque conceptualmente correcto.

    
respondido por el Marnen Laibow-Koser 29.05.2013 - 18:42

Lea otras preguntas en las etiquetas