[救命]如何禁止一些危险的命令

sh/bash/dash/ksh/zsh等Shell脚本
回复
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

[救命]如何禁止一些危险的命令

#1

帖子 roylez » 2008-12-02 7:23

我承认自己很蠢,一个错误犯了2次了。

自己的笔记本,向来都是用sudo halt关机的。但问题是我也是服务器的管理员,结果我这样关掉服务器2次了。第一次犯了这个错之后,我在/etc/sudoers里面加了:

代码: 全选

roylez ALL=(ALL)ALL
roylez ALL=!/sbin/halt,!/sbin/shutdown,!/sbin/reboot
结果这次还是给关机了。似乎没有造成什么损失,不过被他们骂是肯定的。

大家有什么办法吗?

正确的sudoers语法,zsh的preexec()函数,或者是其他的都可以。

没有其他办法之前,我打算以后再也不用手敲命令关机了。
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

Re: [救命]如何禁止一些危险的命令

#2

帖子 roylez » 2008-12-02 8:03

服务器上的halt和reboot居然在/usr/bin,我分特了。
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
头像
冲浪板
论坛版主
帖子: 7513
注册时间: 2007-05-06 8:19

Re: [救命]如何禁止一些危险的命令

#3

帖子 冲浪板 » 2008-12-02 8:18

换个命令,shutdown,可以发通知给登陆的人
xyywll
帖子: 338
注册时间: 2008-05-24 1:24

Re: [救命]如何禁止一些危险的命令

#4

帖子 xyywll » 2008-12-02 8:41

好像一般用 SELinux 做这个事~
如果努力的目的是为了超越他人,那么我们永远成功不了
大道是平的,我们该做的是让自己快乐,同时带给他人快乐
好好涵养自己的性格
才华是刀刃,辛苦是磨刀石
多食果蔬,健康长寿;少吃不吃鱼肉,珍爱它类生命,远离自身疾病
头像
eexpress
帖子: 58428
注册时间: 2005-08-14 21:55
来自: 长沙

Re: [救命]如何禁止一些危险的命令

#5

帖子 eexpress » 2008-12-02 8:48

不遵循系统规则的家伙。这已经不是简单禁止命令的事情了。否则,有个文件禁止的。球猫知道。异类的,我才不搞。
● 鸣学
头像
xhy
帖子: 3916
注册时间: 2005-12-28 1:16
系统: Ubuntu 12.10 X64
来自: 火星

Re: [救命]如何禁止一些危险的命令

#6

帖子 xhy » 2008-12-02 8:54

修改那几个关机程序的源码 加上确认机制
目前负债150多万
头像
hellojinjie
帖子: 1150
注册时间: 2007-09-14 21:03
来自: 浙江

Re: [救命]如何禁止一些危险的命令

#7

帖子 hellojinjie » 2008-12-02 11:04

出馊主意我在行

代码: 全选

echo 'alias halt="echo do-you-really-want-to-halt?-use-/sbin/halt-to-halt"' >> ~/.bashrc
alias 可不可以覆盖命令的?
Say hello to everyday!
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: [救命]如何禁止一些危险的命令

#8

帖子 bones7456 » 2008-12-02 11:12

hellojinjie 写了:出馊主意我在行

代码: 全选

echo 'alias halt="echo do-you-really-want-to-halt?-use-/sbin/halt-to-halt"' >> ~/.bashrc
alias 可不可以覆盖命令的?
可以的.也可以在 alias 里面写个if,判断一下输入.
关注我的blog: ε==3
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

Re: [救命]如何禁止一些危险的命令

#9

帖子 roylez » 2008-12-02 11:58

hellojinjie 写了:出馊主意我在行

代码: 全选

echo 'alias halt="echo do-you-really-want-to-halt?-use-/sbin/halt-to-halt"' >> ~/.bashrc
alias 可不可以覆盖命令的?
roylez@Lancelot> halt ~
zsh: no matches found: do-you-really-want-to-halt?-use-/sbin/halt-to-halt
roylez@Lancelot> sudo halt
....//屏幕黑掉了........ ~
果然是馊主意……
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
头像
bones7456
帖子: 8495
注册时间: 2006-04-12 20:05
来自: 杭州
联系:

Re: [救命]如何禁止一些危险的命令

#10

帖子 bones7456 » 2008-12-02 12:29

roylez 写了:
hellojinjie 写了:出馊主意我在行

代码: 全选

echo 'alias halt="echo do-you-really-want-to-halt?-use-/sbin/halt-to-halt"' >> ~/.bashrc
alias 可不可以覆盖命令的?
roylez@Lancelot> halt ~
zsh: no matches found: do-you-really-want-to-halt?-use-/sbin/halt-to-halt
roylez@Lancelot> sudo halt
....//屏幕黑掉了........ ~
果然是馊主意……
呵呵,呼略了一点,sudo以后,当前用户的alias无效的...

LZ还是把halt挪个地方,用个带提示的脚本替代halt吧.
关注我的blog: ε==3
头像
hellojinjie
帖子: 1150
注册时间: 2007-09-14 21:03
来自: 浙江

Re: [救命]如何禁止一些危险的命令

#11

帖子 hellojinjie » 2008-12-02 12:38

代码: 全选

sudo echo 'alias halt="echo do-you-really-want-to-halt?-use-/sbin/halt-to-halt"' >> ~/.bashrc
为什么加了sudo后 不是加到/root/.bashrc ,而是加到用户的配置文件中

sudo不能作用于 从定向的吗
Say hello to everyday!
aBiNg
帖子: 1331
注册时间: 2006-07-09 12:22
来自: 南京

Re: [救命]如何禁止一些危险的命令

#12

帖子 aBiNg » 2008-12-02 13:18

不想用就改个名就是了。

sudoers格式的问题,估计不是分两行。这样先在本本上试试,路径自己看:

代码: 全选

roylez ALL=(ALL)ALL,!/sbin/shutdown,...
个人本子,直接suid,用什么sudo关机啊,金。
头像
roylez
帖子: 1928
注册时间: 2005-10-04 10:59
来自: 上海

Re: [救命]如何禁止一些危险的命令

#13

帖子 roylez » 2008-12-02 16:02

aBiNg 写了:不想用就改个名就是了。

sudoers格式的问题,估计不是分两行。这样先在本本上试试,路径自己看:

代码: 全选

roylez ALL=(ALL)ALL,!/sbin/shutdown,...
个人本子,直接suid,用什么sudo关机啊,金。
因为我不是太喜欢改默认安装的bin里面的东西。sudoer的问题找到了,因为服务器上面的halt不在/sbin而是/usr/bin,orz。

总之,我现在定义了一个fluxbox的key chain来关机。应该比敲命令安全。
弄个dropbox空间来备份文件或者做私人代码服务器
配置:[url]git://github.com/roylez/dotfiles.git[/url]
主页:http://roylez.heroku.com
各种稀奇玩意儿:http://dooloo.info
回复