Su

查看會話是否在 su 下執行

  • November 7, 2011

我正在嘗試檢查目前的 shell 會話是否在su登錄會話中執行。

測試這種情況的最佳方法是什麼?

查看logname命令。logname 將列印 utmp 日誌提供的登錄到控制終端的使用者的使用者名。

tk-mbp:~ tkennedy$ id -g -rn
staff
tk-mbp:~ tkennedy$ id -u -rn
tkennedy
tk-mbp:~ tkennedy$ logname
tkennedy
tk-mbp:~ tkennedy$ su -
Password:
tk-mbp:~ root# id -g -rn
wheel
tk-mbp:~ root# id -u -rn
root
tk-mbp:~ root# logname
tkennedy

這個例子如果來自 Mac OS X,所以id命令的使用可能與其他作業系統不同,但是,logname 的使用在 Mac OS X、Linux 和 Solaris 之間是一致的,這些都是我晚上可以測試的所有作業系統和。

通過使用 logname,您可以假設如果id命令返回使用者與返回的使用者不同logname,則目前 shell 會話正在 su、sudo 或其他允許在貝殼。

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