隨筆-124  評(píng)論-194  文章-0  trackbacks-0
          目的:
          限制用戶在特定目錄(不能看到上級(jí)或者根目錄)
          只能執(zhí)行scp或者sftp拷貝特別目錄下的文件
          不能SSH登陸,其它命令不能執(zhí)行

          機(jī)制:
          SSH登陸成功后,scponly會(huì)接管SHELL,并CHROOT到特別目錄,讓用戶“以為”這個(gè)目錄就是根目錄
          它只會(huì)響應(yīng)SFTP和SCP命令
          只影響配置SHELL為SCPONLY的用戶,其它用戶不受影響

          MAC下安裝:
          LINUX下安裝SCPONLY非常簡(jiǎn)單,不多說(shuō),特說(shuō)下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

          會(huì)安裝好:/usr/local/sbin/scponlyc

          用workgroup manager建立下載用戶,比方說(shuō)是dnld,并配置其login shell到上述路徑

          因?yàn)镃HROOT后執(zhí)行的命令都以用戶目錄/Users/dnld做為根目錄,所以要把scponly用到的scp和sftp-server兩個(gè)可執(zhí)行文件和信賴庫(kù)拷到其下。以ROOT用戶登錄,且CD至/Users/dnld,執(zhí)行以下腳本就會(huì)把這件事做好:
          perl ./printlib.pl /usr/bin/scp
          perl ./printlib.pl /usr/libexec/sftp-server
          我寫的腳本源碼,自動(dòng)搜索信賴關(guān)系,并在當(dāng)前目錄建立目錄結(jié)構(gòu):
          #!/bin/perl
          %result=();
          $result{$ARGV[0]}=1;


          sub addlib{
          @a = `otool -\"$_[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/");

          }
          }


          調(diào)試:
          加大LOG級(jí)別:
          cat 7 /usr/local/scponly/etc/scponly/debuglevel

          從其它機(jī)器或者本機(jī)用dnld用戶來(lái)拷貝文件,看登陸LOG:
          tail -f /var/log/*

          dstruss類似strace來(lái)看進(jìn)程在做什么

          直接到SCPONLY里加LOG,這個(gè)最直接了。
          posted on 2011-07-13 02:25 我愛(ài)佳娃 閱讀(793) 評(píng)論(0)  編輯  收藏 所屬分類: 網(wǎng)管MAC
          主站蜘蛛池模板: 天全县| 筠连县| 罗甸县| 柳林县| 寿阳县| 祁门县| 天峨县| 绍兴县| 富源县| 那曲县| 乳源| 航空| 工布江达县| 封丘县| 舞阳县| 周宁县| 林甸县| 嘉义市| 旬邑县| 荔波县| 吉安县| 汽车| 望谟县| 东阳市| 昌吉市| 黔江区| 铁力市| 花垣县| 栾城县| 远安县| 稻城县| 平定县| 桓台县| 吉隆县| 灌云县| 惠东县| 霞浦县| 浦城县| 光泽县| 平和县| 句容市|