安装 vsftpd 并配置FTP用户身份验证和访问权限脚本分享

经常遇到新机器要安装 vsftpd,这里记录下脚本安装过程

相关文章: ftp 错误响应550 Create directory operation failed

vsftpd 安装脚本

#!/bin/bash
#
set -x
USERPREFIX=/usr/local/data
FTPUSER=www
yum -y install vsftpd
yum -y install db4-utils
[ ! -d /var/run/www ] && mkdir /var/run/www
cd /etc/vsftpd
cat > loguser.txt <<EOF
lisi
123456
EOF
db_load -T -t hash -f /etc/vsftpd/loguser.txt /etc/vsftpd/loguser.db
[ -f /etc/pam.d/vsftpd ] && mv /etc/pam.d/vsftpd /etc/pam.d/vsftpd.`date +%F`
cat > /etc/pam.d/vsftpd <<EOF
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/loguser
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/loguser
EOF
#useradd -d $USERPREFIX/www -s /sbin/nologiin $FTPUSER
cp /etc/vsftpd/vsftpd.conf /etc/vsftpd/vsftpd.conf.`date +%F`
cat >> /etc/vsftpd/vsftpd.conf <<EOF
pasv_enable=yes
pasv_min_port=4500
pasv_max_port=5000
pasv_addr_resolve=yes
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
hide_file=.*
reverse_lookup_enable=NO
chroot_local_user=YES
secure_chroot_dir=/var/run/www
guest_enable=YES
guest_username=www

EOF
sed -i 's/anonymous_enable=YES/anonymous_enable=NO/g' /etc/vsftpd/vsftpd.conf
sed -i 's/^#xferlog_enable=YES/^xferlog_enable=YES/g' /etc/vsftpd/vsftpd.conf
#sed -i 's@xferlog_file=/var/log/www@xferlog_file=/var/log/www@g' /etc/vsftpd/vsftpd.conf
sed -i 's/xferlog_file=\/var\/log\/xferlog/xferlog_file=\/var\/log\/www/g' /etc/vsftpd/vsftpd.conf
mkdir /etc/vsftpd/users_config
cd /etc/vsftpd/users_config
touch lisi
cat > lisi <<EOF
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=$USERPREFIX/www
EOF
service vsftpd restart

脚本中创建/etc/pam.d/vsftpd文件,指定认证和账户管理模块

vsftpd安装脚本

添加用户

vim /etc/vsftpd/loguser.txt
vsftpd安装脚本

图中第一行是帐号,第二行是帐号密码

准备配置文件(读写权限)

vim /etc/vsftpd/users_config/zhansan
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/usr/local/data/www/

目录结构:

vsftpd安装脚本

加密帐号并重启服务

db_load -T -t hash -f /etc/vsftpd/loguser.txt /etc/vsftpd/loguser.db #将用户帐号密码转换为db数据库并使用hash加密

/etc/init.d/vsftpd restart

然后就可以远程连接了

ftp客户端有很多,推荐使用 FileZila 下载地址:https://filezilla-project.org/

备注:

1、除了开放 21 端口外,配置文件中pasv_max_port和pasv_min_port端口号4500和5000也需要开放

2、一定要关闭 selinux哦

3、项目路径/usr/local/data/www需要给 www属主属组 chown -R ooopic.ooopic /usr/local/data/www

Comments

No comments yet. Why don’t you start the discussion?

发表评论