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:
-
Establece el propietario para ti . Eso es lo que hiciste con
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 :-)
).)
-
Establecer ACLs . Una buena manera de separar los permisos originales de los permisos agregados. (Consulte enlace para obtener más información sobre las ACL).
-
Configurar grupos . Agregue su nombre al grupo que posee
/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 **