No puedo acceder a algunos comandos cuando inicio sesión con un usuario no root (incluso después de "su root")

No puedo acceder a algunos comandos cuando inicio sesión con un usuario no root (incluso después de "su root")

Entonces, no entiendo qué está pasando aquí.

Configuré un servidor Debian 10.2 y lo configuré como lo hice antes con otros servidores. Todo funciona bien y, como es una máquina local y yo soy el único usuario, utilicé root para todo. Ahora quería desactivar el inicio de sesión raíz ssh.

Pero si uso un usuario no root para iniciar sesión a través de SSH, no puede encontrar comandos básicos como "servicio" o "reiniciar". (Bash: Servicio: Comando no encontrado).

Aún más extraño, ni siquiera puedo acceder a esas cosas cuando uso "su root". De hecho, soy el usuario root, pero todavía no puedo acceder ni encontrar esos comandos.

Cuando inicia sesión directamente con el usuario root, todo funciona como debería.

Respuesta1

La variable de entorno de su usuario PATHno contiene la ruta donde se encuentran estos archivos. Cuando usas su -, las variables de entorno de root se cargan en tu sesión. Ver man su:

   -, -l, --login
          Start the shell as a login shell with an environment similar
          to a real login:

             o      clears all the environment variables except TERM and
                    variables specified by --whitelist-environment

             o      initializes the environment variables HOME, SHELL,
                    USER, LOGNAME, and PATH

             o      changes to the target user's home directory

             o      sets argv[0] of the shell to '-' in order to make
                    the shell a login shell

Para entender mejor esto, veamos dónde está uno de estos binarios y comparemos la RUTA de root con la tuya:

  1. hacersu -
  2. hacer which service. Esto le indicará servicedesde dónde se cargaría el binario si ejecutara el comando service.
  3. hacer echo $PATH. Esto le mostrará la RUTA de root. Notará que el directorio donde servicese puede encontrar se enumera aquí.
  4. hacer exitpara volver a ser su usuario no root.
  5. hacer echo $PATH. Verás que el directorio que identificaste en el paso 2 no está aquí.

Esta es una configuración predeterminada normal en ciertos entornos/distros donde ciertos programas administrativos como service, fdisk, etc. se guardan en un directorio como /usr/sbino /sbin, y dichos directorios se mantienen fuera de las RUTAS de los usuarios normales.

información relacionada