Alguna aplicación que se instala automáticamente, como Netbean, JDK a menudo se instala /usr/local
y la ejecuto un usuario normal (no root).
Pero otra aplicación, simplemente extraiga tar.gz
el archivo y ejecútelo. Con un usuario normal, no puedo usar cp
el comando para copiar de Download
un directorio a /usr/local
otro, debo usar el usuario raíz ( su
comando).
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/local
y sus subdirectorios ( ,,, bin
etc. ) deberían ser (y probablemente sean) propiedad raíz y configurarse en 755 para que cualquiera pueda ejecutar cosas allí. lib
share
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 $PATH
funciona. Su ejemplo del JDK puede ser confuso a este respecto, pero es un tarball normal en el que colocará ./configure
archivos make install
ejecutables /usr/local/bin
, bibliotecas /usr/local/lib
y 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