Cómo ejecutar el comando wall como otro usuario en Linux (RHEL8)

Cómo ejecutar el comando wall como otro usuario en Linux (RHEL8)

¿Cómo envío un mensaje en el muro como root (o cualquier otro usuario) y no identifica al usuario original?

Mirando lo siguiente, hubiera esperado que el muro mostrara un mensajedesde la raízpero todavía se muestraadministrador1, ¿Qué me estoy perdiendo?

Probé varios sudo -i, -s, usando -c para enviar el comando, tmux, runuser pero siempre obtuve el mismo resultado. ¿Es una configuración global en sudoers o algo más?

Para ponerlo en contexto, ¡esta fue una pregunta de una prueba que no pude descifrar y no me dieron una respuesta!

[admin1@RHELPOC ~]$ sudo su -
[root@RHELPOC ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@RHELPOC ~]# wall "whoisthis"

Broadcast message from admin1@RHELPOC (pts/0) (Fri Jan  8 13:58:40 2021):
whoisthis

Respuesta1

Esto se debe a que wallse utiliza getlogin()para encontrar el nombre del usuario.

if (!(whom = getlogin()) || !*whom)
            whom = (pw = getpwuid(getuid())) ? pw->pw_name : "???";
        if (!whom) {
            whom = "someone";
            warn(_("cannot get passwd uid"));
        }

Y luego:

snprintf(lbuf, line_max,
                _("Broadcast message from %s@%s (%s) (%s):"),
                whom, hostname, where, date);

Desde la getloginpágina de manual:

getlogin() devuelve un puntero a una cadena que contiene el nombre del usuario que inició sesión en la terminal de control del proceso, o un puntero NULL si esta información no se puede determinar.

...

Estas funciones permiten que su programa identifique positivamente al usuario que está ejecutando (cuserid()) o al usuario que inició sesión (getlogin()). (Estos pueden diferir cuando se trata de programas de configuración de ID de usuario).

información relacionada