Linux Vsftpd服务

94

安装vsftpd

yum install vsftpd -y

系统认证

vi /etc/vsftpd/vsftpd.conf
[root@localhost pub]# egrep -v "#|^$" /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
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 #进行认证首先,安装Berkeley DB工具,很多人找不到db_load的问题就是没有安装这个包
#更改配置文件
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  # 使用pam认证模块
userlist_enable=YES  # 禁止用户登录名单
tcp_wrappers=YES
guest_enable=YES   #开启虚拟用户
guest_username=ftp  #指定虚拟用户映射到本地的用户//指定虚拟用户的宿主用户,CentOS中已经有内置的ftp用户了 这里的用户也可以用//useradd vsftpuser -s /sbin/nologin -M自行创建
user_config_dir=/etc/vsftpd/vuser_conf  #指定虚拟用户自定义配置文件路径

#创建用户密码本
vim /etc/vsftpd/vuser_passwd.txt
backup #user
123456 #passwd
#生成虚拟用户认证的db文件
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 #vsftpd.conf 里面指定的路径
vim /etc/vsftpd/vuser_conf/backup  #这里文件名必须要和之前创建的vuser_passwd.txt中虚拟用户名一一对应
local_root=/databak/data   #指定他的主目录
write_enable=YES   #开启写
anon_umask=022   #匿名umask码
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  #最新的vsftpd要求对主目录不能有写的权限所以ftp为755,主目录下面的子目录再设置757权限
chmod 757 /databak/data

service vsftpd restart

服务端脚本安装

#!/bin/bash
#author:vaedit
#date:2017/11/14
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"

配置文件注意点

#chroot控制
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:递规传子目录
#用法
#将本地/root/ssf 文件拷贝到远程ftp的根目录
ncftpput -u backup -p 123456 192.168.246.128 . /root/ssf

#常用操作命令
lls: 列出本地当前目录文件; 
lmkdir : 本地建立目录; 
lrename: 本地文件改名; 
lpwd: 显示当前本地路径;
lchmod: 改变本地文件权限; 
lpage: 显示本地文件内容; 
lrm: 删除本地文件; 
lrmdir: 删除本地目录。