有沒有辦法消除 Linux 中特定指令的 root 要求?如果是的話,怎麼會這樣呢?

有沒有辦法消除 Linux 中特定指令的 root 要求?如果是的話,怎麼會這樣呢?

我正在使用 Ubuntu 12.04 LTS,並且我正在嘗試使特定命令

dhclient

不需要root權限。我做了一些研究,讓我相信我可以解鎖「su」用戶,這不需要root權限來進行任何操作,但擔心我會這樣破壞一些東西。

也許我在問兩個不同的問題:

  1. 所有不需要 root 權限的命令都駐留在我的作業系統中的哪裡?

  2. 我可以把這個命令移到那裡嗎?

任何方法都適用於我的情況,老實說,我什至不確定這是否是普通用戶的命令與其他命令的區別。

答案1

執行此操作的最佳方法是使用 sudo,它可以非常靈活地配置哪個使用者可以執行哪些命令。用於visudo編輯/etc/sudoers(切勿直接編輯此文件——如果您犯了錯誤,您將完全將自己鎖定在外)。以下條目將允許使用者無需密碼即可bob運行。dhclient

bob ALL = (root) NOPASSWD: /sbin/dhclient

Bob 會運行sudo dhclientwhen 來執行它。

答案2

特定使用者能否成功執行程式(二進位或腳本)取決於兩件事:

  • 使用者需要對該文件的執行權限。

    這不是問題:ls -l表明任何用戶都可以執行/sbin/dhclient.

  • 使用者需要對程式存取的檔案具有讀取、寫入和/或執行權限。

    這部分非常非常棘手且危險,因為它可能涉及更改許多文件的權限。

有關更多信息,請參閱Chmod - 維基百科

使用 root 權限執行命令的正常方法是sudo。來自線上說明頁:

須藤允許被授權的使用者執行命令作為超級用戶或其他用戶,如蘇多爾斯文件。真實有效的 uid 和 gid 設定為與 passwd 檔案中指定的目標使用者相匹配,並且群組向量基於群組檔案初始化(除非-P已指定選項)。如果呼叫使用者是 root 或目標使用者與呼叫使用者相同,則不需要密碼。否則,須藤要求使用者預設使用密碼進行身份驗證(注意:在預設配置中,這是使用者的密碼,而不是 root 密碼)。一旦使用者通過身份驗證,時間戳就會更新,然後使用者可以在沒有密碼的情況下在短時間內使用 sudo(5 分鐘,除非在蘇多爾斯)。

您的具體情況的基本語法是:

sudo dhclient

關於您的其他問題:

1. 所有不需要root權限的指令都駐留在我的作業系統中的哪裡?

所有使用者的大多數二進位檔案都駐留在/bin,/usr/bin和內/usr/local/bin

大多數系統二進位(需要 root 權限)駐留在/sbin.

這只是一個經驗法則。您可以將二進位檔案放置在任何您想要的地方。

也可以看看:檔案系統層次結構標準

2. 我可以把這個命令移到那裡嗎?

除了可能破壞某些東西之外,這絕對沒有任何影響。

相關內容