Estoy usando HomeBrew para mis necesidades de puertos (parece un poco más "limpio" que MacPorts).
Puedo instalar sin sudo
ing (lo cual es genial), pero el paso de enlace man 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 ™?
Además: ¿son correctos mis permisos?
$ 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
sudo chown -R :admin /usr/local
. De esta manera, funcionará igual para cualquier usuario administrador de la máquina. Aunque también es posible que 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.Respuestas:
Por lo general, es mejor mantener los permisos lo más estrictos posible. Mantener la
/usr/local
propiedadroot
significa que solo los procesos que se ejecutan comoroot
/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 tiene que pedirle una contraseña antes de dañar los archivos allí.Pero como usted dice, hace que agregar nuevos programas sea más difícil.
Estoy de acuerdo con la ejecución
sudo
, ya que instala las cosas con menos frecuencia que las que ejecuta pero tiene que 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 alteraría su ruta, ruta de acceso, etc. para incluir los directorios allí.Una mejor manera es crear otro usuario, por ejemplo,
homebrew
y crear un directorio propiedad de ese usuario. Luego, instale allí usandosudo -U homebrew
. Otros usuarios tendrán la ventaja de no poder sobrescribir ningún otro archivo, ya que no se están ejecutandoroot
y otros programas no pueden afectar a homebrew. (Observo que las preguntas frecuentes de Homebrew sugieren a 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, sospecho que estamos atascados/usr/local
.fuente
$PATH
e$MANPATH
incluir directorios de usuarios. Si los programas instalados no requieren instalación en todo el sistema, es una alternativa mucho mejor.brew doctor
(sugerido a continuación) me dijo que solo tengo que compartir los directorios man 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 :
Voy a añadir que hacer las cosas como root es una idea muy mala , por lo
chown
ing/usr/local
no sólo me parece razonable (que no es un sistema de dir en OSX), pero sano .Sus permisos no son correctos (todavía). Simplemente ejecute el comando que enumeró y estará bien.
Si tiene otros problemas, recuerde, ¡
brew doctor
puede ayudarlo!fuente
brew doctor
Es simplemente asombroso.Si está utilizando Homebrew, debe otorgar el permiso de escritura a un grupo específico (ya sea
admin
ostaff
), para que los archivos se puedan compartir entre los usuarios que están en ese grupo.Por ejemplo:
Luego asigne los usuarios que deberían tener acceso al
brew
comando a ese grupo (verifique sus grupos a través de:)id -Gn
.Luego, cuando trabaje con
brew
, no lo ejecutesudo
.Cuando todavía tenga algún problema de permiso, ejecute
brew doctor
para solucionar el problema.fuente
su myAdminUser
, y luego todo funciona según lo previsto. Pero, por supuesto, esta solución no dará seguridad a las personas que de todos modos ya están ejecutando un usuario administrador todo el tiempo.Por lo que vale,
/usr/local
OS X no lo considera una carpeta de "sistema", y en una nueva instalación de Snow Leopard esa carpeta está vacía.Cualquier material propiedad de root 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 uno.pkg
que quiere volcar cosas/usr/local
.Ser propietario
/usr/local
ha "trabajado para mí" en 2 máquinas durante más de un año.Uno de los problemas es que si instaló MySQL (sin usar Homebrew) y transfirió sus archivos, entonces probablemente ya no podrá ver sus bases de datos (por lo tanto, tendrá que devolverlas a cualquier usuario que MySQL esté ejecutando como .)
fuente
/usr/local/bin
todavía está en el$PATH
valor predeterminado , y cualquier cosa que coloque allí también puede ser utilizada por otros usuarios y se debe confiar . 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 tengarm -rf ~
./usr/local
deberían estar bien. (Pero probablemente uses Postgres de todos modos. :))Como en Homebrew 1.0.0:
fuente
brew update
, que todavía requiere la propiedad de/usr/local
. Intentaré restaurar los permisos después.Creo que está bien que los usuarios tengan permisos de escritura a
/usr/local
- después de todo, eso significa que no estés utilizandosudo
en cada escritura de la estructura. No me gusta la idea de un usuario normal propietaria/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.fuente
/usr/local/bin
muy bien puede estar al frente de $ PATH para la mayoría de los usuarios. Hacer que el directorio se pueda escribir en el mundo abre muchos agujeros de seguridad de esa manera.sudo
, o les das a algunos usuarios permisos de escritura/usr/local
. Tomaré el tercero como el menos arriesgado ... 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 mi mundo: más bien, tengo un grupo de confianzahomebrew
(no solo administrador) que tiene permisos de escritura (permisos extendidos como0: group:homebrew allow add_file,delete,add_subdirectory,delete_child,file_inherit,directory_inherit
totalmente rock). Este es el mejor compromiso que he podido resolver: nosudo
en los scripts de compilación, pero sí algo de control/usr/local
./usr/local
). Rastreando 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, etc. Solución universalmente aceptable. ¿Tiene una publicación de blog o artículo sobre esto, o podría dar una explicación más profunda en alguna parte?