vsftpd 虚拟用户详细配置

如果企业用户太多,创建太多的系统账户显然是不明智,这时候我们就需要利用虚拟账户,vsftpd虚拟账户的数据保存在Berkeley DB格式的数据文件中,所以需要安装db4-utils工具来创建这样的数据文件。以下适用于Linux(contos6,redhat6,oracle linux6)其他尚未测试。

版本7.0以上安装vsftpd没有db4 需要安装 

yum install -y psmisc net-tools systemd-devel libdb-devel perl-DBI 

需要在vsftpd.conf 配置文件添加一行

allow_writeable_chroot=YES  

不添加报错

500 OOPS: vsftpd: refusing to run with writable root inside chroot()

错误原因为:

- Add stronger checks for the configuration error of running with a writeable
root directory inside a chroot(). This may bite people who carelessly turned
on chroot_local_user but such is life.

上面是7系统和6不一样的地方,其他配置都一样

1)系统安装完成后配置静态IP 

​
vi  /etc/sysconfig/network-scripts/ifcfg-eth0

DEVICE=eth0
HWADDR=00:0C:29:ED:3B:E5
TYPE=Ethernet
UUID=45ad3dc1-032c-43e4-85e4-6d5ebd9ecc88
ONBOOT=yes
NM_CONTROLLED=yes
BOOTPROTO=static
IPADDR=192.168.1.168      ##根据自己需求更改
NETMASK=255.255.255.0
GATEWAY=192.168.1.1

2)关闭selinux

vi  /etc/selinux/config 

SELINUX=disabled     ##将enabled改为disabled

3)配置yum

mv  /etc/yum.repos.d/rhel-source.repo  /etc/yum.repos.d/rhel-source.repo.bak    ##重命名源文件

vi /etc/yum.repos.d/eld.repo                  ##创建新文件

[EL]
name =Linux 6.5 DVD
baseurl=file:///media/Server/
gpgcheck=0
enabled=1
##保存退出

mount  /dev/cdrom  /media/                    ##挂载光盘

yum list                                      ##测试yum

4)开始安装vsftpd

yum -y install vsftpd                     ##安装vsftpd服务

yum -y install db4 db4-utils db4-devel    ##安装虚拟用户数据库相关文件

5)修改vsftpd的PAM验证配置文件

Linux一般都通过PAM设置账户的验证机制,修改login认证配置文件,在文件中的db选项指定并验证账户和密码的数据库文件,注意数据库文件无须.db名称后缀(注意系统版本,如果你是64bit系统,是调用/lib64目录下的模块)估计现在32位用的比较少吧。

vi /etc/pam.d/vsftpd                 ##屏蔽默认的行添加最最下面两行,注意32位系统是/lib目,64位系统是/lib64目录               
#%PAM-1.0
#session    optional     pam_keyinit.so    force revoke
#auth       required    pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
#auth       required    pam_shells.so
#auth       include     password-auth
#account    include     password-auth
#session    required     pam_loginuid.so
#session    include     password-auth
auth required          /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_login
account required      /lib64/security/pam_userdb.so db=/etc/vsftpd/virtual_login

6)添加Linux本地用户及虚拟用户名和密码

useradd  -s  /sbin/nologin   ftptest           ##创建Linux本地用户不登录
 
vi /etc/vsftpd/virtual_login                  ##创建虚拟用户文件,注意第一行是虚拟用户,第二行是虚拟用户的密码             
test1     ##虚拟用户
testpas   ##虚拟密码
test2     ##虚拟用户
testpas   ##虚拟密码

7)编译文件及修改文件权限

 db_load -T -t hash -f /etc/vsftpd/virtual_login /etc/vsftpd/virtual_login.db      ##编译之前创建的虚拟用户文件为db
 chmod 600 /etc/vsftpd/{virtual_login,virtual_login.db}

8)修改vsftpd配置文件

cp  -rp /etc/vsftpd/vsftpd.conf   /etc/vsftpd/vsftpd.conf.bak    ##源配置文件


vi  /etc/vsftpd/vsftpd.conf                                      ##修改原配置文件,参数解释请查看本博客内vsftpd简介  https://blog.csdn.net/make_zhf/article/details/73799945
anonymous_enable=NO
local_enable=YES
write_enable=YES
local_umask=022
anon_upload_enable=NO
anon_mkdir_write_enable=NO
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
chown_uploads=YES
chown_username=ftptest                              ##注意:这里是步骤(6)创建的Linux本地用户ftptest,不改这里虚拟用户将不能下载文件
xferlog_file=/var/log/vsftpd.log
xferlog_std_format=YES
idle_session_timeout=600
data_connection_timeout=180
ascii_upload_enable=YES
ascii_download_enable=YES

pasv_min_port=5881
pasv_max_port=5886

ftpd_banner=Welcome to  ZHOU  FTP service.
chroot_local_user=YES
listen=YES

pam_service_name=vsftpd
userlist_enable=YES
tcp_wrappers=YES
guest_enable=YES
guest_username=ftptest
user_config_dir=/etc/vsftpd/vsftpuser_conf

9)创建虚拟用户上传文件目录

 mkdir  /testftp/test1 -p
 mkdir  /testftp/test2 -p

10)创建虚拟用户配置文件目录及虚拟用户配置文件

mkdir   /etc/vsftpd/vsftpuser_conf  -p       #创建虚拟用户文件目录,存放虚拟用户配置文件
 
[root@jenkins vsftpuser_conf]# cd  /etc/vsftpd/vsftpuser_conf

vi  test1
local_root=/testftp/test1
anon_umask=022
anon_world_readable_only=NO
write_enable=YES
#anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5


vi  test2
local_root=/testftp/test2
anon_umask=022
anon_world_readable_only=NO
write_enable=YES
#anonymous_enable=YES
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
idle_session_timeout=600
data_connection_timeout=120
max_clients=10
max_per_ip=5

##注意:创建虚拟用户配置文件内容,用户必要和virtual_login文件用户保持一致

11)启动启动vsftpd服务及修改虚拟用户上传文件目录用户和用户组

service vsftpd restart

chown ftptest.ftptest  /testftp  -R          ##linux 本地用户


vi  /etc/sysconfig/iptables                           ##添加防火墙规则,放开那21端口,让虚拟用户过来。
-A INPUT -m state --state NEW -m tcp -p tcp --dport 21 -j ACCEPT

service  iptables  restart


 

 

 

 

你可能感兴趣的:(linux)