免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
楼主: 独孤九贱
打印 上一主题 下一主题

请教一个Shell配置方面的问题 [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2006-02-16 09:52 |显示全部楼层 |倒序浏览
我想让我的系统所有非root的登录用户,进入系统后,只能运行某几个指定的命令,什么目录、文件、其它非指定命令,都不能访问——也就是感觉这个系统除了这几个命令,什么也没有,应该怎么来配置呢?请教……

论坛徽章:
0
2 [报告]
发表于 2006-02-16 10:00 |显示全部楼层
原帖由 platinum 于 2006-2-16 09:56 发表
我给你一个好的 idea,但我实现不了,我相信九贱兄应该不成问题
自己用 c 写一个程序,伪造一个 shell,然后等待用户输入
每个参数用空格来分开,判断 argv[0] 是否是你的几个命令中的一个
如果不是的话就提示 ...


不瞒你说,记得《Unix环境高级编程》开篇第一章就有一个例子吗?其思想就是你说这种,我当时就想过,但是这样一来,工作量又大了,而且考虑的东西又多了些,所以我想能不能先找现成的方法,实在再不到,再走这条路……

原帖由 latteye 于 2006-2-16 09:56 发表
修改bin下面文件权限............偶没试过


天啦,好多目录、文件、命令,工作量也太……

正在考虑一个方案,修改bash源码,在开头做一个命令列表,然后把用户输入同这个列表相比较,如果没有找到,就直接退出了……考虑ing

[ 本帖最后由 独孤九贱 于 2006-2-16 10:09 编辑 ]

论坛徽章:
0
3 [报告]
发表于 2006-02-16 11:43 |显示全部楼层

回复 11楼 platinum 的帖子

谢谢大家啦!

其实这种要求一点也不奇怪,就是要求非root用户登录后,只能运行当前目录的命令,而不访问其它任何资源!一般的嵌入式系统都要这种需求吧!

也就是bash -r那种类似效果了!

网上搜了大半天,没有个所以然,有说可以修改profile,达到这种目的,正在找详细配置说明!

论坛徽章:
0
4 [报告]
发表于 2006-02-16 11:47 |显示全部楼层
原帖由 platinum 于 2006-2-16 11:44 发表

如果做嵌入式的话,恐怕是要自己编程写 shell 程序的吧


应该不用了,正在看profile 的配置,希望有帮助;
另外,楼上的chinaux 那篇贴子,非常值得参考!

唯一担心的就是:
Some commands require library files under /usr/lib, so when such a command is copied, its libary file needs to be copied to the directory /home/xxx/lib as well.

想请问一下chinaux,如果程序被限制进来后,有什么办法不影响程序本身对原有根文件系统的库、文件等资源的访问呢?
比如,我配置了网卡,需要一个程序去修改/etc/sysconfig/network-scripts/XXX等诸如此类的……
我也是参考了下边这段话:

——————————————————————————————————————————————————
4.受限shell
  bash本身也有一定的限制功能,就是通过其(受限shell)restricted shell功能,所做的限制包括:
阻止用户改变目录和环境变量;
重定向输出;
使用绝对路径运行命令;
使用exec命令和其它一些操作。

如果bash是以rbash为名启动,或者使用-r选项运行,它就称为受限shell。受限shell能够使系统环境更好控制。如果启动受限shell,以下操作将被禁止:
使用cd命令切换目录;
设置或者取消SHELL、PATH、ENV或者BASH_ENV环境变量;
以绝对路径运行命令; 使用绝对路径指定的文件名作为内置命令.的参数;
使用绝对路径指定的文件名作为内置命令hash的参数;
在启动时,从shell环境导入函数的定义;
在启动时,解析SHELLOPTS的值; 使用>、>|、<>、>&、&>和>>等重定向操作重定向输出;
使用exec命令使其它的命令代替当前shell;
使用-f和-d选项打开/关闭内置命令;
对内置命令使用-p选项;
关闭受限模式。

  下面我们实际试验一下:
#aduser nixe0n
#passwd nixe0n
#ln -s /bin/bash /bin/rbash
#echo "/bin/rbash">>/etc/shells
#chsh -s /bin/rbash nixe0n
#cd ~nixe0n
#su nixe0n
$
  然后,执行:   $cd /   就会出现以下错误:   rbash: cd: restricted

[ 本帖最后由 独孤九贱 于 2006-2-16 12:30 编辑 ]

论坛徽章:
0
5 [报告]
发表于 2006-02-16 19:58 |显示全部楼层
原帖由 colddawn 于 2006-2-16 16:20 发表
理论上讲selinux也可以实现,这个可以微调的灵活程度就非常好了,据称有个老外把一台机器root开放给外面,用selinux作限制,1年内保证了机器不倒。


试了N种办法,都没有满意,决定今晚赶工,自己写一个Shell……运行好了,改天把代码贴上来

论坛徽章:
0
6 [报告]
发表于 2006-02-17 09:26 |显示全部楼层
原帖由 chinaux 于 2006-2-16 20:56 发表



my suggestion of "sudo" + "rvi" doesn't work for you?


I'm in the mood of "郁闷".


不是的,我要感谢你的帮助,也学到了很多东西,但是因为我在嵌入式系统上,这样配置下来感觉工作量还不如写一个小的Shell程序来得方便,昨晚已经做出来一个啦,只是因为初到Linux下编程,对于终端操作,水平还有点XXXXX,不会捕捉键盘,这样比如按方向键命令补全,历史提示等功能还出不来,正在学习中!
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP