centos ftp服务器搭建_自动化搭建微型linux系统ftp服务器

7eff57c1e23657548193bf102a447c5b.png

一、构思

在这里我们是通过在一台拥有两个盘的linux上运行自动化脚本(一个系统所在盘sda,一个空盘sdb),在其系统所在盘创建一个类linux根目录,和boot目录,并通过母linux系统,将其所需的grub,软件,服务等复制过去,然后将它挂载到sdb,最后新建一个linux用母系统的sdb盘作为系统盘.

二、所需文件

74ae83b60384a91430c57b3696ef10c0.png

我的自动化脚本main.sh;另外我实现了用户登录验证,这里我是直接把login这个单独弄了出来,方便复制;还有一个名叫txt的文件,这里他是记录我们所需的命令,例如ls等,如果有其他需要可以在这里面继续添加,防止在给微型linux系统加命令是有不必要的麻烦

四、建立微型linux系统

将上述已经做好的盘,放到准备建立的新的linux系统下

启动服务/usr/local/sbin/vsftpd /etc/vsftpd/vsftpd.conf

a2fe14f7f445426ef38de76ff16fafd2.png

main.sh

#!/bin/bash

#

alias rm=rm

SYSROOT=/mnt/sysroot

BOOT=/mnt/boot

read -p "please input which dev you want to run :" WHDEV

umountall()

{

for PART in `fdisk -l $1 | grep -o "^${1}[0-9]{1,}"`;do

fuser -km $PART &> /dev/null

umount $PART

done

}

umountall $WHDEV

sync

sync

sleep 2

sync

sync

fdinput()

{

read -p "would you want to do this :y/n" PANDUAN

if [ "$PANDUAN" = "y" ];then

dd if=/dev/zero of=$1 bs=512 count=1 &> /dev/null

sync

sync

sync

sync

sync

sleep 20

sync

sync

sync

sync

sync

[ $? -eq 0 ] || return 67

echo '

n

p

1

+100M

n

p

2

+1G

n

p

3

+128M

t

3

82

w ' | fdisk $1 &> /dev/null

[ $? -eq 0 ] || return 68

sync

partprobe $1

sync

echo "please wait 5 seconds"

sync

sync

sleep 5

sync

sync

mkfs -t ext3 ${1}1

[ $? -eq 0 ] || return 69

mkfs -t ext3 ${1}2

[ $? -eq 0 ] || return 69

mkswap ${1}3

[ $? -eq 0 ] || return 69

return 0

else

exit

fi

}

fdinput $WHDEV

case $? in

67)

echo "qingkong dev failed"

;;

68)

echo "create main dev failed"

;;

69)

echo "mkfs dev failed"

;;

0)

echo "successful"

;;

*)

echo "unknow fault"

;;

esac

sync

sync

sleep 2

sync

sync

mountall()

{

[ -d $BOOT ] || mkdir -p $BOOT

[ -d $SYSROOT ] || mkdir -p $SYSROOT

mount ${1}1 $BOOT

mount ${1}2 $SYSROOT

}

mountall $WHDEV

sync

sync

sleep 2

sync

sync

installgrub()

{

grub-install --root-directory=/mnt /dev/sdb $1 &> /dev/null

}

installgrub $WHDEV

sync

sync

sleep 2

sync

sync

mkrootfs()

{

mkdir -p $SYSROOT/{proc,boot,sys,dev,tmp,lib,bin,sbin,root,home.opt,mnt,media,misc}

mkdir -p $SYSROOT/usr/{share/{man,doc},bin,sbin,local/sbin,src,lib}

mkdir -p $SYSROOT/etc/{rc.d,sysconfig}

mkdir -p $SYSROOT/var/{lock,tmp,spool,run,log}

}

mkrootfs

sync

sync

sleep 2

sync

sync

bcp()

{

COMMAND=`which $1 | grep -o "/.*"`

CMDPATH=${COMMAND%/*}

[ -d $SYSROOT$CMDPATH ] || mkdir -p $SYSROOT$CMDPATHI

[ -e $SYSROOT$COMMAND ] || cp $COMMAND $SYSROOT$CMDPATH

for LIB in `ldd $COMMAND | grep -o "/.*lib[^[:space:]]*"`;do

LIBPATH=${LIB%/*}

[ -d $SYSROOT$LIBPATH ] || mkdir -p $SYSROOT$LIBPATH

[ -e $SYSROOT$LIB ] || cp $LIB $SYSROOT$LIBPATH

done

}

for COMD in `cat txt`;do

case $COMD in

q|Q)

break

;;

*)

! which $COMD &> /dev/null && echo "wrond command ,please input again." && continue

bcp $COMD

;;

esac

done

#copy kernel

sync

sync

sleep 2

sync

sync

cpker()

{

cp /boot/vmlinuz-2.6.18-308.el5 $BOOT/vmlinuz

cd /tmp

mkdir myroot

cd myroot/

zcat /boot/initrd-2.6.18-308.el5.img | cpio -id

sed -i '93,97d' init

sed -i 's@/dev/vo10/root@/dev/sda2@' init

find . | cpio -o -H newc --quiet | gzip -9 > $BOOT/initrd.gz

cd /tmp

rm -r myroot/

}

cpker

sync

sync

sleep 2

sync

sync

#conf

cconf()

{

cd $BOOT

cd grub

touch grub.conf

echo "

default=0

timeout=3

title MY Linux

root (hd0,0)

kernel /vmlinuz ro root=/dev/sda2 quiet

initrd /initrd.gz

" > grub.conf

sync

sync

sync

cd $SYSROOT/bin

ln -s bash sh

cd $SYSROOT

cd etc/

touch inittab

echo "

id:3:initdefault:

si::sysinit:/etc/rc.d/rc.sysinit

l0:0:wait:/etc/rc.d/rc.sysdone

l1:1:wait:/sbin/init -t 1 S

1:2345:respawn:/sbin/mingetty tty1

2:2345:respawn:/sbin/mingetty tty2

" > inittab

sync

sync

touch rc.d/rc.sysinit

chmod +x rc.d/rc.sysinit

echo "

#!/bin/bash

#

echo -e "welcome to 033[31mMY033[0m Linux"

#set hostname

[ -f /etc/sysconfig/network ] && source /etc/sysconfig/network

if [ -z $HOSTNAME -o $HOSTNAME='(none)' ];then

/bin/hostname localhost

else

/bin/hostname $HOSTNAME

fi

if [ $? -eq 0 ];then

echo -n "Set the hostname"

echo -e "033[60G[ 033[32mOK033[0m ]"

fi

#initial net device

/sbin/insmod /lib/modules/mii.ko &> /dev/null

/sbin/insmod /lib/modules/pcnet32.ko &> /dev/null

if [ $? -eq 0 ];then

echo -n "Initial nercard driver"

echo -e "033[60G[ 033[32mOK033[0m ]"

fi

#set kernel para

/sbin/sysctl -p &>/dev/null

#remount rootfs

/bin/mount -n -o remount,rw /dev/sda2 / &> /dev/null

if [ $? -eq 0 ];then

echo -n "Rmount rootfs"

echo -e "033[60G[ 033[32mOK033[0m ]"

fi

# Set IPADDR

/sbin/ifconfig lo 127.0.0.1/8 &> /dev/null

/sbin/ifconfig eth0 172.16.128.1/16 &> /dev/null

if [ $? -eq 0 ];then

echo -n "Set IPADDR"

echo -e "033[60G[ 033[32mOK033[0m ]"

fi

" > rc.d/rc.sysinit

touch rc.d/rc.sysdone

chmod +x rc.d/rc.sysdone

echo "

#!/bin/bash

#

exec /sbin/halt -p

" > rc.d/rc.sysdone

touch sysconfig/network

echo "

HOSTNAME=qinqin

" > sysconfig/network

}

cconf

sync

sync

sleep 2

sync

sync

#copy modules lib

cpmo()

{

CPGREP=`modinfo $1 | grep "filename"`

CPCOM=/${CPGREP#*/}

CPMPATH=${CPCOM%/*}

[ -d $SYSROOT$CPMPATH ] || mkdir -p $SYSROOT$CPMPATH

[ -e $SYSROOT$CPCOM ] || cp $COMMAND $SYSROOT$CPCOM

}

while true;do

read -p "please input the modules which you want to copy the lib:" CPMODU

case $CPMODU in

q|Q)

echo "the system will be exit"

break

;;

*)

modinfo $CPMODU &> /dev/null || echo "wrong words ."

cpmo $CPMODU

;;

esac

done

sync

sync

sleep 2

sync

sync

####

cd /mnt/sysroot

find . | cpio -o -H newc --quiet | gzip > /root/sysroot.1

touch /etc/profile

echo "

#!/bin/bash

#

export PS1='[u@hW]$'

" > /etc/profile

cd

#login

cp login /mnt/sysroot/bin/

chmod +x /mnt/sysroot/bin/login

cp -d /lib/libnss_* $SYSROOT/lib/

cp -d /usr/lib/libnss* $SYSROOT/usr/lib/

cp /etc/nsswitch.conf $SYSROOT/etc/

sed -i '39,$d' $SYSROOT/etc/nsswitch.conf

sync

sync

sleep 2

sync

sync

cp -p /etc/passwd /etc/shadow /etc/group $SYSROOT/etc/

sync

sync

sleep 2

sync

sync

tar xf vsftpd-2.3.5.tar.gz

cd vsftpd-2.3.5

sed -i 's/#define VSF_BUILD_PAM/#undef VSF_BUILD_PAM/g' builddefs.h

make

make install

sync

sleep 2

sync

cd

bcp vsftpd

mkdir $SYSROOT/usr/share/empty

mkdir $SYSROOT/etc/vsftpd

chmod 555 $SYSROOT/usr/share/empty

mkdir -pv $SYSROOT/var/ftp/pub

cd vsftpd-2.3.5

cp vsftpd.conf $SYSROOT/etc/vsftpd

sync

sync

sleep 2

sync

sync

cd

rm -r vsftpd-2.3.5

txt

mingetty

sync

sleep

reboot

init

bash

ifconfig

halt

hostname

netstat

ping

mkdir

mount

netstat

umount

vim

cat

touch

ls

rm

insmod

ps

kill

killall

chmod

cp

mv

grep

passwd

sysctl

q

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
您好!要在CentOS搭建FTP服务器,您可以按照以下步骤进行操作: 1. 首先,确保您的CentOS系统已经安装了vsftpd软件包。如果没有安装,可以使用以下命令进行安装: ``` sudo yum install vsftpd ``` 2. 安装完成后,可以使用以下命令启动vsftpd服务,并设置其在系统启动时自动启动: ``` sudo systemctl start vsftpd sudo systemctl enable vsftpd ``` 3. 默认情况下,vsftpd配置文件位于`/etc/vsftpd/vsftpd.conf`。您可以使用文本编辑器(如vim)打开该文件进行配置: ``` sudo vim /etc/vsftpd/vsftpd.conf ``` 4. 在配置文件中,您可以根据需要进行以下设置: - 确保`anonymous_enable`参数设置为`NO`,禁用匿名访问。 - 如果需要允许本地用户访问FTP服务器,确保`local_enable`参数设置为`YES`。 - 如果需要允许写入权限,确保`write_enable`参数设置为`YES`。 - 如果您希望限制用户只能访问其主目录,可以将`chroot_local_user`参数设置为`YES`。 5. 配置完成后,保存并关闭文件。然后重新加载vsftpd服务以使更改生效: ``` sudo systemctl restart vsftpd ``` 6. 防火墙设置:如果您的CentOS系统上启用了防火墙(如firewalld),您需要允许FTP服务通过防火墙。可以使用以下命令进行配置: ``` sudo firewall-cmd --permanent --add-service=ftp sudo firewall-cmd --reload ``` 现在,您的CentOS系统上的FTP服务器应该已经搭建完成了。您可以使用FTP客户端连接到服务器,并使用正确的用户名和密码进行登录。请确保已经为需要访问FTP服务器的用户设置了相应的权限和目录。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值