免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 4063 | 回复: 9

我看到有这种限定一个用户执行特定命令的方法,可是不成功,望指教 [复制链接]

论坛徽章:
0
发表于 2007-05-11 13:18 |显示全部楼层
我看到有这种限定一个用户执行特定命令的方法,贴出来大家看看  
来源: 作者: 发布时间:2007-01-22   
我们知道,linux是个比较安全的系统,而shell也具有很强的安全性,他的安全性是通过"约束"特定用户的
登录shell来实现的,
约束你的shell:
当带-r选项作为你登录的shell时,这个用户的shell是被约束的!,当约束shell时,你不能用cd命令,而且你不能
修改或复位SHELL,ENV,PATH等变量,任何重定向的操作被视为非法,不能用set来复位或置位该选项!
基于此,那么我就可以这样限定一个用户:
1,在/etc/passwd中将用户abc的登录shell改成:
abc: x:501:501::/home/abc:/bin/bash -r
2,将此用户的.bash_profile文件中PATH指定一个工作目录:
export PATH=${PATH}:~/mybin
3,将用户abc只能执行的几个常用命令,如ls等,cp到此目录,
cp /bin/ls /home/abc/mybin #ln也可
4,完成
设定好之后,这个用户abc登录后他就只能运行ls

我的问题是:只要在/etc/passwd中把shell一加上“- r”选项,该用户ssh就登录不了了,总提示密码不对,有没有这样成功过的,请指出问题

论坛徽章:
0
发表于 2007-05-11 15:50 |显示全部楼层
原帖由 dwq123 于 2007-5-11 13:18 发表于 1楼  
1,在/etc/passwd中將用戶abc的登錄shell改成:
abc: x:501:501::/home/abc:/bin/bash -r


  1. cd /bin
  2. ln -s bash rbash
复制代码


使用 /bin/rbash 即可

--

论坛徽章:
0
发表于 2007-05-12 10:08 |显示全部楼层
原帖由 kenduest 于 2007-5-11 15:50 发表于 2楼  



cd /bin
ln -s bash rbash


使用 /bin/rbash 即可

--


多谢kenduest 的回答,可是我发现如果这样改了之后有2个问题:
1、用户登录后还是能够用cd 命令到其他目录
2、用ssh sercure shell无法sftp传输文件

论坛徽章:
0
发表于 2007-05-12 12:20 |显示全部楼层
原帖由 dwq123 于 2007-5-12 10:08 发表于 3楼  
多谢kenduest 的回答,可是我发现如果这样改了之后有2个问题:
1、用户登录后还是能够用cd 命令到其他目录
2、用ssh sercure shell无法sftp传输文件


1. 抓個圖如何 ?

2. rbash 內本來就不可以使用 sftp, 這是必然的... 因為受限無法執行絕對路徑 /usr/lib/ssh/sftp 這個程序.

--

论坛徽章:
0
发表于 2007-05-12 15:08 |显示全部楼层
原帖由 kenduest 于 2007-5-12 12:20 发表于 4楼  


1. 抓個圖如何 ?

2. rbash 內本來就不可以使用 sftp, 這是必然的... 因為受限無法執行絕對路徑 /usr/lib/ssh/sftp 這個程序.

--

我把sftp这个程序copy到mybin目录下了也不行,如图
而且还能cd到/usr目录中,如图
aaa.JPG
cd命令.JPG

论坛徽章:
0
发表于 2007-05-13 01:43 |显示全部楼层
原帖由 dwq123 于 2007-5-12 15:08 发表于 5楼  

我把sftp这个程序copy到mybin目录下了也不行,如图
而且还能cd到/usr目录中,如图


1. 你的使用者家目錄為何 ? echo $HOME 列一下.

2. sftp 登入是會啟動 /usr/lib/ssh/sftp-server,這個一般是這樣呼叫:

  1. /bin/bash -c /usr/lib/ssh/sftp-server
复制代码


重點是你是使用 rbash,那變成:

  1. /bin/rbash -c /usr/lib/ssh/sftp-server
复制代码


這個就會產生錯誤。這個並不是你複製啥檔案到哪個目錄內就可以了

--

论坛徽章:
0
发表于 2007-05-13 21:34 |显示全部楼层
原帖由 kenduest 于 2007-5-13 01:43 发表于 6楼  


1. 你的使用者家目錄為何 ? echo $HOME 列一下.

2. sftp 登入是會啟動 /usr/lib/ssh/sftp-server,這個一般是這樣呼叫:

/bin/bash -c /usr/lib/ssh/sftp-server

重點是你是使用 rbash,那變成:

...


明白了,我现在已经可以让用户只用sftp而不能登陆系统,可是我还是有2个问题没解决,不知道kenduest大哥能不能帮我:
1、我想让用户sftp后只能在自己的家目录中
2、普通用户ssh登录后也只能在自己的家目录中
谢谢kenduest大哥

论坛徽章:
0
发表于 2007-05-13 23:30 |显示全部楼层
原帖由 dwq123 于 2007-5-13 21:34 发表于 7楼  
明白了,我现在已经可以让用户只用sftp而不能登陆系统,可是我还是有2个问题没解决,不知道kenduest大哥能不能帮我:
1、我想让用户sftp后只能在自己的家目录中
2、普通用户ssh登录后也只能在自己的家目录 ...


真抱歉,沒這個功能.....

openssh 的服務沒有 chroot 功能納入,沒有這類現成功能。

1. ftp 問題,我建議你還是改用傳統的 ftp + ssl 的方式處理比較好,單純又簡單。許多 ftpd 都支援該功能。

2. 就算是 ssh 到主機後可以 chroot,那我問你要作啥功能?還要允許可以跑系統程式?那你是不是要幫每個使用者複製相關程式檔案甚至程式庫到使用者家目錄,那根本就是費時費力不討好方式. 所以實務上沒人會配置登入主機後還 chroot 功能。

--

论坛徽章:
0
发表于 2007-05-14 10:47 |显示全部楼层
原帖由 kenduest 于 2007-5-13 23:30 发表于 8楼  


真抱歉,沒這個功能.....

openssh 的服務沒有 chroot 功能納入,沒有這類現成功能。

1. ftp 問題,我建議你還是改用傳統的 ftp + ssl 的方式處理比較好,單純又簡單。許多 ftpd 都支援該功能。

2. ...


多谢kenduest  斑竹了,我的本意其实就是为了保证系统安全,让普通账户即使被盗也不至于破坏到系统。看来要实现这个功能还是需要复杂点的配置了。

论坛徽章:
0
发表于 2007-05-31 08:56 |显示全部楼层
老外有寫個SSHJAIL, PATCH可以實現此功能
http://paradigma.pt/~gngs/sshjail/
昨天剛好也在找此功能, 運氣不錯, 還找到KENDUEST大大的另類思考


原帖由 kenduest 于 2007-5-13 23:30 发表于 8楼  


真抱歉,沒這個功能.....

openssh 的服務沒有 chroot 功能納入,沒有這類現成功能。

1. ftp 問題,我建議你還是改用傳統的 ftp + ssl 的方式處理比較好,單純又簡單。許多 ftpd 都支援該功能。

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

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP