问一个安全方面问题。。。。

发表于:2007-06-08来源:作者:点击数: 标签:
假设有这样一种 需求 :某些普通用户允许通过te .net 登陆上系统,默认情况下该用户的HOME目录是/home/username。如果我想让该用户只能在该目录下活动,也就是该用户不能通过cd命令切换的其他的目录,该如何实现?希望大家多提想法? 个人意见:一个用户可以

假设有这样一种需求:某些普通用户允许通过te.net登陆上系统,默认情况下该用户的HOME目录是/home/username。如果我想让该用户只能在该目录下活动,也就是该用户不能通过cd命令切换的其他的目录,该如何实现?希望大家多提想法?
个人意见:一个用户可以cd到一个目录,是因为该用户对该目录有r权限,那么可以通过对目录权限的设置而达到对用户权限的限制。但是这种方法是否太繁琐?

 老农a 回复于:2003-01-27 17:14:24
谢谢,帮大家验证了一些问题:)
larryh 就是厉害:)

 larryh 回复于:2003-01-27 18:58:50
呵呵,刚巧,以前有人提出过这样的要求。当时想到只有在shell里加限制能解决问题,但是TCB实在限制太多,太麻烦,就看看各个shell有没有这样的功能,看到ksh -r参数,搞定。

这个用SMIT改用户属性还不行,SMIT不允许默认shell的执行命令带参数,必须手工改/etc/passwd

 johnsons 回复于:2003-01-27 17:01:50
已经彻底解决,我发现可以通过修改/etc/passwd文件中对应用户的SHELL,就不会出现上面的问题了,完全解决!!!

 大猫 回复于:2003-01-27 15:04:22
改default umask为027,在把/home,/的改为750

 johnsons 回复于:2003-01-27 15:04:31
anybody knows?

哈哈,速速回答。。。。

 大猫 回复于:2003-01-27 15:05:43
any problem?

 johnsons 回复于:2003-01-27 15:08:34
umask改成027只能说控制该用户在创建新的目录的时候权限位为750,文件为640,但是现有的文件或者目录权限位不会受到影响,你说把/home,/的改为750,但是,其他的目录呢?比如/usr,/tmp,/datafs等等已经存在于系统中的文件系统。

 老农a 回复于:2003-01-27 15:10:17
有x权限就可以cd的:)
大猫的做法应该可行,因为cd上不去了,但要注意group的权限问题,把该用户另设一个group。

 johnsons 回复于:2003-01-27 15:17:21
我有一个问题想问一下,如果我在/home目录下做cd /usr,那么是不是系统是先执行cd(切换到/),然后再执行cd /usr?

 老农a 回复于:2003-01-27 15:21:33
如果他知道目录名的话,应该还是可以的:(
不过我们可以把这些目录都设成750嘛, chmod -R 750。

 johnsons 回复于:2003-01-27 15:54:20
刚才测试了一下,chmod 750 /(还不敢加-R参数),用test登陆就发现错误,说是fail to running loging shell。这样做估计不行,改回来以后,我chmod 750 /home,用test登陆可以,但是pwd和ls等执行就不行了。加上chmod 757 /home/test(为test用户)后,可以做ls和执行脚本,但是还是无法pwd。但是可以cd /或者cd /usr之类的。大猫兄的方法有没有实际测试过?

 johnsons 回复于:2003-01-27 15:58:02
老农兄有何看法?

 larryh 回复于:2003-01-27 15:58:49
把他的SHELL改为/bin/ksh -r

 johnsons 回复于:2003-01-27 16:26:53
larryh,我刚才修改了test用户的.profile,加了一行/usr/bin/ksh -r,然后用test登陆就发现该用户无法切换目录了,但是我发现了一个新的问题,如果我敲入exit,然后就发现可以执行cd /之类的,如何解决?

 johnsons 回复于:2003-01-27 16:36:41
刚才修改了/usr/lib/security/mkuser.default中的shell默认值,还是会出现可以通过exit跳出限制的问题。

 johnsons 回复于:2003-01-28 08:44:48
多谢larryh和老农兄积极参与,以后大家多多切磋。。。呵呵。

 高山流云 回复于:2003-01-28 17:47:47
[quote:9682a9c2c4="johnsons"]larryh,我刚才修改了test用户的.profile,加了一行/usr/bin/ksh -r,然后用test登陆就发现该用户无法切换目录了,但是我发现了一个新的问题,如果我敲入exit,然后就发现可以执行cd /之类的,如何解决?[/quote:9682a9c2c4]

你在此过程中打开了两个shell,一个在/etc/passwd的shell,一个为.profile中的shell,即为此用户的子shell。你用exit退出时,退出到了基本的shell即在/etc/passwd中设置shell中了。

 高山流云 回复于:2003-01-28 17:54:12
[quote:6fee2ed2ba="johnsons"]已经彻底解决,我发现可以通过修改/etc/passwd文件中对应用户的SHELL,就不会出现上面的问题了,完全解决!!![/quote:6fee2ed2ba]
不会完全解决吧,当你开一个子shell时,就可以重新切换到/目录下
$sh
$cd /
!!!!!!!!!

 老农a 回复于:2003-01-28 18:02:27
有道理。
还得限制他起新的shell。。。。

 feeling 回复于:2003-01-28 18:40:26
在SHELL命令行模式下执行 sh -r、 ksh -r 实质是开启了一个新的SHELL,exit 退出后又会回到原来的用户SHELL下。

解决办法就是从根本上下手,更改/etc/passwd中用户的SHELL信息为 /bin/ksh -r

如果要彻底限制用户的登录的话,简单的办法还有更改/etc/passwd中SHELL信息为一个SHELL命令(非SHELL本身),如/usr/bin/logout,这样用户一登录即先执行在/etc/passwd里面设定的SHELL。


-r 选项限制的还不止这个呢:
-r Runs a restricted shell. With a restricted shell you cannot:
  o Change the current working directory.
  o Set the value of the SHELL, ENV, or PATH variable.
  o Specify the pathname of a command that contains a / (slash).
  o Redirect output of a command with > (right caret), >| (right caret, pipe symbol), <> (left caret, right caret), or >> (two right carets).

 老农a 回复于:2003-01-29 01:27:37
多谢。
如此说来,ksh -r是彻底解决了:),因为它不能另起shell了。

 johnsons 回复于:2003-01-29 11:52:19
没有错啊!我上面说的情况也就是feeling兄说到的"解决办法就是从根本上下手,更改/etc/passwd中用户的SHELL信息为 /bin/ksh -r ",feeling兄为何说不能彻底解决呢?有点迷惑ing

 hunt 回复于:2003-03-07 15:21:37
如何限制起新的shell?

 stewartsun 回复于:2003-03-11 15:26:30
修改/etc/passwd中对于该用户/bin/ksh  -r,这样是限制了登陆后的cd,但好像可以vi 子目录下的文件,同时可以创建新的目录,并且在该目录下创建新的文件。

 老农 回复于:2003-03-11 17:57:57
[quote:68a1d6af75="hunt"]如何限制起新的shell?[/quote:68a1d6af75]
就是vi /etc/passwd
把这个用户用的shell改为ksh -r

 George 回复于:2003-03-12 00:37:04
/etc/passwd中的ksh -r对新起shell没有作用,而且这个ksh -r也没有多大作用,该用户登陆之后不用重启shell一样能看别的目录的东西,可以ls所有权限允许的东西,可以cat,权限允许的话还可以vi……没有cd又是什么意义呢?

原文转自:http://www.ltesting.net