我正在嘗試查看是否id -r
會列印登入系統的用戶的 UID 或用戶名,儘管有任何su
或sudo
。我有興趣這樣做,這樣我可以讓人們更負責並相應地自訂腳本功能(即:他們在腳本上發出 sudo 並從登入使用者的主目錄中提取資訊)。
我意識到sudo
設置SUDO_USER
,但我不想依賴它,因為它是一個可以由用戶修改的變量,而且它只有發出最近 sudo 的用戶的用戶名(即:sudo -i ; sudo -iu randomUser ; echo $SUDO_USER
列印出「root」而不是實際用戶)。
手冊頁或我在網路上找到的內容似乎都沒有表明該命令的正確用法是什麼,並且明顯的排列不起作用:
[root@ditirlns03 ~]# id -r
id: cannot print only names or real IDs in default format
[root@ditirlns03 ~]# id -r jadavis6
id: cannot print only names or real IDs in default format
[root@ditirlns03 ~]# id -r root
id: cannot print only names or real IDs in default format
此時,我仍然不確定id -r
是否會列印我想要的內容,主要是因為我根本不知道如何讓它列印出任何內容。
答案1
-r
必須與另一個選項結合使用。例如:
$ id -Gr
1000 4 24 27 30 46 109 124
引用手冊頁:
-r, --real
print the real ID instead of the effective ID, with -ugG
答案2
該程序和文檔偏離了標準實踐:
如果-ugG
確實意味著-u|g|G[modifier]
(顯然確實如此),那麼應該以這種方式記錄。作者似乎不認為值得付出努力。然而,當用戶做同樣的事情時(戴維斯先生相當合理地嘗試過):
-ru
,一個合理的、直觀的假設,回傳一個錯誤。
關於這個提示:
stat -c "%U" $(tty)
可能有助於提到它是特定於 shell 的。
答案3
- 列印使用者 ID:
id -u
- 列印使用者名稱:
id -u -n
嘗試man id
更多地傾斜。