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 que encontré sugiere que recursivamente chown /usr/local
haciendo
sudo chown -R `whoami` /usr/local
¿Es esto 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
Por lo general, es mejor mantener los permisos lo más estrictos posible. Mantener /usr/local
propiedad root
significa que solo los procesos que se ejecutan como root
/ sudo
(o solicitan 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 debe solicitarle una contraseña antes de corromper los archivos allí.
Pero como dices, hace que agregar nuevos programas sea más difícil.
Estoy de acuerdo con ejecutar sudo
, ya que instala cosas con menos frecuencia que ejecutarlas, pero debe confiar en que el proceso de compilación no cambia nada de lo que debería.
Si desea evitar sudo, instalaría Homebrew ~/usr/local
y modificaría su ruta, manpath, etc. para incluir los directorios que se encuentran debajo.
Una mejor manera es crear otro usuario, digamos, homebrew
y crear un directorio propiedad de ese usuario. Luego, instálelo allí usando sudo -U homebrew
. Otros usuarios tendrán la ventaja de no poder sobrescribir ningún otro archivo, porque no se están ejecutando root
y otros programas no pueden afectar a homebrew. (Observo que las preguntas frecuentes de Homebrew sugieren este nuevo usuario si se encuentra en un "entorno multiusuario". Diría que cualquier máquina Unix, incluido macOS, es un entorno multiusuario)
Sin embargo, como dice el wiki de Homebrew, las recetas no encuentran todos los casos /usr/local
y los reemplazan con el directorio elegido con el que sospecho que estamos atascados /usr/local
.
$PATH
e $MANPATH
incluir directorios de usuarios. Si los programas instalados no requieren una instalación en todo el sistema, es una alternativa mucho mejor.brew doctor
(sugerido a continuación) me dijo que solo tengo que elegir los directorios de hombres compartidos... lo suficientemente seguro para mí.También uso Homebrew y puedo confirmar que es totalmente seguro. Citando la página de instalación en las preguntas frecuentes oficiales de Homebrew :
Hazte un favor y elige
/usr/local
Es más fácil
/usr/local/bin
ya está en tuPATH
.Es más fácil
que se rompan toneladas de scripts de compilación si sus dependencias no están en /usr o /usr/local. Arreglamos esto para las fórmulas de Homebrew (aunque no siempre lo probamos), pero encontrará que muchos scripts de configuración de RubyGems y Python se rompen, lo cual es algo que está fuera de nuestro control.- Es seguro que
Apple se ha conformado con POSIX y nos ha dejado este directorio. Lo que significa que no hay un/usr/local
directorio predeterminado, por lo que no hay necesidad de preocuparse por estropear las herramientas existentes.Si planea instalar gemas que dependen de las cervezas, ahórrese un montón de problemas e instálelo en
/usr/local
!No es trivial decirle a gem que busque encabezados y dylibs en directorios no estándar. Si elige
/usr/local
, ¡todo “simplemente funciona!”
Solo agregaré que hacer las 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), sino cuerdo .
Sus permisos no son correctos (todavía). Simplemente ejecute el comando que enumeró y estará bien.
Si tienes otros problemas recuerda, ¡los brew doctor
pueden ayudarte!
brew doctor
es simplemente impresionante.Si está utilizando Homebrew, debe otorgar el permiso de escritura a un grupo específico (ya sea admin
o staff
), para que los archivos puedan compartirse 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 brew
comando a ese grupo (consulte sus grupos a través de: id -Gn
).
Luego, cuando trabaje con brew
, no lo ejecute con sudo
.
Cuando aún tenga algún problema de permiso, ejecute brew doctor
para solucionar el problema.
su myAdminUser
y luego todo funciona según lo previsto. Pero, por supuesto, esta solución no brindará ninguna seguridad a las personas que, de todos modos, ya están ejecutando un usuario administrador todo el tiempo.Por lo que vale, /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 que sea propiedad de la raíz en esa carpeta es el resultado de sudo make install
otro software, o de dar su contraseña después de hacer doble clic en un archivo .pkg
que quiere volcar cosas en un archivo /usr/local
.
Ser propietario /usr/local
ha "funcionado para mí" en 2 máquinas durante más de un año.
Un problema es que si instaló MySQL (sin usar Homebrew) y cortó sus archivos, entonces probablemente ya no podrá ver sus bases de datos (por lo que tendría que volver a choncharlos a cualquier usuario que MySQL esté ejecutando como .)
/usr/local/bin
todavía está en el valor predeterminado $PATH
, y cualquier cosa que coloque allí también puede ser utilizada por otros usuarios y debe ser de confianza . Si todo el /usr/local/
directorio tiene los mismos permisos /usr/local/share/man
que tiene actualmente en la configuración de OP, cualquiera puede ir y cambiar cualquier binario con un script que lo haga rm -rf ~
./usr/local
deberían estar bien. (Pero probablemente uses Postgres de todos modos. :))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
brew update
, que aún requiere la propiedad de /usr/local
. Intentaré restaurar los permisos después.A partir de macOS High Sierra o posterior, /usr/local
ya no se puede chown.
El equipo de Homebrew ahora recomienda : sudo chown -R $(whoami) $(brew --prefix)/*
corregir los permisos de Homebrew.
Consulte la respuesta de @Carmine Paolino para obtener más información sobre por qué Homebrew recomienda tomar posesión de los directorios de Homebrew.
Creo que está bien que los usuarios tengan permisos de escritura /usr/local
; después de todo, eso significa que no está usando sudo
en cada script de compilación. No me gusta la idea de que un usuario ordinario posea /usr/local
. Preferiría tener root (o similar) /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.
/usr/local/bin
puede muy bien estar al frente de $PATH para la mayoría de los usuarios. Hacer que el directorio sea escribible por todo el mundo abre muchos agujeros de seguridad de esa manera.sudo
, o le da a algunos usuarios permisos de escritura para /usr/local
. Tomaré el tercero como el menos riesgoso... a menos que conozca una mejor manera.~/brew
o algo así. Sin embargo, el problema es que, a diferencia de Ruby, que es bastante autónomo, muchas utilidades *nix esperan encontrarse en /usr/local
.../usr/local
no se puede escribir en todo el mundo: más bien, tengo un grupo de confianza homebrew
(no solo administrador) que tiene permisos de escritura (permisos extendidos como 0: group:homebrew allow add_file,delete,add_subdirectory,delete_child,file_inherit,directory_inherit
totalmente rock). Este es el mejor compromiso que he podido encontrar: no sudo
en los scripts de compilación, pero sí algo de control sobre /usr/local
./usr/local
). Navegando mucho en SO y otros sitios, viendo argumentos sobre: mover Homebrew a la carpeta de inicio del usuario versus mantenerlo /usr/local
, cambiar de propietario y/o grupo /usr/local
o no, y así sucesivamente... es difícil saber si hay alguna solución universalmente aceptable. ¿Tiene una publicación de blog o un artículo sobre esto, o podría dar una explicación más profunda en alguna parte?/usr/local
, la configuración debería ser evidente.brew doctor
le dirá que /usr/local/bin no se puede escribir. Si cambia al grupo _brew con newgrp brew
, entonces brew doctor
no marcará /usr/local/bin. Así que esta es en realidad una solución bastante decente.
mike mcquaid
Slipp D. Thompson
sudo chown -R :admin /usr/local
. De esta forma, funcionará igual para cualquier usuario administrador de la máquina. Aunque es posible que también deba ejecutarsudo find /usr/local -perm -200 -exec chmod g+w '{}' \+
para asegurarse de que el grupo tenga el mismo acceso de escritura que el usuario.hmijail
Auspicio
oem1905
oem1905