使用编辑器更改需要 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。)

相关内容