簡體   English   中英

對sudo vs su和正在運行的腳本感到困惑

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM