我正在关注Ubuntu sudoers 教程。
这是我的确切/etc/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
并得到您想要的结果。