用編輯工具(如vi)編寫一個Shell程序,用於對系統進行設置。 #!/bin/sh case $# in 0) ftphome="`grep '^ftp:' /etc/passwd | cut -d: -f6`" ;; 1) if [ "$1" = "start" ]; then ftphome="`grep '^ftp:' /etc/passwd | 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 if [ "${ftphome}" = "/" -o "${ftphome}" = "/usr" ]; then echo "$0: ftphome must not be / or /usr" exit 2 fi if [ ! -d ${ftphome} ]; then mkdir ${ftphome} fi if [ ! -d ${ftphome}/usr/bin ]; then mkdir -p ${ftphome}/usr/bin fi cp /usr/bin/ls ${ftphome}/usr/bin chmod 111 ${ftphome}/usr/bin/ls chown root ${ftphome}/usr/bin chmod 555 ${ftphome}/usr/bin if [ -r ${ftphome}/bin ]; then mv -f ${ftphome}/bin ${ftphome}/Obin fi ln -s usr/bin ${ftphome} if [ ! -d ${ftphome}/usr/lib ]; then mkdir -p ${ftphome}/usr/lib fi if [ ! -d ${ftphome}/etc ]; then mkdir -p ${ftphome}/etc fi cp /usr/lib/ld.so /usr/lib/ld.so.1 ${ftphome}/usr/lib for lib in libc libdl libintl libw libnsl libsocket nss_nis nss_nisplus nss_dns nss_files do cp /usr/lib/${lib}.so.1 ${ftphome}/usr/lib rm -f ${ftphome}/usr/lib/${lib}.so ln -s ./${lib}.so.1 ${ftphome}/usr/lib/${lib}.so done cp /usr/lib/straddr.so.2 ${ftphome}/usr/lib rm -f ${ftphome}/usr/lib/straddr.so ln -s ./straddr.so.2 ${ftphome}/usr/lib/straddr.so cp /etc/passwd /etc/group /etc/netconfig ${ftphome}/etc chmod 555 ${ftphome}/usr/lib/* chmod 444 ${ftphome}/etc/* chown root ${ftphome}/usr/lib ${ftphome}/etc chmod 555 ${ftphome}/usr/lib ${ftphome}/etc if [ ! -d ${ftphome}/dev ]; then mkdir -p ${ftphome}/dev3. 編輯/etc/passwd和/etc/shadow文件fi prefix=/devices/pseudo/mm@0: for device in zero line=`ls -l ${prefix}${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 prefix=/devices/pseudo/clone@0: for device in tcp udp ticotsord do line=`ls -l ${prefix}${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/* chown root ${ftphome}/dev chmod 555 ${ftphome}/dev #建立一個匿名FTP服務目錄,並設立可讀可寫屬性 if [ ! -d ${ftphome}/pub ]; then mkdir -p ${ftphome}/pub fi chown ftp ${ftphome}/pub chmod 777 ${ftphome}/pub