ºìÁªLinuxÃÅ»§
Linux°ïÖú

»ùÓÚUNIXƽ̨FTP·þÎñÆ÷

·¢²¼Ê±¼ä:2006-10-31 11:08:54À´Ô´:ºìÁª×÷Õß:love601
Ä¿Ç°ºÜ¶àÆóÒµµ¥Î»ÕýÔÚ¹¹¼Ü×Ô¼ºµÄIntranet£¬FTP·þÎñÆ÷ÊÇÆäÖеÄÒ»¸ö·þÎñÖ§³Ö£¬Óкܶ൥λ¹ºÖÃÁË»ùÓÚUNIXƽ̨µÄ¼ÆËã»ú£¬ÎªÁËÔÚÍøÉÏÄܹ»ÌṩFTP·þÎñÖ§³Ö£¬×¨ÃŹºÖûùÓÚUNIXƽ̨µÄFTP ServerÈí¼þ£¬ÆäʵÔÚ»ùÓÚUNIXƽ̨µÄ¼ÆËã»úϵͳÖУ¬²ÉÈ¡Ò»¶¨µÄ¼¼Êõ·½·¨£¬¾Í¿ÉÒÔ½¨Á¢×Ô¼ºµÄFTP Server£¬ÊµÏÖÍøÉÏÎļþÉÏÏÂÔØ·þÎñ£¬ÎÞÐëÔÙ¹ºÖÃרÃŵÄÈí¼þ£¬ºÍÀÖ¶ø²»ÎªÖ®ÄØ£¿ÏÂÃæ¾ÍÆ佨Á¢¹ý³Ì²ûÊöÈçÏ£º
¡¡¡¡1.È·¶¨FTP ServerµÄ¹²ÏíĿ¼
ΪFTP Server½¨Á¢Ò»¸öFTP¹¤×÷Ŀ¼£¬ÔÚ´ËÉ趨Ϊ/home/ftp
¡¡¡¡2.±àдFTP Server³õʼÉèÖõÄShell³ÌÐò£¨setup£©
Óñ༭¹¤¾ß£¨Èç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
for lib in libc libdl libintl libw libnsl libsocket \
nss_nis nss_nisplus nss_dns nss_files
do
done
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}/dev
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
3. ±à¼­/etc/passwdºÍ/etc/shadowÎļþ
ÉèÖÃÄäÃûFTPÕʺţ¬°´ÏÂÃæ·½·¨·Ö±ð¶Ô/etc/passwdºÍ/etc/shadowÁ½¸öÎļþÖÐÔö¼ÓÈçÏÂÊý¾ÝÏ
£¨1£©ÔÚ/etc/passwdÎļþÖÐÔö¼Ó
ftp:x:30000:30000:Anonymous FTP:/home/ftp:/nosuchshell
£¨2£©ÔÚ/etc/shadowÎļþÖÐÔö¼Ó
ftp:NP:6445::::::
4.ÔËÐÐsetup³ÌÐò
ÔÚÔËÐÐsetup³ÌÐò֮ǰ£¬½«¸ÃÎļþÉèÖóÉÖ´ÐÐÎļþ
#chmod +x setup
ÔËÐÐsetup³ÌÐò #setup /home/ftp
ÒÔÉϲ½Öè¾ÍÍê³ÉÁËFTP·þÎñÆ÷µÄ½¨Á¢£¬¼´¿ÉʹÓÃFTP·þÎñÆ÷£¬¿ÉÒÔÓÃÈçexplorer¡¢netscape navigatorµÈä¯ÀÀÆ÷¶ÔFTP·þÎñÆ÷½øÐзÃÎÊ£¬½øÐÐÏÂÔغÍÉÏÔØÎļþ²Ù×÷£¬Ê¹Ó÷dz£·½±ã¡£
ÎÄÕÂÆÀÂÛ

¹²ÓÐ 0 ÌõÆÀÂÛ