自己的笔记本,向来都是用sudo halt关机的。但问题是我也是服务器的管理员,结果我这样关掉服务器2次了。第一次犯了这个错之后,我在/etc/sudoers里面加了:
代码: 全选
roylez ALL=(ALL)ALL
roylez ALL=!/sbin/halt,!/sbin/shutdown,!/sbin/reboot
大家有什么办法吗?
正确的sudoers语法,zsh的preexec()函数,或者是其他的都可以。
没有其他办法之前,我打算以后再也不用手敲命令关机了。
代码: 全选
roylez ALL=(ALL)ALL
roylez ALL=!/sbin/halt,!/sbin/shutdown,!/sbin/reboot
代码: 全选
echo 'alias halt="echo do-you-really-want-to-halt?-use-/sbin/halt-to-halt"' >> ~/.bashrc
可以的.也可以在 alias 里面写个if,判断一下输入.hellojinjie 写了:出馊主意我在行alias 可不可以覆盖命令的?代码: 全选
echo 'alias halt="echo do-you-really-want-to-halt?-use-/sbin/halt-to-halt"' >> ~/.bashrc
hellojinjie 写了:出馊主意我在行alias 可不可以覆盖命令的?代码: 全选
echo 'alias halt="echo do-you-really-want-to-halt?-use-/sbin/halt-to-halt"' >> ~/.bashrc
果然是馊主意……roylez@Lancelot> halt ~
zsh: no matches found: do-you-really-want-to-halt?-use-/sbin/halt-to-halt
roylez@Lancelot> sudo halt
....//屏幕黑掉了........ ~
呵呵,呼略了一点,sudo以后,当前用户的alias无效的...roylez 写了:hellojinjie 写了:出馊主意我在行alias 可不可以覆盖命令的?代码: 全选
echo 'alias halt="echo do-you-really-want-to-halt?-use-/sbin/halt-to-halt"' >> ~/.bashrc
果然是馊主意……roylez@Lancelot> halt ~
zsh: no matches found: do-you-really-want-to-halt?-use-/sbin/halt-to-halt
roylez@Lancelot> sudo halt
....//屏幕黑掉了........ ~
代码: 全选
sudo echo 'alias halt="echo do-you-really-want-to-halt?-use-/sbin/halt-to-halt"' >> ~/.bashrc
代码: 全选
roylez ALL=(ALL)ALL,!/sbin/shutdown,...
因为我不是太喜欢改默认安装的bin里面的东西。sudoer的问题找到了,因为服务器上面的halt不在/sbin而是/usr/bin,orz。aBiNg 写了:不想用就改个名就是了。
sudoers格式的问题,估计不是分两行。这样先在本本上试试,路径自己看:个人本子,直接suid,用什么sudo关机啊,金。代码: 全选
roylez ALL=(ALL)ALL,!/sbin/shutdown,...