![有沒有辦法消除 Linux 中特定指令的 root 要求?如果是的話,怎麼會這樣呢?](https://rvso.com/image/1316781/%E6%9C%89%E6%B2%92%E6%9C%89%E8%BE%A6%E6%B3%95%E6%B6%88%E9%99%A4%20Linux%20%E4%B8%AD%E7%89%B9%E5%AE%9A%E6%8C%87%E4%BB%A4%E7%9A%84%20root%20%E8%A6%81%E6%B1%82%EF%BC%9F%E5%A6%82%E6%9E%9C%E6%98%AF%E7%9A%84%E8%A9%B1%EF%BC%8C%E6%80%8E%E9%BA%BC%E6%9C%83%E9%80%99%E6%A8%A3%E5%91%A2%EF%BC%9F.png)
我正在使用 Ubuntu 12.04 LTS,並且我正在嘗試使特定命令
dhclient
不需要root權限。我做了一些研究,讓我相信我可以解鎖「su」用戶,這不需要root權限來進行任何操作,但擔心我會這樣破壞一些東西。
也許我在問兩個不同的問題:
所有不需要 root 權限的命令都駐留在我的作業系統中的哪裡?
我可以把這個命令移到那裡嗎?
任何方法都適用於我的情況,老實說,我什至不確定這是否是普通用戶的命令與其他命令的區別。
答案1
執行此操作的最佳方法是使用 sudo,它可以非常靈活地配置哪個使用者可以執行哪些命令。用於visudo
編輯/etc/sudoers
(切勿直接編輯此文件——如果您犯了錯誤,您將完全將自己鎖定在外)。以下條目將允許使用者無需密碼即可bob
運行。dhclient
bob ALL = (root) NOPASSWD: /sbin/dhclient
Bob 會運行sudo dhclient
when 來執行它。
答案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. 我可以把這個命令移到那裡嗎?
除了可能破壞某些東西之外,這絕對沒有任何影響。