Linux(RHEL8)에서 다른 사용자로 wall 명령을 실행하는 방법

Linux(RHEL8)에서 다른 사용자로 wall 명령을 실행하는 방법

루트(또는 다른 사용자)로 담벼락 메시지를 보내면 원래 사용자를 식별하지 못합니까?

아래를 보면 벽에 메시지가 표시될 것으로 예상됩니다.루트에서하지만 아직도 보여관리자1, 내가 무엇을 놓치고 있나요?

나는 -c를 사용하여 tmux, runuser 명령을 보내기 위해 다양한 sudo -i, -s를 시도했지만 항상 동일한 결과를 얻었습니다. 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 프로그램이 관련된 경우에는 다를 수 있습니다.)

관련 정보