我想使用 KomodoEdit 更改需要sudo
權限的檔案。不過,我無法啟動 KomodoEdit sudo
(無論出於何種原因)。我可以以某種方式授予 Komodo 編輯這些檔案的權限嗎(特別是我正在談論 apache2 檔案和/etc/hosts
)?
答案1
使用sudoedit <file>
。它會建立檔案的本機副本,使用使用者權限對其進行編輯,然後將其複製回原始位置。優點是編輯器以普通使用者身分運作。
若要指定與預設編輯器不同的編輯器,您可以EDITOR
暫時設定:
EDITOR=/usr/bin/someeditor sudoedit /etc/hosts
這需要sudo
安裝軟體包並將用戶添加到sudo
群組中。
答案2
理論上,您可以透過在 komodoedit 上設定 suid 位元並將其所有者更改為 root 來做到這一點。
sudo chown root:root /path/to/komodoedit
sudo chmod u+s /path/to/komodoedit
它能做什麼:
chown
將所有者設定為 rootchmod u+s
賦予執行該文件的任何人與所有者相同的權限(執行)。
由於我們已將所有者設定為 root,因此有效執行所有者將成為 root。
這可能不是您尋求的答案,因為它將授予所有用戶有效的根編輯器。
正如 marco 提到的,sudoedit 可能更正確,安全。
答案3
一個相對乾淨的方法是使用給定檔案的使用者 ID 權限存取控制列表。您可能需要安裝該acl
軟體包才能獲得命令getfacl
和setfacl
.然後對於使用者“myname”和文件,/etc/hosts
您可以發出命令:
sudo setfacl -m 'u:myname:rw' /etc/hosts
然後你就可以讀/寫這個文件了。當您ls -l
查看該檔案時,您將看到一個+
標誌,表明該檔案有一個 acl:
-rw-r--r--+ 1 root root 221 Nov 5 16:55 /etc/hosts
getfacl
您可以在文件上列出 acl 。稍後使用時刪除 acl
sudo setfacl -x 'u:myname' /etc/hosts
或setfacl -b
刪除所有 acl。 (您的檔案系統必須支援 acls。)