Linux (RHEL8) で別のユーザーとして wall コマンドを実行する方法

Linux (RHEL8) で別のユーザーとして wall コマンドを実行する方法

元のユーザーを識別せずに、ルート (または他のユーザー) としてウォール メッセージを送信するにはどうすればよいですか?

下を見ると壁にメッセージが表示されると予想されますルートからしかし、それはまだ表示されます管理者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);

man ページからgetlogin:

getlogin() は、プロセスの制御端末にログインしているユーザーの名前を含む文字列へのポインターを返します。この情報を特定できない場合は NULL ポインターを返します。

...

これらの関数を使用すると、プログラムで実行中のユーザー (cuserid()) またはこのセッションにログインしたユーザー (getlogin()) を確実に識別できます。(set-user-ID プログラムが関係する場合は、これらが異なる場合があります。)

関連情報