行があります。
レコーダーはいいですね
私のスクリプトから。次のいずれかのコマンドを使用してコマンドラインから実行するとき
./myscript.sh
sudo ./myscript.sh
sudo bash ./myscript.sh
ログに書かれています。
Oct 17 22:32:01 d40688 mysqlf: Ok
つまり、私のユーザー名を知っていますが、私はrootだとは思いません。
このスクリプトを実行すると、/var/spool/cron/root
次のように書かれます。
Oct 17 22:32:01 d40688 root: Ok
つまり、私はルートだと思います。
コマンドラインで後者の実行をどのようにシミュレートできますか?
答え1
これはバグまたはマニュアルページエラーです。制御端末の uid または有効な uid を示します。したがって、geteuidを呼び出す必要がありますが、getlogin
端末の所有者を返すuidを呼び出します。選んでみてください。
答え2
その必要もありませんsudo
。
user$ logger -t root sudo sucks
それから
root# journalctl -n1 | cat
-- Journal begins at Mon 2021-09-13 04:01:40 UTC, ends at Sun 2021-10-17 20:15:43 UTC. --
Oct 17 20:15:43 diantre root[1441]: sudo sucks
logger(1)
マニュアルページによると:
-t, --tag tag
指定されたラベルを使用して記録する各行を表示します。デフォルトのラベルは次のとおりです。端末ログインユーザー名(または有効なユーザーIDに基づくユーザー名)
「ターミナルにログインしたユーザー」とは何ですか。ロガーはどのようにこれを判断しますか?
$ strace logger t
...
openat(AT_FDCWD, "/proc/self/loginuid", O_RDONLY) = 4
read(4, "2000", 12) = 4
close(4)
... = 0
すでに合格その他 文書化されていないインターフェース進行中。