码迷,mamicode.com
首页 > 系统相关 > 详细

用scponly限制只能拷文件,不能登陆(MAC版)

时间:2016-04-10 06:48:22      阅读:201      评论:0      收藏:0      [点我收藏+]

标签:

目的:
限制用户在特定目录(不能看到上级或者根目录)
只能执行scp或者sftp拷贝特别目录下的文件
不能SSH登陆,其它命令不能执行
 
机制:
SSH登陆成功后,scponly会接管SHELL,并CHROOT到特别目录,让用户“以为”这个目录就是根目录
它只会响应SFTP和SCP命令
只影响配置SHELL为SCPONLY的用户,其它用户不受影响
 
MAC下安装:
LINUX下安装SCPONLY非常简单,不多说,特说下MAC的

GOOGLE一下scponly,下载解压后编译安装:

./configure --enable-chrooted-binary --enable-rsync-compat --enable-scp-compat --enable-sftp-logging-compat --with-sftp-server=/usr/libexec/sftp-server
make clean all
sudo make install
 
会安装好:/usr/local/sbin/scponlyc
 
用workgroup manager建立下载用户,比方说是dnld,并配置其login shell到上述路径
 
因为CHROOT后执行的命令都以用户目录/Users/dnld做为根目录,所以要把scponly用到的scp和sftp-server两个可执行文件和信赖库拷到其下。以ROOT用户登录,且CD至/Users/dnld,执行以下脚本就会把这件事做好:
perl ./printlib.pl /usr/bin/scp
perl ./printlib.pl /usr/libexec/sftp-server
我写的脚本源码,自动搜索信赖关系,并在当前目录建立目录结构:
#!/bin/perl
%result=();
$result{$ARGV[0]}=1;


sub addlib{
@a = `otool -L \"$_[0]\"`;
#print @a;
for $i (@a){
    if ($i =~/\s*([a-z|A-Z|\.|0-9|\/|\+|\-]*)\s*/){
        #print "$1\n";
        $result{$1}=1;
    }
}
}

$before  = 1;
$after = 0;

while ($before != $after){
$before = scalar keys %result;

for $i (keys %result){
    addlib($i);
}
$after = scalar keys %result;
print "before $before, after $after\n";
}

for $i (keys %result){
#print "$i\n";
if ($i =~ /(.*)\/([~\/]*)/){
system ("mkdir -p \.$1");
system ("cp $i \.$1/");

}
}
 
 
调试:
加大LOG级别:
cat 7 /usr/local/scponly/etc/scponly/debuglevel
 
从其它机器或者本机用dnld用户来拷贝文件,看登陆LOG:
tail -f /var/log/*
 
dstruss类似strace来看进程在做什么
 
直接到SCPONLY里加LOG,这个最直接了。
http://www.blogjava.net/alwayscy/archive/2011/07/13/354216.html
 
-----------------------------------------------------------------------

限制用户在自己目录下载文件:

建立nagiosdnld

指向软链接:/usr/local/nagios/dnld -> /Users/nagiosdnld/dnld

编辑/etc/sshd_config

 

Match User nagiosdnld

        X11Forwarding no

        AllowTcpForwarding no

        ForceCommand internal-sftp

        ChrootDirectory /Users/nagiosdnld

 

重启下服务:

launchctl stop org.openbsd.ssh-agent

launchctl start org.openbsd.ssh-agent

 
@import url(http://www.blogjava.net/CuteSoft_Client/CuteEditor/Load.ashx?type=style&file=SyntaxHighlighter.css);@import url(/css/cuteeditor.css);
 
http://www.blogjava.net/alwayscy/archive/2011/10/03/359940.html

用scponly限制只能拷文件,不能登陆(MAC版)

标签:

原文地址:http://www.cnblogs.com/findumars/p/5373285.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!