Как отправить сообщение на стену от имени пользователя 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.)