linux下编程实现用户命令过滤功能

在我的server上有好多的用户,有些安全意识较差。所以我想编程实现用户输入的所有命令都能过滤后再执行,过滤掉一些比较危险的命令,比如说format之类的。
希望高人能给点建议。谢谢
需要多点积分的话就说一声。看清楚问题先
因为大家属于不同的团队,又必须使用root.所以逍遥鼠一世 的那个建议在我这里不合适。谢谢逍遥鼠一世 。
我的思路是写个程序在server上启个进程来动态的监视用户输入的命令。先过滤再交给shell去执行。
大家都是root用户而且有好多都是新员工
3ks 逍遥鼠一世 :这里你的回答比较好。
我现在就是想用程序来实现这个功能。
逍遥鼠一世:哥们能不能给个例子。看到请回复。把分给你谢谢。祝您工作愉快

你可以这样做:
(1)为Server的那些使用者建立单独的账户,例如:user01、user02....等等(可以给每个人建立一个单独的账户。当然,为了使系统中的账户不至于太多而导致难以管理,也可以按照他们所在的部门、项目组(或工作组)、或是其它分类方式去建立账户)。
(2)对每个账户下的$HOME/.profile文件或者是$HOME/.cshrc文件(视不同用户的SHELL来决定,例如:bsh和sh就是.profile,csh就是.cshrc),用
chown root:root ... (例如: chown root:root .cshrc)
命令将它们改成root用户及属组所有,只有root用户才可以更改它们。
(3)在每个用户的$HOME/.profile或是$HOME/.cshrc等shell环境配置文件中,将你认为是危险的命令做以下的转换:

alias 命令名='echo 管理员不运行执行该命令'

例如: alias format='echo 管理员不运行执行该命令'

这样这些用户就无法执行你限定的命令,执行之后都显示“管理员不运行执行该命令”。

如果觉得改.profile或是.cshrc文件不保险,还可以在每个用户的$HOME下建立.login文件,也用上述的方法将它改成root用户属组的,在里面加入

alias 命令名='echo 管理员不运行执行该命令'

效果更好。

----看到了你的问题追加。我觉得要是大家都只能使用root账户,那么这个系统的规划是否合理?假如一定都要使用root账户的话,对于每个用户在键入命令的过程中,你很难去捕获他们都正在敲入什么命令。只有等他们在命令行上都输入完了,回车确认之后才可能去发现他们执行的进程。假如真有这样的一个监控程序在你的系统中,就算是监控到了,那么那些进程已经开始运行了,对很多人来说已经是无法收拾了,只有及时的杀掉那些进程了。建议你把敏感的命令给rename了算了,例如mv format frmt

----呵呵,你也够执着的。既然一定要写个程序,那我就说说大概的思路吧!具体的程序代码你可以自己去写,这样也有些成就感。:)
不过我能保证,就算采用这样的做法也不会取得什么好的效果,尤其是大家都使用root账户。我用unix类操作系统近十年,听我一句劝告不会有什么害处啊!

程序思路:
(1)定义你的敏感命令列表(可以赋值给一个字符串数组)。
(2)获取你本人在系统中当前的tty编号,以及你自己的IP地址(你是从哪个IP地址发起的telnet?如果你本人使用Console,也需要如此)。
(3)按照你的敏感命令列表,循环检测除了自己的tty及IP地址之外的,其它tty及IP地址发起的敏感命令进程,如果发现,立即予以kill -9。并向相应的tty发送警告信息。

注意:这个循环是无限循环;这个程序是一个守护进程(Daemon)。除非接到进程中止信号,否则它将一直运行。这样做的缺点是,循环检测并杀掉那些敏感进程的过程并不能确保实时性,在发现相应的进程时,那些进程可能已经运行了一小段时间,尽管这段时间非常非常的短,但是也可能已经产生了效力甚至是危害。不过,这也是没办法的事情了。谁要你非要这样呢?
温馨提示:答案为网友推荐,仅供参考
第1个回答  2008-08-25
把一些危险的命令直接从服务器里面去掉,建立个备份目录,把不希望别人用的命令都放到备份目录里面去,自己要用再拿出来.
第2个回答  2008-08-25
如果别人有root权限,别人是非常方便的逃脱你的监视,无论你用任何方法。

如果使用者技术低一层,或者乐意接收监控,那么方法是有的--修改shell。比如sh、bash、csh等,你下载一份源程序,修改其保留命令日志的相关语句,默认是保存在用户$HOME下的.history等目录下,并且有条数限制。你修改为保存在你指定的地方,增加终端编号、时间等你需要的信息。
第3个回答  2008-08-25
晕... 你直接给拥护赋下权限不就得了...format 只有 root 能执行...别告诉我你给所有拥护都是 root 权限...
相似回答