对 sudoers 的更改无效。遵循基本的 Ubuntu 教程

对 sudoers 的更改无效。遵循基本的 Ubuntu 教程

我正在关注Ubuntu sudoers 教程

这是我的确切/etc/sudoers文件(屏幕截图而不是代码块,因为格式混乱)。

sudoers文件

注意底部的几行应该为deployer用户提供关机和重启功能。 sudoers 文件的语法没有问题,保存起来也没有问题。

我已结束 ssh 会话并再次登录。

$ whoami => deployer $ reboot => reboot: Need to be root

可能是什么问题?

一些想法

  • 我尝试过重启(使用 sudo),但仍然没有效果
  • 我的 shell 是 ZSH
  • 我预计当我得到答案时我将会自责。

答案1

您正在使用的设置将允许您的用户运行sudo reboot 无需输入密码。虽然您始终需要使用它来运行它sudo,但您能得到的最好的结果是sudo某些命令无需密码。

这是由系统的工作方式决定的。例如,当您尝试reboot以普通用户身份运行时,您会收到以下消息:

$ reboot
reboot: must be superuser.

这与 无关sudo,有问题的命令只是检查您的用户 ID 是否为 1(超级用户),如果不是,它不会让您运行它。你可以设置您的系统让另一个用户作为用户 ID 1,但这只会更改用户名root,并且会毫无理由地带来很多麻烦(并且不会帮助您完成您正在尝试的事情)。

因此,除非你实际以用户 ID 为 1 的用户身份登录,否则你将总是必须使用才能运行特权命令。唯一的解决方法是在您的 shell 配置文件中sudo为其创建别名(或函数、脚本) (例如):reboot~/.bashrc

alias reboot='sudo reboot'

这样,由于您已设置shutdown为无密码/etc/sudoers,因此您将能够运行

$ reboot

并得到您想要的结果。

相关内容