使用編輯器更改需要 sudo 權限的文件

使用編輯器更改需要 sudo 權限的文件

我想使用 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

它能做什麼:

  1. chown將所有者設定為 root
  2. chmod u+s賦予執行該文件的任何人與所有者相同的權限(執行)。

由於我們已將所有者設定為 root,因此有效執行所有者將成為 root。

這可能不是您尋求的答案,因為它將授予所有用戶有效的根編輯器。

正如 marco 提到的,sudoedit 可能更正確,安全。

答案3

一個相對乾淨的方法是使用給定檔案的使用者 ID 權限存取控制列表。您可能需要安裝該acl軟體包才能獲得命令getfaclsetfacl.然後對於使用者“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。)

相關內容