免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
12345下一页
最近访问板块 发新帖
查看: 15093 | 回复: 41
打印 上一主题 下一主题

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

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

论坛徽章:
0
2 [报告]
发表于 2006-02-16 09:56 |只看该作者
我给你一个好的 idea,但我实现不了,我相信九贱兄应该不成问题
自己用 c 写一个程序,伪造一个 shell,然后等待用户输入
每个参数用空格来分开,判断 argv[0] 是否是你的几个命令中的一个
如果不是的话就提示错误
如果是的话把从 argv[0] 到 argv[argc-1] 的东西都转交给 bash 去

修改 /etc/passwd,把里面 shell 的东西换成你自己的文件

努力,我觉得你没问题,我实现不了:)

论坛徽章:
0
3 [报告]
发表于 2006-02-16 09:56 |只看该作者
修改bin下面文件权限............偶没试过

论坛徽章:
0
4 [报告]
发表于 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
5 [报告]
发表于 2006-02-16 11:03 |只看该作者
It can be done by restricted shell + some special configuration, and I did so on a HP-UX system several years ago.


On a Linux system, it can be done as follows:

1. copy /bin/bash to /bin/rbash(restricted shell)
# cp -a /bin/bash /bin/rbash

2. create the user with its shell "/bin/rbash". e.g.:
# useradd -c "A Restricted User" -g users -d /home/xxx -s /bin/rbash xxx

3. create its home but owned by root
# rm -rf /home/xxx;  mkdir -m 555 /home/xxx

4. copy commands that the user needs to its home/bin
e.g,:
# mkdir -m 555 /home/xxx/bin
# cp -a /bin/ls /home/xxx/bin
# cp -a /usr/bin/passwd /home/xxx/bin

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.

5. restrict the user to /home/xxx/bin
# echo "export PATH=/home/xxx/bin" > /home/xxx/.bash_profile
# chmod 444 /home/xxx/.bash_profile

6. reset the account's password and release it to the end user
# passwd xxx


P.S. basic stuff

# ls -alR /home/xxx
/home/xxx:
total 16
dr-xr-xr-x    3 root     root         4096 Feb 16 13:22 .
drwxr-xr-x   19 root     root         4096 Feb 16 13:05 ..
-r--r--r--    1 root     root           26 Feb 16 13:10 .bash_profile
dr-xr-xr-x    2 root     root         4096 Feb 16 13:34 bin

/home/xxx/bin:
total 28
dr-xr-xr-x    2 root     root         4096 Feb 16 13:34 .
dr-xr-xr-x    3 root     root         4096 Feb 16 13:22 ..
-r-s--x--x    1 root     root        17700 Jun 26  2004 passwd

论坛徽章:
0
6 [报告]
发表于 2006-02-16 11:03 |只看该作者
原帖由 独孤九贱 于 2006-2-16 09:52 发表
我想让我的系统所有非root的登录用户,进入系统后,只能运行某几个指定的命令,什么目录、文件、其它非指定命令,都不能访问——也就是感觉这个系统除了这几个命令,什么也没有,应该怎么来配置呢?请教……


基本上這是很困難的,除非你能夠建立一個 chroot 過的小系統當作是使用者登入專屬環境。

若是真的要弄出一堆限制的話,比較好方式就是不要 ssh 這類開放登入權限,只開 ftp 這類項目服務就好。

而若你真的要這種很奇怪需求的話,有個東西叫做 lids,可以提供一堆配置規則能夠限制使用者是否可以存取檔案目錄。

http://www.lids.org/

不過這只是把問題弄得更難處理霸了。

==

论坛徽章:
0
7 [报告]
发表于 2006-02-16 11:06 |只看该作者
若是使用 rbash( restricted bash shell)  的話要特別注意,畢竟限制環境是由 bash 來提供的。若是於該 shell 下執行了一個外部程式後,該外部程式通常還是可以跳脫相關設限的環境。

==

论坛徽章:
1
荣誉会员
日期:2011-11-23 16:44:17
8 [报告]
发表于 2006-02-16 11:25 |只看该作者
将拥护的shell加个-r,将其限制,然后把常用的命令拷到这个拥护的家目录

论坛徽章:
0
9 [报告]
发表于 2006-02-16 11:29 |只看该作者
原帖由 独孤九贱 于 2006-2-16 10:00 发表
正在考虑一个方案,修改bash源码,在开头做一个命令列表,然后把用户输入同这个列表相比较,如果没有找到,就直接退出了……考虑ing

这个方法不错,不过难度和工作量也不小

我还有一个 idea 九贱看看行不行

做一个虚拟根系统,用户的 sheel 不指向 bash,而是指向一个 shell,shell 的内容是 chroot 到那个虚拟目录下

这样做的话,虚拟目录里面有什么 bin,用户就只能执行什么 bin
但这样做可能有问题
1、用户访问的目录范围只有 chroot 范围内
2、如果在 chroot 之前,在虚拟系统里面用 ln -s 的方式创建真正目录的软链,chroot 进入虚拟目录不知道能不能访问,如果不能,目录问题就不能解决,如果能,那么用户可能可以自己通过再次做 ln -s 的方式绕过去,访问更多的目录

论坛徽章:
0
10 [报告]
发表于 2006-02-16 11:31 |只看该作者
原帖由 kenduest 于 2006-2-16 11:06 发表
若是使用 rbash( restricted bash shell)  的話要特別注意,畢竟限制環境是由 bash 來提供的。若是於該 shell 下執行了一個外部程式後,該外部程式通常還是可以跳脫相關設限的環境。

==

不会的,如果把 /etc/passwd 里面的 shell 改为 rbash 的话,rbash 的“下一个”就没有了,只要退出了 rbash,就退出了登录
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP