如何以 root(或任何其他用户)身份发送墙消息并且它无法识别原始用户?
看看下面的内容,我希望 wall 显示来自 root 的消息,但它仍然显示 admin1,我错过了什么?
我尝试过各种 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
获取消息的用户名,并getpwuid
仅在getlogin
调用失败时回退(请参阅这里)。
getlogin
回报登录进程控制终端的用户名(从getlogin 联机帮助页)并且su
仅运行用户和组 ID 0 的 shell,即使su -
它不是“登录 shell”,因此它不会更改以下结果getlogin
:将 shell 作为登录 shell 启动,环境类似于真实登录(从苏联机帮助页)。
getpwuid(getuid())
getlogin
实际上返回“正确”的用户,但仅在调用失败时才会调用。
因此,要wall
“从 root 开始”,您实际上需要在 TTY 上以 root 身份登录。您还应该能够使用该login
命令登录,但这似乎对我从 Fedora 上的终端不起作用。
编辑:不确定我的 Fedora 中出了什么问题,login
在 Ubuntu VM 中是否按预期工作:
vtrefny@ubuntu:~$ sudo login
ubuntu login: root
Password:
Welcome to Ubuntu 20.04.1 LTS (GNU/Linux 5.4.0-58-generic x86_64)
...
root@ubuntu:~# wall "aaaa"
Broadcast message from root@ubuntu (pts/0) (Fri Jan 8 21:57:39 2021):
aaaa
所以答案是login
在一个可以工作的系统上使用:-)