我可以不使用 sudo 来编辑主机吗?

我可以不使用 sudo 来编辑主机吗?

目前,当我想编辑我的 hosts 文件时,我需要使用sudo nano /etc/hosts,我可以做些什么来“允许用户tom编辑 hosts 文件而不需要 sudo”?

答案1

你可以,但这不是个好主意。权限系统的全部意义在于防止非特权用户和攻击者执行诸如写入系统文件、运行恶意代码等操作。到目前为止,最好的做法就是在sudo需要编辑系统文件时继续使用。这是最佳实践,也是我们拥有sudo

我不推荐以下任何一种方法,但它们比可怕的方法更安全chmod 777。你可以例如,更改的组所有权/etc/hosts并赋予该组写权限:

sudo addgroup editors            #make a new group
sudo adduser $USER editors       #add yourself to it
sudo chown :editors /etc/hosts   #change the group ownership
sudo chmod 664 /etc/hosts        #give the group write permission

现在,您无需 即可编辑文件。或者,如果您有软件包(在 15.04 及更高版本中安装),sudo则可以使用 ACLacl

sudo setfacl -m $USER:rw /etc/hosts

但是,我再次强调,我不推荐这两种做法。只需使用 即可sudo

答案2

我不会调整任何系统相关文件的权限

你可以做的是制作一个基本的脚本

#!/bin/bash
sudo nano /etc/hosts

随意命名它,例如,edithosts.sh,然后将其放在主文件夹内的脚本文件夹中。

chmod 700 /path/to/script/file/edithosts.sh 这将防止未经授权读取或写入文件,因为 ss TripeHound 表示,该文件的内容现在以无需密码的 root 权限运行。

然后将以下行添加到/etc/sudoers

tom ALL = (root) NOPASSWD: /path/to/script/file/edithosts.sh 

这样你就sudo sh /path/to/script/file/edithosts.sh不用输入密码了

推荐的解决方案

正如@paul 在评论中指出的那样,sudoedit这可能是一个更好的解决方案。

tom ALL = (root) NOPASSWD: sudoedit /etc/hosts

因为这仅允许编辑/etc/hosts,并且不会让你运行提升的文本编辑器

相关内容