免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 1505 | 回复: 0
打印 上一主题 下一主题

Solaris 建立 Anonymous FTP Server [复制链接]

论坛徽章:
0
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2007-11-13 12:25 |只看该作者 |倒序浏览

Solaris 建立 Anonymous FTP Server
加入以下资料在 /etc/passwd ,这个例子选择 /export/ftp 作为 anonymous ftp area。设定为不能看见 Shell 的內容 /nosuchshell。
  
  ftp:x:30000:30000:Anonymous FTP:/export/ftp:/nosuchshell
  
  加入以下资料在 /etc/shadow
  
  ftp:NP:6445::::::
  
  以下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=0' >/dev/null 2>&1
  if [ "$?" != "0" ]; then
  echo
  exit 1
  fi
  
  # handle the optional command line argument
  case $# in
  
  # the default loc
ati
on for the anon ftp comes from the passwd file
  0) ftphome="`getent passwd ftp | cut -d: -f6`"
  ;;
  
  1) if [ "$1" = "start" ]; then
  ftphome="`getent passwd ftp | cut -d: -f6`"
  else
  ftphome=$1
  fi
  ;;
  *) echo "Usage: $0 [anon-ftp-root]"
  exit 1
  ;;
  esac
  
  if [ -z "${ftphome}" ]; then
  echo "$0: ftphome must be non-null"
  exit 2
  fi
  
  case ${ftphome} in
  /*) # ok
  ;;
  
  *) echo "$0: ftphome must be an absolute pathname"
  exit 1
  ;;
  esac
  
  # This script assumes that ftphome is neither / nor /usr so ...
  if [ -z "${ftphome}" -o "${ftphome}" = "/" -o "${ftphome}" = "/usr" ]; then
  echo "$0: ftphome must be non-null and neither / or /usr"
  exit 2
  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 555 ${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 555 ${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 555 ${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 555 ${ftphome}/usr/lib
  
  if [ ! -d ${ftphome}/usr/lib/security ]; then
  mkdir -p ${ftphome}/usr/lib/security
  fi
  chown root ${ftphome}/usr/lib/security
  chmod 555 ${ftphome}/usr/lib/security
  
  if [ ! -d ${ftphome}/etc ]; then
  mkdir -p ${ftphome}/etc
  fi
  chown root ${ftphome}/etc
  chmod 555 ${ftphome}/etc
  
  
  # a list of all the commands that should be copied to ${ftphome}/usr/bin
  # /usr/bin/ls is needed at a minimum.
  ft
pc
md="/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 '$3 ~ /lib/ { print $3 }' | sort | uniq`"
  ftplib="$ftplib /usr/lib/nss_* /usr/lib/straddr* /usr/lib/l
ibm
p.so*"
  ftplib="$ftplib /usr/lib/libnsl.so.1 /usr/lib/libsocket.so.1 /usr/lib/ld.so.1"
  ftplib="`echo $ftplib | tr ' ' '\n' | sort | uniq`"
  
  cp ${ftplib} ${ftphome}/usr/lib
  chmod 555 ${ftphome}/usr/lib/*
  
  cp /usr/lib/security/* ${ftphome}/usr/lib/security
  chmod 555 ${ftphome}/usr/lib/security/*
  
  cp ${ftpcmd} ${ftphome}/usr/bin
  chmod 111 ${ftphome}/usr/bin/*
  
  # you also might want to have separate minimal versions of passwd and group
  cp /etc/passwd /etc/group /etc/netconfig /etc/pam.conf ${ftphome}/etc
  chmod 444 ${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 555 ${ftphome}/etc/default
  cp /etc/default/init ${ftphome}/etc/default
  chmod 444 ${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) 2>/dev/null | cpio -imdu 2>/dev/null
  find . -print | xargs chmod 555
  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
nec
essary 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 $5}'`
  minor=`echo $line | awk '{print $6}'`
  rm -f ${ftphome}/dev/${device}
  mknod ${ftphome}/dev/${device} c ${major} ${minor}
  done
  
  chmod 666 ${ftphome}/dev/*
  
  ## Now set the ownership and modes
  chown root ${ftphome}/dev
  chmod 555 ${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 1755 ${ftphome}/pub
  
  
  # chmod 755 /etc/ftpanonymous
  # /etc/ftpanonymous ( 执行ftpanonymous )
  # cd ~ftp/etc 检查有没有不能公开的文档
  
  完成
  


本文来自ChinaUnix博客,如果查看原文请点:http://blog.chinaunix.net/u/10132/showart_421102.html
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

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

清除 Cookies - ChinaUnix - Archiver - WAP - TOP