루트(또는 다른 사용자)로 담벼락 메시지를 보내면 원래 사용자를 식별하지 못합니까?
아래를 보면 벽에 메시지가 표시될 것으로 예상됩니다.루트에서하지만 아직도 보여관리자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 프로그램이 관련된 경우에는 다를 수 있습니다.)