LinuxSir.cn,穿越时空的Linuxsir!

 找回密码
 注册
搜索
热搜: shell linux mysql
查看: 767|回复: 8

请问怎么把用户限制在home目录里?

[复制链接]
发表于 2005-3-18 21:33:44 | 显示全部楼层 |阅读模式
请问怎么把用户限制在home目录里?
发表于 2005-3-20 18:12:19 | 显示全部楼层
Post by careless
请问怎么把用户限制在home目录里?

您的意思是只允许用户在home目录里活动?还是什么别的意思?
回复 支持 反对

使用道具 举报

 楼主| 发表于 2005-3-21 14:12:36 | 显示全部楼层
我的意思是使用户只能在自己的目录里面活动,比如通常的文件操作,简单程序的编译,但不希望他看到用户目录之外的东西。似乎有chroot和rbash两种办法,有没有谁有经验的,介绍一下看看?多谢
回复 支持 反对

使用道具 举报

发表于 2005-3-21 19:55:37 | 显示全部楼层
设定用户的权限或者文件的权限的方法可以吗?
回复 支持 反对

使用道具 举报

发表于 2005-3-22 09:53:24 | 显示全部楼层
呵,这个不容易。比如说,你不让他有访问/etc的权限,而passwd文件在这里,他还怎么登陆啊?当然也不可能改密码等操作了。再比如说,你不让他访问/bin和/usr/bin等目录,即使他登陆成功也不能进行一些操作呀,因为这里面的一些命令他根本不能执行呀,你把他的这些权利都剥夺了。
回复 支持 反对

使用道具 举报

发表于 2005-3-22 12:59:43 | 显示全部楼层
rsh 不能满足要求吗?
回复 支持 反对

使用道具 举报

发表于 2005-3-22 13:12:42 | 显示全部楼层
2. 直接rsh作为root.  

      a. 在服务器上运行/urs/bin/ntsysv选中rexec ,rlogin ,rsh三项服务。  

      b. 运行#/sbin/service xinetd restart 启动该三项服务。  

      c. 运行#echo "rexec" >> /etc/securetty;echo "rlogin" >>
      /etc/securetty;echo "rsh" >> /etc/securetty  

      d. 在服务器上运行#echo "192.168.0.2 root" >> /root/.rhosts  
      或者 #echo "client root" >> /root/.rhosts且确保在服务器上的/etc/hosts中有
      client的记录  
      192.168.0.2 client.domain.com client  

      至此你应该可以从client直接以root身份rsh到服务器不需密码了。  

      注: 仅仅redhat 7.x 开始需要为rsh设置/etc/securetty.
回复 支持 反对

使用道具 举报

发表于 2005-3-22 13:13:59 | 显示全部楼层
2.9.2 通过 rsh 连接
cvs 使用 rsh 协议执行这些操作,因此远程用户主机需要建立 .rhosts 来控制本地用户的访问。

例如,假设你是本地机上 toe.example.com 上的用户 mozart,服务器是 faun.example.org。首先,在服务器上 bach 主目录下的 .rhosts 的文件中加入下面的内容:

     toe.example.com  mozart

再用以下命令从本地机测试 rsh

     rsh -l bach faun.example.org 'echo $PATH'

接着应该确保 rsh 可以找到服务器。作到确保,上面例子中 rsh 打印的路径应包括服务器上 cvs 程序所在的目录。你需要在 .bashrc,.cshrc 中设置路径而不是在 .login 或者 .profile 中。同时,你需要在客户机上设置环境变量 CVS_SERVER 指向你希望访问的服务器,例如:/usr/local/bin/cvs-1.6。

不需要编辑 inetd.conf 或者启动一个 cvs 守护进程。

有两种方法可以在 rsh 中使用 CVSROOT。 :server: 指定一个内部 rsh 客户,这种方法仅仅被某些 cvs 端口支持。 :ext: 指定一个外部的 rsh 程序。按照默认,这是 rsh,但是你可以通过设置 CVS_RSH 环境变量用别的程序来访问远程服务器(例如,在 HP-UX 9 上的 remsh,因为在 HP-UX 9 上 rsh 有一些不同)。这个程序必须是一个可以在客户机和服务器之间来回传送数据而并不修改数据的程序,比如,Windows NT 的 rsh 就不适合作为这样的程序,因为它默认地是在 CRLF 和 LF 之间传送数据的。 OS/2 的 cvs 通过 -b 给 rsh 来实现这种传递,但是由于这会对标准 rsh 程序以外的程序引起潜在的问题,这种方法在未来可望被改变。如果你设置 CVS_RSH 为 SSH 或者使用其它替代程序,本节中其余部分关于 .rhosts 的例子可能会不适用;建议参考替代程序的文档。

继续我们的例子,假如你希望访问服务器 faun.example.org 上的仓库 /usr/local/cvsroot/ 中的模块 foo,你可以使用以下命令:

     cvs -d :ext:bach@faun.example.org:/usr/local/cvsroot checkout foo

(如果用户在本地机和远程主机上的用户名相同,bach@ 可以被忽略。)
回复 支持 反对

使用道具 举报

发表于 2005-3-22 13:22:16 | 显示全部楼层
看情况好象用rsh效果也不是很理想!:(
回复 支持 反对

使用道具 举报

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

本版积分规则

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