说明:配个web站点搭建的ftp,独立用户
1. 单用户版本
#!/bin/bash # 定义web网站的根目录 _wwwroot=/home/htdocs # 定义web运行的用户 _web_user=ycan # 定义ftp的用户名密码 _virtual_user=ycan _virtual_passwd=ycan.xxxxx yum install db4-utils db4 vsftpd -y ( id $_virtual_user >/dev/null 2>&1 ) || useradd -s /sbin/nologin $_virtual_user [ ! -d $_wwwroot ] && mkdir -p $_wwwroot [ -f /etc/vsftpd/vsftpd.conf ] && mv /etc/vsftpd/vsftpd.conf{,.bak} cat > /etc/vsftpd/vsftpd.conf <<END anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES chown_uploads=YES chown_username=$_web_user xferlog_std_format=YES idle_session_timeout=600 data_connection_timeout=120 chroot_local_user=YES listen=YES tcp_wrappers=YES userlist_enable=YES ################ virtual user ################## pam_service_name=vsftpd.virtual virtual_use_local_privs=YES guest_enable=YES guest_username=$_web_user local_root=$_wwwroot END cat > /etc/vsftpd/vuser.txt <<END $_virtual_user $_virtual_passwd END [ -f /etc/vsftpd/vuser.txt ] && db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vsftpd-virtual-user.db chmod 600 /etc/vsftpd/vuser.txt chmod 600 /etc/vsftpd/vsftpd-virtual-user.db cat > /etc/pam.d/vsftpd.virtual <<END #M-1.0 auth required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user account required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user session required pam_loginuid.so END chkconfig vsftpd on service vsftpd restart
2. 多用户版本
#!/bin/bash #author ycan #date 20130507 #mail yoncan@qq.com # 定义web网站的根目录 _wwwroot=/home/htdocs # 定义web运行的用户 _web_user=ycan # 定义ftp的用户名前缀,用户名会以用户名{01..21}的形式存在,密码会以用户名加".654123" _vuser=ycan yum install db4-utils db4 vsftpd -y ( id $_virtual_user >/dev/null 2>&1 ) || useradd -s /sbin/nologin $_virtual_user [ ! -d $_wwwroot ] && mkdir -p $_wwwroot [ -f /etc/vsftpd/vsftpd.conf ] && mv /etc/vsftpd/vsftpd.conf{,.bak} cat > /etc/vsftpd/vsftpd.conf <<END anonymous_enable=NO local_enable=YES write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES chown_uploads=YES chown_username=$_web_user xferlog_std_format=YES idle_session_timeout=600 data_connection_timeout=120 chroot_local_user=YES listen=YES tcp_wrappers=YES userlist_enable=YES ################ virtual user ################## pam_service_name=vsftpd.virtual virtual_use_local_privs=YES guest_enable=YES user_sub_token=\$USER guest_username=$_web_user local_root=$_wwwroot/\$USER END # seq 得到的是2位数的用户+数字 for i in `seq -f '$_vuser%02g' 1 21` do echo "$i" >>/etc/vsftpd/vuser.txt echo "$i.654123" >>/etc/vsftpd/vuser.txt mkdir -p $_wwwroot/$i echo "user:$i" > $_wwwroot/$i/$i.file chown -R $_web_user $_wwwroot/$i done [ -f /etc/vsftpd/vuser.txt ] && db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vsftpd-virtual-user.db chmod 600 /etc/vsftpd/vuser.txt chmod 600 /etc/vsftpd/vsftpd-virtual-user.db cat > /etc/pam.d/vsftpd.virtual <<END #M-1.0 auth required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user account required pam_userdb.so db=/etc/vsftpd/vsftpd-virtual-user session required pam_loginuid.so END chkconfig vsftpd on service vsftpd restart
转载于:https://blog.51cto.com/yangcan/1195872