2012-04-22 62 views

回答

16

sudo提供一些環境變量,以幫助您正是這種情況:

SUDO_UID  Set to the user ID of the user who invoked 
        sudo 

    SUDO_USER  Set to the login of the user who invoked sudo 

steveayre指出在評論中,用戶可以在某些情況下設置這些環境變量;該sudo(8)手冊頁包括部分:

The sudoers policy subjects variables 
passed on the command line to the same restrictions as normal 
environment variables with one important exception. If the 
setenv option is set in sudoers, the command to be run has the 
SETENV tag set or the command matched is ALL, the user may set 
variables that would otherwise be forbidden. See sudoers(5) 
for more information. 

所以一定不要授予ALL命令給用戶時,你需要依靠此功能。

+1

我真的很討厭使用環境變量,有沒有另一種方式? (我討厭使用它們的主要原因是因爲它們不可靠:從安全POV或兼容性POV) – chacham15 2012-04-22 22:48:02

+1

環境變量應該是安全可信的 - 您必須完全信任'sudo'才能以此方式使用它。任何針對'sudo'的攻擊都允許信任度較低的用戶使用修改後的環境變量執行程序,這將會引起全球數十個安全團隊的關注,以解決該缺陷(或者在無法修復的情況下移除該功能)。至於兼容性,這比我剛想到的其他選項更具可移植性 - 分開回答自己的意見。這可能比編寫你自己的setuid-root程序更安全。 – sarnold 2012-04-22 23:02:51

+0

我所指的安全問題來自系統上運行的其他程序或者可以修改環境變量的插件代碼。但是看到另一個解決方案如何工作,我可能最終會在程序啓動時自行緩存變量(所以希望在此之前沒有人會修改它)。 – chacham15 2012-04-22 23:12:59

3

審計系統提供的特定於Linux的audit_getloginuid()功能可能有幫助;由於pam_loginuid(8)僅針對「主要」守護進程(sshd,login,gdm等)進行安裝,因此執行sudo(8)時,審計uid將保持不變。

這將需要一點點配置;添加:

session required  pam_loginuid.so 

/etc/pam.d/sshd文件 - 無論和其他服務,你讓你的用戶使用。

確保pam_loginuid.so沒有加載到/etc/pam.d/sudo配置文件中。

+0

好主意,但它不起作用:'audit_getloginuid()'返回-1。 – chacham15 2012-04-22 23:06:34

+0

啊,愚蠢的我,假設它已經配置好了;我的Ubuntu 11.04沒有默認加載'pam_loginuid'。我編輯了我的帖子以包含一行加載'sshd'的'pam_loginuid'模塊 - 如果您希望它在GUI,控制檯或其他地方工作,則必須在相應的服務中加載PAM模塊。 – sarnold 2012-04-22 23:17:13

2

你有兩個不錯的選擇......

  1. 信託須藤,只是使用它的環境
  2. 讓程序setuid-上執行,然後geteuid等,將工作得很好

更新:

The setuid bit是在文件模式下訪問權限標誌,使得程序以可執行文件所有者的能力運行。這就是sudo(1)能夠以root身份運行的東西... sudo程序本身具有此模式。

$ ls -l /usr/bin/sudo 
-r-s--x--x 1 root wheel 272384 Jun 22 2009 /usr/bin/sudo* 

製作節目setuid root的一個可能:

$ chown root a.out 
$ chmod +s a.out 

不用說,setuid root的程序應該濃墨重彩。如果您只需要訪問受保護的目錄或文件,則可以將setuid設置爲權限較低的用戶。

+0

'setuid-on-execution'你能解釋一下嗎? – chacham15 2012-04-22 23:32:23

+0

好的,請參閱更新... – DigitalRoss 2012-04-23 00:39:52

相關問題