熱點推薦:
您现在的位置: 電腦知識網 >> 編程 >> Java編程 >> Javascript >> 正文

建立 Anonymous FTP Server

2013-11-23 17:57:35  來源: Javascript 

  加入以下資料在 /etc/passwd 這個例子選擇 /export/ftp 作為 anonymous ftp area設定為不能看見 Shell 的內容 /nosuchshell
  
  ftp:x:::Anonymous FTP:/export/ftp:/nosuchshell
  
  加入以下資料在 /etc/shadow
  
  ftp:NP:::::::
  
  以下shell script用來設定anonymous ftp area
  
  把以下內容放入 /etc/ftpanonymous
  
  #!/bin/sh
  # script to setup anonymous ftp area
  #
  
  # verify you are root
  /usr/bin/id | grep w uid= >/dev/null >&
  if [ $? != ]; then
  echo
  exit
  fi
  
  # handle the optional command line argument
  case $# in
  
  # the default location for the anon ftp comes from the passwd file
  ) ftphome=`getent passwd ftp | cut d: f`
  ;;
  
  ) if [ $ = start ]; then
  ftphome=`getent passwd ftp | cut d: f`
  else
  ftphome=$
  fi
  ;;
  *) echo Usage: $ [anonftproot]
  exit
  ;;
  esac
  
  if [ z ${ftphome} ]; then
  echo $: ftphome must be nonnull
  exit
  fi
  
  case ${ftphome} in
  /*) # ok
  ;;
  
  *) echo $: ftphome must be an absolute pathname
  exit
  ;;
  esac
  
  # This script assumes that ftphome is neither / nor /usr so
  if [ z ${ftphome} o ${ftphome} = / o ${ftphome} = /usr ]; then
  echo $: ftphome must be nonnull and neither / or /usr
  exit
  fi
  
  # If ftphome does not exist but parent does create ftphome
  if [ ! d ${ftphome} ]; then
  # lack of p below is intentional
  mkdir ${ftphome}
  fi
  chown root ${ftphome}
  chmod ${ftphome}
  
  echo Setting up anonymous ftp area ${ftphome}
  
  # Ensure that the /usr directory exists
  if [ ! d ${ftphome}/usr ]; then
  mkdir p ${ftphome}/usr
  fi
  # Now set the ownership and modes to match the man page
  chown root ${ftphome}/usr
  chmod ${ftphome}/usr
  
  # Ensure that the /usr/bin directory exists
  if [ ! d ${ftphome}/usr/bin ]; then
  mkdir p ${ftphome}/usr/bin
  fi
  # Now set the ownership and modes to match the man page
  chown root ${ftphome}/usr/bin
  chmod ${ftphome}/usr/bin
  
  # this may not be the right thing to do
  # but we need the bin > usr/bin link
  rm f ${ftphome}/bin
  ln s usr/bin ${ftphome}/bin
  
  # Ensure that the /usr/lib and /etc directories exist
  if [ ! d ${ftphome}/usr/lib ]; then
  mkdir p ${ftphome}/usr/lib
  fi
  chown root ${ftphome}/usr/lib
  chmod ${ftphome}/usr/lib
  
  if [ ! d ${ftphome}/usr/lib/security ]; then
  mkdir p ${ftphome}/usr/lib/security
  fi
  chown root ${ftphome}/usr/lib/security
  chmod ${ftphome}/usr/lib/security
  
  if [ ! d ${ftphome}/etc ]; then
  mkdir p ${ftphome}/etc
  fi
  chown root ${ftphome}/etc
  chmod ${ftphome}/etc
  
  # a list of all the commands that should be copied to ${ftphome}/usr/bin
  # /usr/bin/ls is needed at a minimum
  ftpcmd=/usr/bin/ls
  
  # ${ftphome}/usr/lib needs to have all the libraries needed by the above
  # commands plus the runtime linker and some name service libraries
  
  # to resolve names We just take all of them here
  
  ftplib=`ldd $ftpcmd | nawk $ ~ /lib/ { print $ } | sort | uniq`
  ftplib=$ftplib /usr/lib/nss_* /usr/lib/straddr* /usr/lib/libmpso*
  ftplib=$ftplib /usr/lib/libnslso /usr/lib/libsocketso /usr/lib/ldso
  ftplib=`echo $ftplib | tr \n | sort | uniq`
  
  cp ${ftplib} ${ftphome}/usr/lib
  chmod ${ftphome}/usr/lib/*
  
  cp /usr/lib/security/* ${ftphome}/usr/lib/security
  chmod ${ftphome}/usr/lib/security/*
  
  cp ${ftpcmd} ${ftphome}/usr/bin
  chmod ${ftphome}/usr/bin/*
  
  # you also might want to have separate minimal versions of passwd and group
  cp /etc/passwd /etc/group /etc/netconfig /etc/nf ${ftphome}/etc
  chmod ${ftphome}/etc/*
  # need /etc/default/init for timezone to be correct
  if [ ! d ${ftphome}/etc/default ]; then
  mkdir ${ftphome}/etc/default
  fi
  chown root ${ftphome}/etc/default
  chmod ${ftphome}/etc/default
  cp /etc/default/init ${ftphome}/etc/default
  chmod ${ftphome}/etc/default/init
  
  # Copy timezone database
  mkdir p ${ftphome}/usr/share/lib/zoneinfo
  (cd ${ftphome}/usr/share/lib/zoneinfo
  (cd /usr/share/lib/zoneinfo; find print |
  cpio o) >/dev/null | cpio imdu >/dev/null
  find print | xargs chmod
  find print | xargs chown root
  )
  
  # Ensure that the /dev directory exists
  if [ ! d ${ftphome}/dev ]; then
  mkdir p ${ftphome}/dev
  fi
  
  # make device nodes ticotsord and udp are necessary for
  # ls to resolve NIS names
  
  for device in zero tcp udp ticotsord ticlts
  do
  line=`ls lL /dev/${device} | sed e s///`
  major=`echo $line | awk {print $}`
  minor=`echo $line | awk {print $}`
  rm f ${ftphome}/dev/${device}
  mknod ${ftphome}/dev/${device} c ${major} ${minor}
  done
  
  chmod ${ftphome}/dev/*
  
  ## Now set the ownership and modes
  chown root ${ftphome}/dev
  chmod ${ftphome}/dev
  
  # uncomment the below if you want a place for people to store things
  # but beware the security implications
  #if [ ! d ${ftphome}/pub ]; then
  # mkdir p ${ftphome}/pub
  #fi
  #chown root ${ftphome}/pub
  #chmod ${ftphome}/pub
  
  # chmod /etc/ftpanonymous
  # /etc/ftpanonymous ( 執行ftpanonymous )
  # cd ~ftp/etc < 檢查有沒有不能公開的文檔
  
  完成

From:http://tw.wingwit.com/Article/program/Java/Javascript/201311/25428.html
    推薦文章
    Copyright © 2005-2013 電腦知識網 Computer Knowledge   All rights reserved.