在 Unix 系统上,以非 root 身份编辑系统文件(如)的最佳做法是什么/etc/hosts
,而无需执行繁琐的 sudo+password?php.ini
我可以简单地将chown
这些文件提供给非 root 用户吗?或者是否有更好的方法使用组或其他方式?
答案1
sudo
是最好的、最正确的做法。如果你赋予用户帐户过多的管理权限(例如,将自己添加到组中root
),你就有可能意外地做出各种有害的事情。此外,恶意软件/木马可能会在你不知情的情况下利用你的权限来做坏事。只需将sudo
命令前的输入视为额外的检查 - “我真的要运行这个吗?”
您可以设置sudo
(应该已经这样了)等待指定的时间长度再再次询问您的密码,所以如果您同时执行一堆管理任务,则无需继续输入密码。
答案2
除了 MattDMo 的回答之外。如果重新输入密码让您感到困扰,您可以增加NOPASSWD
您的权限。这仍然需要您这样做sudo
(这样您就可以意识到您正在做的事情可能会造成危害),但不会让输入密码给您带来麻烦。
在 中/etc/sudoers
,您可以使用此行:
forthrin ALL=(ALL) NOPASSWD: ALL
答案3
另一个选项是打开一个新终端并切换到 root。根据系统的设置,您可以使用以下一种或多种方式执行此操作:
sudo su
sudo -i
su
一旦您成为用户,只需保持 thyat 终端打开,然后使用或或或任何您喜欢的方式root
从该终端编辑您想要的任何文件:emacs
vim
gedit
emacs /etc/hosts
答案4
sudo
就是你想要的。如前所述,您可以设置自定义超时时间,然后再要求输入密码,或者指定NOPASSWD:
也可以仅为特定用户组设置,命令如下:
%usergroup ALL=(ALL) NOPASSWD: /bin/vi
您可以通过指向运行的脚本将此命令限制到某个文件vi /etc/hosts
,但这将允许用户从内部打开其他文件或从(或类似命令)vi
进入 shell 。vi
:!sh