로거 명령이 sudo에서 실행되는 경우에도 나를 사용자로 보고합니까?

로거 명령이 sudo에서 실행되는 경우에도 나를 사용자로 보고합니까?

줄이 있어요

녹음기 좋네요

내 스크립트에서. 다음 명령 중 하나를 사용하여 명령줄에서 실행할 때

./myscript.sh
sudo ./myscript.sh
sudo bash ./myscript.sh

로그에 적혀있어요

Oct 17 22:32:01 d40688 mysqlf: Ok

즉, 내 사용자 이름을 알고 있지만 내가 루트라고 생각하지 않습니다.

이 스크립트를 실행하면 /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

이미 합격다른 문서화되지 않은 인터페이스진행중.

관련 정보