GNU/Linux >> Tutoriales Linux >  >> Linux

comando no encontrado al usar sudo

Buscar ruta_segura en sudo

[[email protected] ~]# sudo -V | grep 'Value to override'
Value to override user's $PATH with: /sbin:/bin:/usr/sbin:/usr/bin

Si $PATH está siendo anulado use visudo y editar /etc/sudoers

Defaults    secure_path = /sbin:/bin:/usr/sbin:/usr/bin:/usr/local/bin

Permiso denegado

Para ejecutar un script, el archivo debe tener un conjunto de bits de permiso ejecutable .

Para comprender completamente los permisos de archivos de Linux, puede estudiar la documentación del chmod dominio. chmod, una abreviatura de modo de cambio , es el comando que se utiliza para cambiar la configuración de permisos de un archivo.

Para leer la documentación de chmod para su sistema local, ejecute man chmod o info chmod desde la línea de comandos. Una vez leído y comprendido, debería poder comprender el resultado de ejecutar...

ls -l foo.sh

... que enumerará los permisos de LECTURA, ESCRITURA y EJECUCIÓN para el propietario del archivo, el propietario del grupo y todos los demás que no sean el propietario del archivo o un miembro del grupo al que pertenece el archivo (a veces se hace referencia a ese último grupo de permisos como "mundo" u "otro")

Aquí hay un resumen de cómo solucionar el error de permiso denegado en tu caso.

$ ls -l foo.sh                    # Check file permissions of foo
-rw-r--r-- 1 rkielty users 0 2012-10-21 14:47 foo.sh 
    ^^^ 
 ^^^ | ^^^   ^^^^^^^ ^^^^^
  |  |  |       |       | 
Owner| World    |       |
     |          |    Name of
   Group        |     Group
             Name of 
              Owner 

El propietario tiene acceso de lectura y escritura rw pero el - indica que falta el permiso ejecutable

El chmod el comando soluciona eso. (El grupo y otros solo tienen permisos de lectura establecidos en el archivo, no pueden escribir en él ni ejecutarlo)

$ chmod +x foo.sh               # The owner can set the executable permission on foo.sh
$ ls -l foo.sh                  # Now we see an x after the rw 
-rwxr-xr-x 1 rkielty users 0 2012-10-21 14:47 foo.sh
   ^  ^  ^

foo.sh ahora es ejecutable en lo que respecta a Linux.

Usar sudo da como resultado Comando no encontrado

Cuando ejecuta un comando usando sudo lo está ejecutando efectivamente como superusuario o root.

La razón por la que el usuario raíz no encuentra su comando es probablemente que el PATH La variable de entorno para root no incluye el directorio donde foo.sh se encuentra . Por lo tanto, el comando no se encuentra.

La variable de entorno PATH contiene una lista de directorios en los que se buscan comandos. Cada usuario establece su propia variable PATH según sus necesidades. Para ver qué está configurado para ejecutar

env | grep ^PATH

Aquí hay algunos resultados de muestra de ejecutar el env anterior Comando primero como usuario ordinario y luego como usuario root usando sudo

[email protected]:~$ env | grep ^PATH
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/games

[email protected]:~$ sudo env | grep ^PATH
[sudo] password for rkielty: 
PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin:/usr/X11R6/bin

Tenga en cuenta que, aunque similares, en este caso los directorios contenidos en la RUTA del usuario sin privilegios (rkielty) y el superusuario no son los mismos .

El directorio donde foo.sh resides no está presente en la variable PATH del usuario raíz, por lo tanto, el comando no encontrado error.


Las otras soluciones que he visto aquí hasta ahora se basan en algunas definiciones del sistema, pero de hecho es posible tener sudo usa el PATH actual (con el env comando) y/o el resto del entorno (con el -E opción) simplemente invocándolo bien:

sudo -E env "PATH=$PATH" <command> [arguments]

De hecho, uno puede convertirlo en un alias:

alias mysudo='sudo -E env "PATH=$PATH"'

(También es posible nombrar el propio alias sudo , reemplazando el sudo original .)


Linux
  1. Sudo:Nocorrect:¿Comando no encontrado?

  2. ¿Comando alternativo de actualización no encontrado?

  3. Sudo:¿Comando no encontrado?

  4. visudo:comando no encontrado

  5. sudoedit:comando no encontrado

sudo:apt-add-repository:¿comando no encontrado?

id:comando no encontrado

w:comando no encontrado

df:comando no encontrado

du:comando no encontrado

sudo:npm:comando no encontrado