[英]Confused on sudo vs su and running scripts
當我執行sudo su - john
john
無需輸入密碼即可成為用戶john
。
但是當我這樣做時: sudo su - john /usr/share/script_to_run.pl
我被要求輸入密碼。 sudo -u john /usr/share/script_to_run.pl
為什么? 我在這里做錯了什么?
現在,首先, -
表示您需要登錄shell。 第一條語句表示您希望以root用戶身份(因此為sudo
)在您以john
登錄時顯示。 在某處已配置為您當前登錄的用戶有權在不使用密碼的情況下執行sudo。
在第一個實例中發生的事情是,您執行一個命令su - john
(意思是“以john
登錄”),並且您以root身份執行(因為您先放置了sudo
)。您當前的用戶擁有sudo-without-password-rights ,root有權成為任何用戶。
第二次嘗試是錯誤的。 您不能以這種方式使用su
執行命令,並且當您希望su執行單個命令時,我認為沒有理由將其設為登錄shell。
在第三個選項中,您(作為當前登錄用戶)希望“成為” john
的一個命令。 為此,您將需要john
的密碼。 (但是,以root
身份執行此操作時,則不需要密碼。)
為了使其正常工作,您可以嘗試
sudo su --command="/usr/share/script_to_run.pl" john
甚至看起來更奇特
sudo sudo -u john /usr/share/script_to_run.pl
“ sudo”旨在提供“ su”的所有功能,但不要求他們使用其他用戶的密碼。 您需要的答案在/ etc / sudoers文件中,可使用“ sudo visudo”命令進行編輯。 在這里您會發現您可以使您的用戶不需要密碼:
cratylus ALL=(ALL) NOPASSWD: ALL
從那里提交查詢
sudo -u cratylus the statement
注意:請勿引用該語句-您只能對“ su -c”命令執行此操作。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.