sudo su“用戶名”與 su“用戶名”

sudo su“用戶名”與 su“用戶名”

請解釋一下,以下之間有什麼區別:須藤蘇“用戶名”蘇“用戶名”

哪個有更高的特權?如果我使用 root 登入須藤蘇“用戶名”,我是root用戶,只能執行一個指令?那麼有可能腳本的開頭部分運作正常,但其餘部分則不然?所以在這種情況下蘇“用戶名”是建議的,因為它有更高的權限?請解釋一下這兩個命令的區別,謝謝。

答案1

以下是差異:

  • su <someuser>為使用者啟動一個shell someuser。除非您是 root,否則系統會詢問您 的密碼someuser
  • su(沒有使用者名稱)為使用者啟動一個 shell root(在詢問 root 密碼後)。
  • sudo詢問您的密碼並(假設您有 sudo 權限)以 root 權限執行命令(sudo reboot詢問您的密碼並重新啟動電腦)。
  • sudo su <somesuer>su以 root 權限執行。所以它不會詢問someuser的密碼。然而它會要求你的密碼來驗證您的 sudo 權限。之後它將啟動一個shell對於使用者 someuser

在特權方面sudo su <someuser>,對於由或 由打開的外殼沒有區別su <someuser>。這不是這是一個安全性問題,因為 shell 進程無法升級到父進程的權限。

如果您查看進程樹,您會發現差異。sudo su <someuser>顯示(假設是 bash):

+───bash───su───bash

同時su <someuser>顯示:

+───bash───sudo───su───bash

您的下一個問題可能是如何在不需要使用者輸入的無人值守腳本中傳遞密碼。我認為有兩種選擇:

  • 從 cron(或其任何變體)運行腳本並以 root 身份運行
  • 從您自己的帳戶運行腳本並使用 sudo 的 -S 選項,如下所示:echo <yourpassword> | sudo -S su -l <someuser>甚至更好:echo <yourpassword> | sudo -S su -l <someuser> -c '<somecommand>'。確保該腳本只有您自己可讀,因為您的密碼就在其中。更間接的是,您可以將密碼儲存在文件中並將其添加到 sudo。那你的腳本就可以讀取,但是你的密碼檔案就不能讀取。

相關內容