Linux

“id -r”命令的正確語法

  • June 10, 2021

我正在嘗試查看是否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是否要列印出我想要的東西,主要是因為我根本不知道如何讓它列印出任何東西。

-r必須與另一個選項一起使用。例如:

$ id -Gr
1000 4 24 27 30 46 109 124

引用手冊頁:

-r, --real
print the real ID instead of  the  effective  ID,  with -ugG

該程序和文件偏離了標準做法:

如果-ugG實際上意味著-u|g|G[modifier](顯然它確實如此),那麼它應該以這種方式記錄。作者似乎不認為值得付出努力。然而,當使用者做同樣的事情時(正如戴維斯先生相當合理地嘗試過的那樣):

-ru,一個合法的、直覺的假設,返回一個錯誤。

關於這個提示:

stat -c "%U" $(tty)

可能會有助於提及它是特定於外殼的。

引用自:https://unix.stackexchange.com/questions/74307