Estaba siguiendo este tutorial, enlace , y configuré / usr / local en $ USER, que ahora me doy cuenta un gran error.
¿Alguien sabe cómo puedo revertir estos cambios, pero aún así permitir que Homebrew, Node, Ruby, etc. se instalen sin requerir sudo?
En cuanto a la primera parte de su pregunta, no puede revertir los cambios, no hay ⌘ Z o deshacer el comando, pero puede establecer los permisos para una buena conjetura de lo que era antes. Más sobre esto en la primera viñeta a continuación.
Para instalar el software en /usr/local debe tener permisos de escritura en el directorio (y sus subdirectorios). Hay varias maneras de lograr esto:
sudo chown -R $USER /usr/local . Mi experiencia con Linux sysadmin me dice que esta no es la forma estándar, porque /usr/local está fuera de su directorio de inicio y no debe ser de su propiedad. Pero no diría que haya dañado nada irreparablemente. Use sudo , pero no quiere que se le solicite usarlo.
(Desde mi punto de vista, la mejor solución . ¿Por qué? sudo te protege de ti mismo. Piensas dos veces si necesitas escribir sudo (a menos que estés siguiendo un tutorial de < a href="http://howtonode.org"> enlace :-) ).)
/usr/local y cambie los permisos a g+rwx / g+rw . Incómodo. No hagas eso. Hiciste 1. y quieres revertir los cambios, 2. no quieres, y no recomiendo 4. Así que explicaré 3:
Primero "revirtamos" los cambios que hiciste. /usr/local probablemente fue propiedad del usuario root , grupo wheel . Puedes configurarlo de la siguiente manera:
$ cd /usr/local
$ sudo chown -R root:wheel .
Establezca las ACL para que tenga todos los permisos:
$ cd /usr/local
$ sudo chmod -R +a "$USER allow delete,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,list,search,add_file,add_subdirectory,delete_child,file_inherit,directory_inherit" .
(vea man chmod , sección ACL MANIPULATION OPTIONS para más detalles)
Verás que todos los archivos tienen un + anexado, ls -e muestra las ACL:
$ cd /usr/local
$ ls -la .
total 0
drwxr-xr-x+ 11 root wheel 374 Oct 10 21:57 .
drwxr-xr-x+ 12 root wheel 442 Sep 22 13:44 ..
drwxr-xr-x+ 3 root wheel 3774 Oct 10 21:57 bin
-rw-r--r--+ 1 jaume wheel 0 Oct 25 14:53 myACLtestfile
drwxr-xr-x+ 3 root wheel 136 Jul 26 18:55 include
drwxr-xr-x+ 4 root wheel 442 Jul 26 18:55 lib
(...)
$ ls -led bin
drwxr-xr-x+ 3 root wheel 3774 Oct 10 21:57 bin
0: user:jaume allow list,add_file,search,delete,add_subdirectory,delete_child,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown,file_inherit,directory_inherit
$ ls -le myACLtestfile
-rw-r--r--+ 1 jaume wheel 0 Oct 25 14:53 myACLtestfile
0: user:jaume inherited allow read,write,execute,delete,append,readattr,writeattr,readextattr,writeextattr,readsecurity,writesecurity,chown
(He probado los comandos anteriores, pero es posible que haya cometido un error tipográfico. Como práctica recomendada, recomiendo que ejecute los comandos anteriores en un directorio de prueba . Podría hacer mkdir ~/tmpacl . Luego cd ~/tmpacl y sudo rsync -av /usr/local/ . para copiar el contenido de /usr/local a ~/tmpacl . Luego omita cd /usr/local en cada sección de arriba para aplicar los comandos a ~/tmpacl . Cuando haya terminado, rm -rf ~/tmpacl .)
Ahora puedes instalar software (o hacer cualquier cosa, para el caso) en /usr/local sin sudo .
Observe que cualquier archivo que cree en /usr/local le pertenecerá (como myACLtestfile en la lista anterior), por lo que verá que algunos archivos son propiedad de root y otros de usted.
(Si cambias de opinión y quieres volver al maravilloso mundo de sudo , elimina las ACL de la siguiente manera:
sudo chmod -R -N /usr/local
y establezca los permisos en root:wheel :
sudo chown -R root:wheel /usr/local
)
** EDIT ** **
Si la rutina de instalación del software que desea instalar utiliza /usr/bin/install , esta puede ser una solución mucho más sencilla. Añadir:
alias install="sudo /usr/bin/install"
a ~/.bashrc . Luego haga . ~/.bashrc para que los cambios surtan efecto.
Luego edite /etc/sudoers con el comando sudo visudo , agregue:
<your username> ALL=(ALL) NOPASSWD:/usr/bin/install
y guarde y cierre el archivo con :x .
(Si usa otro comando install en otra parte del sistema de archivos, como la instalación de GNU, cambie la ruta de arriba como corresponda)
Para que esto funcione, el software debe usar /usr/bin/install . Este suele ser el caso con make install .
** / EDIT **
Arranque en su HD de recuperación y vea si desea usar el terminal para arreglar la Mac HD / usr / local a mano o si prefiere restaurar desde una copia de seguridad conveniente.
Dado que las Mac no necesitan que exista nada en / usr / local, no veo cómo el sudo o cualquier sistema crítico se ve afectado, por lo que quizás ni siquiera entiendo su situación.