安装vsftpd
yum install vsftpd -y
系统认证
vi /etc/vsftpd/vsftpd.conf
[root@localhost pub]
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
service vsftpd start
useradd -s /sbin/nologin backup
passwd backup
touch /etc/vsftpd/chroot_list
虚拟用户
yum install db4 db4-utils
vi /etc/vsftpd/vsftpd.conf
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
ascii_upload_enable=YES
ascii_download_enable=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftp
user_config_dir=/etc/vsftpd/vuser_conf
vim /etc/vsftpd/vuser_passwd.txt
backup
123456
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
vim /etc/pam.d/vsftpd
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
mkdir /etc/vsftpd/vuser_conf
vim /etc/vsftpd/vuser_conf/backup
local_root=/databak/data
write_enable=YES
anon_umask=022
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
mkdir /databak/data -p
chmod 755 /databak
chmod 757 /databak/data
service vsftpd restart
服务端脚本安装
#!/bin/bash
read -p "请输出用户名" name
read -p "请输入密码" password
echo -e '\033[32;40;1m开始安装\033[0m'
yum install vsftpd db4 db4-utils -y
useradd -s /sbin/nologin ftpuser
mv /etc/vsftpd/vsftpd.conf{,.bak}
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=YES
xferlog_file=/var/log/xferlog
xferlog_std_format=YES
userlist_enable=YES
chroot_list_enable=YES
chroot_local_user=YES
chroot_list_file=/etc/vsftpd/chroot_list
listen=YES
pam_service_name=vsftpd
tcp_wrappers=YES
guest_enable=YES
guest_username=ftpuser
user_config_dir=/etc/vsftpd/vuser_conf
virtual_use_local_privs=YES
EOF
touch /etc/vsftpd/chroot_list
cat>/etc/vsftpd/vuser_passwd.txt<<EOF
$name
$password
EOF
db_load -T -t hash -f /etc/vsftpd/vuser_passwd.txt /etc/vsftpd/vuser_passwd.db
chmod 700 /etc/vsftpd/vuser_passwd.db
cat>/etc/pam.d/vsftpd<<EOF
auth required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
account required /lib64/security/pam_userdb.so db=/etc/vsftpd/vuser_passwd
EOF
mkdir /etc/vsftpd/vuser_conf -p
cat>/etc/vsftpd/vuser_conf/$name<<EOF
local_root=/data/ftp_$name
write_enable=YES
anon_world_readable_only=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
EOF
mkdir /data/ftp_$name -p
chown ftpuser.ftpuser /data/ftp_$name -R
setenforce 0
service vsftpd start
ps -ef|grep vsftpd
netstat -ntulp|grep ":21"
配置文件注意点
1)当chroot_list_enable=YES,chroot_local_user=YES时,在/etc/vsftpd/chroot_list文件中列出的用户,可以切换到上级目录;未在文件中列出的用户,不能切换到站点根目录的上级目录。
2)当chroot_list_enable=YES,chroot_local_user=NO时,在/etc/vsftpd/chroot_list文件中列出的用户,不能切换到站点根目录的上级目录;未在文件中列出的用户,可以切换到上级目录。
3)当chroot_list_enable=NO,chroot_local_user=YES时,所有用户均不能切换到上级目录。
4)当chroot_list_enable=NO,chroot_local_user=NO时,所有用户均可以切换到上级目录。
对用户的访问控制由/etc/vsftpd/user_list和/etc/vsftpd/ftpusers文件来控制实现。相关配置命令如下:
userlist_enable=YES
// 决定/etc/vsftpd/user_list文件是否启用生效。YES则生效,NO不生效。
userlist_deny=YES
// 决定/etc/vsftpd/user_list文件中的用户是允许访问还是不允许访问。若设置为YES,则/etc/vsftpd/user_list 文件中的用户将不允许访问FTP服务器;若设置为NO,则只有vsftpd.user_list文件中的用户,才能访问FTP服务器。
客户端好用的命令行工具ncftp安装使用
yum install ncftp -y
tar zxvf ncftp-3.2.3-src.tar.gz
cd ncftp-3.2.3/
./configure --prefix=/usr/local/ncftp
make && make install
-u:指定登录FTP服务器时使用的用户名;
-p:指定登录FTP服务器时使用的密码;
-P:如果FTP服务器没有使用默认的TCP协议的21端口,则使用此选项指定FTP服务器的端口号。
-m:在传之前尝试在目录位置创建目录(用于传目录的情况)
-E: 使用主动模式
-R:递规传子目录
ncftpput -u backup -p 123456 192.168.246.128 . /root/ssf
lls: 列出本地当前目录文件;
lmkdir : 本地建立目录;
lrename: 本地文件改名;
lpwd: 显示当前本地路径;
lchmod: 改变本地文件权限;
lpage: 显示本地文件内容;
lrm: 删除本地文件;
lrmdir: 删除本地目录。