Instalar la aplicación en /usr/local

Instalar la aplicación en /usr/local

Alguna aplicación que se instala automáticamente, como Netbean, JDK a menudo se instala /usr/localy la ejecuto un usuario normal (no root).

Pero otra aplicación, simplemente extraiga tar.gzel archivo y ejecútelo. Con un usuario normal, no puedo usar cpel comando para copiar de Downloadun directorio a /usr/localotro, debo usar el usuario raíz ( sucomando).

Pero debido a que copio por usuario root, este directorio pertenece a root, por lo que no puedo ejecutarlo con un usuario normal. Me provoca dolor de cabeza. ¿Cómo puedo ejecutarlo con un usuario normal, como otras aplicaciones que enumero anteriormente? ¿O hay otra forma de instalarlo?

Respuesta1

/usr/localy sus subdirectorios ( ,,, binetc. ) deberían ser (y probablemente sean) propiedad raíz y configurarse en 755 para que cualquiera pueda ejecutar cosas allí. libshare

Si descomprimiste algo y lo copiaste, entonces podrían ser los permisos de los archivos binarios individuales, que también deberían ser 755 para permitir el uso general.

Tenga en cuenta cómo $PATHfunciona. Su ejemplo del JDK puede ser confuso a este respecto, pero es un tarball normal en el que colocará ./configurearchivos make installejecutables /usr/local/bin, bibliotecas /usr/local/liby cosas diversas como documentación en algún lugar del archivo /usr/local/share. Esos son los caminos apropiados y debes seguir el mismo patrón. En otras palabras, simplemente poner cosas en cualquier lugar /usr/local(como un directorio individual para el paquete) o subdirectorios de bin/ no funcionará.

Respuesta2

Hay dos problemas potenciales con los que puedes estar tropezando.

Primer problema: ejecutar permisos para directorios

Es posible que los permisos en uno de los directorios que copió en /usr/local no estén configurados correctamente. Los permisos en los directorios deben ser tales que los usuarios que no sean root puedan ejecutar los programas/scripts desde estos directorios.

Probablemente sea necesario configurar los permisos en el directorio para que "otros" usuarios puedan ejecutar aplicaciones desde este directorio.

Por ejemplo

# don't have permissions on directory
root$ cd /usr/local
$ ls -ld somedir
drwxr-x--- 2 root root 4096 Apr 25 13:27 somedir

# have permissions on the script
root$ ls -l somedir/testscript.bash 
-rwxr-xr-x 1 root root 23 Apr 25 13:27 somedir/testscript.bash

En este escenario, aunque otros usuarios tengan permisos de ejecución en el script para leerlo y ejecutarlo, no se les permitirá debido a que no tienen lectura ni ejecución en el directorio en el que se encuentra el script.

Cambiar los permisos en el directorio les permite acceder:

 user$ ls -ld somedir/
 drwxr-xr-x 2 root root 4096 Apr 25 13:27 somedir/

 user$ somedir/testscript.bash 
 hi

Todo este problema se puede resolver cambiando los permisos en el directorio que se está descomprimiendo del archivo tar.gz, buscando todos los directorios que tienen scripts y ejecutando el comando chmod +rx <dir>en estos directorios.

Segundo problema: ejecutar permisos para archivos

Es posible que los permisos de los archivos del archivo .tar.gz no se hayan establecido antes, por lo que las aplicaciones o scripts del archivo se habrían descomprimido sin estos. Simply chmod +x <script>resolverá este problema en archivos que tengan este problema en particular.

### For example
user$ ls -ld somedir
drwxr-xr-x 2 root root 4096 Apr 25 13:27 somedir/

user$ ls -l somedir/testscript.bash 
-rw-r--r-- 1 root root 23 Apr 25 13:27 somedir/testscript.bash

user$ somedir/testscript.bash
bash: somedir/testscript.bash: Permission denied

información relacionada