LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
楼主: darling1111

请问各位老大,如何把用户abc限制在目录/home/abc/下面活动?

[复制链接]
发表于 2007-10-6 02:09:42 | 显示全部楼层
Post by Xorcerer
关闭所有目录的read权限,这样他们就不能浏览了,但是只要知道真正的路径(Path定义),还是可以执行命令的。
我曾经看过关于目录的r权限的定义,貌似就是列出当前目录内容与否的意思。

要是连系统目录的 read 权限都没有,大概很难正常使用系统命令和工具,要对系统做大手术才行。

比如说,如果用户不能读 /bin/ls 的话,是运行不了 ls 这个命令的。如果把 /bin/ls 设为 r-x,但是 /bin 是 --x 的话,大概 (我没有实际测试) 是不能用 ls 来执行,因为 shell 会到各个目录下去找 ls,要在执行时直接指明 /bin/ls 才行。
回复 支持 反对

使用道具 举报

发表于 2007-10-6 02:30:43 | 显示全部楼层
Post by 高原之狼
要是连系统目录的 read 权限都没有,大概很难正常使用系统命令和工具,要对系统做大手术才行。

比如说,如果用户不能读 /bin/ls 的话,是运行不了 ls 这个命令的。如果把 /bin/ls 设为 r-x,但是 /bin 是 --x 的话,大概 (我没有实际测试) 是不能用 ls 来执行,因为 shell 会到各个目录下去找 ls,要在执行时直接指明 /bin/ls 才行。

我是说,目录的,不是所有文件的,就是说ls的read是有的。
不过如你所说,不知道bash的补全功能可能受到影响,可以尝试打开path中指明的那几个目录。

不过,楼主怕别人cd干什么?
回复 支持 反对

使用道具 举报

发表于 2007-10-6 09:31:32 | 显示全部楼层
给用户提供一个受限制的bash -r (rbash)

缺点是,限制了使用cd命令,自己目录下的目录也进不去,但是里面的文件都能用。
具体可以看看bash手册。

你的用户如果是用ftp登陆,限制就很好办。
如果是用shell登陆。就要考虑在shell这一层怎么限制。
如果bash不适合,说不定有很适合的shell作这个。
你最好多搜索。毕竟你这种特殊的需求论坛上可能很少人用过。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-6 09:42:06 | 显示全部楼层
Post by colorlinux
给用户提供一个受限制的bash -r (rbash)

缺点是,限制了使用cd命令,自己目录下的目录也进不去,但是里面的文件都能用。
具体可以看看bash手册。

你的用户如果是用ftp登陆,限制就很好办。
如果是用shell登陆。就要考虑在shell这一层怎么限制。
如果bash不适合,说不定有很适合的shell作这个。
你最好多搜索。毕竟你这种特殊的需求论坛上可能很少人用过。



rbash不行的,用户一旦运行bash,就白费力气了。
而且cd不能用,也没啥意思,自己建的目录都进不去。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-6 09:46:04 | 显示全部楼层
我在网上搜索了,绝大部分都是讲ftp的,关于限制普通用户在自己主目录的,很少提到。
有那么几篇,是讲用chroot的,但是我不知道在debian特别是4.0下面怎么用chroot来限制?请知情者不吝赐教!感激不尽!
回复 支持 反对

使用道具 举报

发表于 2007-10-6 11:47:25 | 显示全部楼层
你能说一下为啥有这种需求么?感觉很怪异
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-6 13:36:23 | 显示全部楼层
就是想让我开的几个用户在他们的目录下干自己的事情,同时只能执行我给他们的几个够用的命令,能完成事情就行了。就这么简单啊,从这点出发,我感觉chroot很符合我的需要,它可以构建一个小型的有限的系统来完成特定的事情。
回复 支持 反对

使用道具 举报

 楼主| 发表于 2007-10-6 14:57:26 | 显示全部楼层
我这样用chroot的,最后登陆时进不去,屏幕一闪就退出来了。
1,用root建了个测试用户abc,home目录在/home/abc;
2,安装libpam_chroot软件包;
3,修改 /etc/pam.d/ssh 文件, 添加一行:session    required   pam_chroot.so
4,在home目录下建chroot目录,里面建home目录,再在home目录里建abc目录,用chown把该abc目录的所有者改为abc;
5,在chroot目录下建lib和bin目录,把/bin/ls拷贝过去,并通过ldd /bin/ls,把相关的lib也拷过去,用命令chroot chroot /bin/ls可以正确运行;
6,修改/etc/security/chroot.conf,把abc  /home/chroot/home/abc添加进去;
7,修改/etc/passwd,把abc的home改为/home/chroot/home/abc;
8,把ssh的UsePrivilegeSeparation改为no;
重启ssh,登陆abc,就是开头我说的那样,一闪就没有了。把6,7改回来,可以和平时一样正常进入。请教各位大大,中间有和差错么?
回复 支持 反对

使用道具 举报

发表于 2007-10-6 18:54:54 | 显示全部楼层
几乎没有可能性。cd命令是bash自带的。除非改bash。

不过,你又要他能输入命令,运行程序。然后这些程序运行涉及到的目录又很多。你如何限制?

7楼的很对啊。就限制别人浏览的话,实现这个功能应该可行,但不用权限去改的话,应该漏洞很多。

比方不允许用户使用ls命令。但是比方图形界面下又文件管理器,不知道这些文件管理器用什么命令?要不连这个也禁用了。
回复 支持 反对

使用道具 举报

发表于 2007-10-6 22:06:24 | 显示全部楼层
使用受限shell,同时还要建一个目录放受限用户可以使用的命令,这个目录中不能有标准的bash等shell,以及一些可以或者shell权限的程序。
回复 支持 反对

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

快速回复 返回顶部 返回列表