以另一个用户 RHEL8 身份运行 wall 命令

以另一个用户 RHEL8 身份运行 wall 命令

如何以 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在一个可以工作的系统上使用:-)

相关内容