我有一個以root權限運行的腳本,並且我有一個命令,不能使用腳本執行的那些權限運行。我需要一種方法來運行沒有這些權限的命令。在根shell中運行沒有權限的命令
從我已經能夠確定,我可以運行一個命令作爲另一個用戶使用像sudo這樣的工具。但是這樣做需要掌握用戶名(或ID)的知識。這也引發了一兩個安全問題。
我的問題是:是否可以簡單地以root身份運行該命令,但沒有提升權限?如果沒有,是否有適合的選擇?
我有一個以root權限運行的腳本,並且我有一個命令,不能使用腳本執行的那些權限運行。我需要一種方法來運行沒有這些權限的命令。在根shell中運行沒有權限的命令
從我已經能夠確定,我可以運行一個命令作爲另一個用戶使用像sudo這樣的工具。但是這樣做需要掌握用戶名(或ID)的知識。這也引發了一兩個安全問題。
我的問題是:是否可以簡單地以root身份運行該命令,但沒有提升權限?如果沒有,是否有適合的選擇?
你的確可以使用sudo
與降低特權像這樣運行命令:
sudo -u USERNAME COMMAND
或更好
sudo -u USERNAME -g GROUPNAME COMMAND
注意,這將需要在sudoers
文件正確的條目。
如果您不知道用戶的名稱,並希望僅使用某些降低的權限運行命令,則可以使用用戶nobody
和組nobody
或nogroup
。
su <non-root-user> -c 'some_command'
我的問題是:是否可以簡單地以root身份運行該命令,但是 沒有提升的權限?
否。根帳戶的全部要點是它具有完整的權限。實際上,帳戶的任何帳戶都是它擁有的權限。沒有root權限的情況下運行的方式是作爲root用戶以外的用戶運行。
如果不是,是否有適合的選擇?
查看其他答案。您必須從某個特定的非根帳戶運行命令,這意味着您必須知道某個其他帳戶的名稱(或數字UID)。
正如Adam Zalcman所說,nobody
帳戶可能是合適的。或者您可以閱讀/etc/passwd
或同等效果查找有效的帳戶(雖然以某些隨機真實用戶身份運行可能會導致問題)。
對於這個問題,既然你有root權限,你可以(暫時?)創建一個新賬戶用於運行該命令。雖然這可能是矯枉過正。
最簡單的解決方案就是找到一種方法來指定一個非root帳戶。
感謝您的詳細回覆,但「沒有人」是我一直在尋找的。 – seininn 2012-01-14 14:44:39
非常感謝。 「沒有人」正是我想要的。 – seininn 2012-01-14 14:40:27