首先 安装vsftpd服务
[root@localhost ~]# yum -y install vsftpd
已加载插件:langpacks, product-id, subscription-manager
This system is not registered to Red Hat Subscription Management. You can use subscription-manager to register.
正在解决依赖关系
--> 正在检查事务
---> 软件包 vsftpd.x86_64.0.3.0.2-9.el7 将被 安装
--> 解决依赖关系完成
…………
已安装:
vsftpd.x86_64 0:3.0.2-9.el7
完毕!
- 匿名登录
修改配置文件vim /etc/vsftpd/vsftpd.conf
#YES表示允许匿名登录
anonymous_enable=YES
anon_umask=022
#允许写入文件
write_enable=YES
#允许上传文件
anon_upload_enable=YES
#允许创建文件
anon_mkdir_write_enable=YES
#不允许其他操作
anon_other_write_enable=NO
- 本地用户登录
修改配置文件vim /etc/vsftpd/vsftpd.conf
#不允许匿名登录
anonymous_enable=NO
anon_umask=022
#允许本地用户登录
local_enable=YES
#允许写入
write_enable=YES
anon_upload_enable=NO
#本地用户模式创建文件的umask值
local_umask=022
anon_mkdir_write_enable=YES
anon_other_write_enable=NO
userlist_deny=YES
userlist_enable=YES
pam_service_name=vsftpd
- 虚拟用户登录
人狠话不多,直接上脚本;
#!/bin/bash
check_user (){
username=$1
if [ "${username}" ]; then
echo "用户已存在,退出脚本。。。。"
exit 1
fi
}
install_vsftp (){
read -p "请输入登录ftp的用户名" USERNAME
read -p "请输入登录ftp的密码" PASSWORD
read -p "请输入登录ftp的端口" PORT
read -p "请输入用户的主目录" LOCAL_ROOT
VSFTPD_DIR="/etc/vsftpd/"
username=$(cat /etc/passwd |awk -F : '{print $1}' |grep -w ${USERNAME})
check_user ${username}
mkdir -p ${LOCAL_ROOT}/${USERNAME}
useradd ${USERNAME} -M -s /sbin/nologin -d ${LOCAL_ROOT}
chown -R ${USERNAME}:${USERNAME} ${LOCAL_ROOT}
useradd vsftpd -M -s /sbin/nologin
yum -y install vsftpd
mv /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.confbak
>/etc/vsftpd/vsftpd.conf
cat >/etc/vsftpd/vsftpd.conf <<EOF
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=NO
listen_port=${PORT}
xferlog_std_format=YES
chroot_local_user=NO
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
userlist_deny=NO
userlist_file=/etc/vsftpd/user_list
tcp_wrappers=YES
guest_enable=YES
guest_username=${USERNAME}
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf
anon_upload_enable=NO
anon_mkdir_write_enable=NO
ascii_upload_enable=YES
ascii_download_enable=YES
#pasv_address=0.0.0.0
pasv_enable=YES
pasv_min_port=31024
pasv_max_port=32048
#banner_file=/etc/vsftpd/ftpbanner
EOF
touch /var/log/vsftpd.log
chown -R vsftpd.vsftpd /var/log/vsftpd.log
echo "$USERNAME" >/etc/vsftpd/user_list
echo "$USERNAME" >/etc/vsftpd/chroot_list
echo "$USERNAME" >>/etc/vsftpd/vuser.txt
echo "$PASSWORD" >>/etc/vsftpd/vuser.txt
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
mv /etc/pam.d/vsftpd /etc/pam.d/vsftpdbak
cat > /etc/pam.d/vsftpd <<EOF
#%PAM-1.0
#auth required pam_userdb.so db=/etc/vsftpd/vuser
#account required pam_userdb.so db=/etc/vsftpd/vuser
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser
EOF
mkdir -p /etc/vsftpd/vconf
cat > /etc/vsftpd/vconf/$USERNAME <<EOF
local_root=${LOCAL_ROOT}
#指定虚拟用户的具体主路径
anonymous_enable=NO
#设定不允许匿名用户访问
write_enable=YES
#设定允许写操作
local_umask=022
#设定上传文件权限掩码
anon_upload_enable=NO
#设定不允许匿名用户上传
anon_mkdir_write_enable=NO
#设定不允许匿名用户建立目录
idle_session_timeout=600
#设定空闲连接超时时间
data_connection_timeout=120
#设定单次连续传输最大时间
max_clients=10
#设定并发客户端访问个数
max_per_ip=5
#设定单个客户端的最大线程数,这个配置主要来照顾Flashget、迅雷等多线程下载软件
local_max_rate=50000
#设定该用户的最大传输速率,单位b/s
EOF
/etc/init.d/vsftpd restart
if [[ "$?" == "0" ]]; then
echo "成功安装ftp服务器,用户名为:${USERNAME},密码为:${PASSWORD},端口为:${PORT}"
else
echo "安装ftp服务器失败,请检查!"
fi
}
useradd_ftp (){
read -p "请输入新增的ftp用户名:" USERNAME
read -p "请输入新增的ftp密码:" PASSWORD
echo "$USERNAME" >/etc/vsftpd/user_list
echo "$USERNAME" >/etc/vsftpd/chroot_list
echo "${USERNAME}" >> /etc/vsftpd/vuser.txt
echo "${PASSWORD}" >> /etc/vsftpd/vuser.txt
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuser.db
/etc/init.d/vsftpd restart
if [[ "$?" == "0" ]]; then
echo "新增用户成功,登录名为:${USERNAME},密码为:${PASSWORD}"
else
echo "新增用户失败,请检查!"
fi
}
main (){
echo "1.安装FTP服务器。"
echo "2.添加FTP的登录用户"
read -p "请选择,请输入数字:" SELECT
if [ "${SELECT}" == "1" ];then
install_vsftp
elif [ "${SELECT}" == "2" ]; then
useradd_ftp
else
echo "请输入正确的数字"
fi
}
main