Как запустить команду wall от имени другого пользователя в Linux (RHEL8)

Как запустить команду wall от имени другого пользователя в Linux (RHEL8)

Как отправить сообщение на стену от имени пользователя root (или любого другого пользователя), чтобы оно не идентифицировало исходного пользователя?

Глядя на изображение ниже, я бы ожидал, что на стене будет отображаться сообщениеиз корняно это все еще показываетадмин1, что я упускаю?

Я пробовал различные sudo -i, -s, использование -c для отправки команды, tmux, runuser, но всегда один и тот же результат. Это глобальная настройка в sudoers или что-то еще?

Для контекста это был вопрос из теста, в котором я не смог разобраться и на который не получил ответа!

[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

решение1

Это происходит потому, что wallиспользуется getlogin()для поиска имени пользователя.

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

А потом:

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

Из getloginстраницы руководства:

getlogin() возвращает указатель на строку, содержащую имя пользователя, вошедшего в систему на управляющем терминале процесса, или указатель NULL, если эту информацию невозможно определить.

...

Эти функции позволяют вашей программе однозначно идентифицировать работающего пользователя (cuserid()) или пользователя, вошедшего в этот сеанс (getlogin()). (Они могут различаться, если задействованы программы set-user-ID.)

Связанный контент