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