Linux Centos 通过虚拟用户访问FTP的配置

实验需求:

让下面4个虚拟用户使用系统用户ftpvu的权限来连接到Linux FTP服务器,并确保都锁定在

自己的虚拟用户目录,不能切换到其他目录。 ftp1-3的带宽速率限制在500KB,davidge用户不限制带宽。

系统环境:

[root@cent7-184 ~]# uname -r

3.10.0-229.el7.x86_64

[root@cent7-184 ~]# cat /etc/redhat-release

CentOS Linux release 7.5.1804 (Core)

还需要先关闭防火墙和selinux。

先yum安装vsftpd:

yum -y install vsftpd

查询是否正确安装vsftpd:

[root@cent7-184 ~]# rpm -qa  vsftpd

vsftpd-3.0.2-25.el7.x86_64

之后安装PAM(用于用户认证)和DB4(用于生成虚拟用户的用户名密码的db文件)

yum -y install pam pam-devel db4 db-devel db4-utils db4-tcl

[root@cent7-184 ~]# rpm -qa  pam pam-devel db4 db-devel db4-utils db4-tcl

pam-devel-1.1.8-22.el7.x86_64

pam-1.1.8-22.el7.i686

pam-1.1.8-22.el7.x86_64

创建用于虚拟用户的系统用户ftpvu,并禁止通过shell登陆,不创建家目录。

[root@cent7-184 ~]# useradd ftpvu -M -s /sbin/nologin

[root@cent7-184 ~]# id ftpvu

uid=8890(ftpvu) gid=8890(ftpvu) groups=8890(ftpvu)

创建虚拟用户信息的文件:

直接在命令行执行即可(奇数行是用户名,偶数行是密码)

也可以自己通过vi, vim来复制下面的用户信息来手动创建。

cat >>/etc/vsftpd/virtusers <<EOF
ftp1
123456
ftp2
123456
ftp3
123456
davidge
123456
EOF

生成虚拟用户认证的db文件

db_load -T -t hash -f /etc/vsftpd/virtusers  /etc/vsftpd/virtusers.db

如果新增用户后需要重新执行上面的db_load命令来重新生成加密用户信息。

配置pam验证的配置文件:

cat  >/etc/pam.d/vsftpd <<EOF

#%PAM-1.0

auth     sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtusers

account  sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtusers

EOF

[root@cent7-184 vsftpd]# cat /etc/pam.d/vsftpd

#%PAM-1.0

auth     sufficient /lib64/security/pam_userdb.so  db=/etc/vsftpd/virtusers

account  sufficient /lib64/security/pam_userdb.so

创建虚拟用户的存储路径并修改目录权限为755,owner为: ftpvu

[root@cent7-184 ~]# mkdir -p /data/ftp/{ftp1,ftp2,ftp3}

[root@cent7-184 ~]# mkdir -p /data/ftp/davidge

[root@cent7-184 ~]# chmod -R 755 /data/ftp/

[root@cent7-184 ~]# chown -R ftpvu.  /data/ftp/

[root@cent7-184 ~]# ls -l /data/ftp/

total 0

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 davidge

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 ftp1

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 ftp2

drwxr-xr-x 2 ftpvu ftpvu 6 Mar  2 10:53 ftp3

给ftp的用户指定家目录:

[root@cent7-184 ftp1]# usermod -d /data/ftp/ ftpvu

[root@cent7-184 ftp1]# grep ftp /etc/passwd

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

ftpvu:x:8890:8890::/data/ftp/:/sbin/nologin

给每个用户创建虚拟用户个人配置文件:

先创建配置文件的根目录:

 mkdir /etc/vsftpd/vconf

shell命令行直接创建ftp1用户的配置文件:

cat >>/etc/vsftpd/vconf/ftp1<<EOF
local_root=/data/ftp/ftp1
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

创建ftp2用户的配置文件

cat >>/etc/vsftpd/vconf/ftp2<<EOF
local_root=/data/ftp/ftp2
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

创建ftp3用户的配置文件

cat >>/etc/vsftpd/vconf/ftp3<<EOF
local_root=/data/ftp/ftp3
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

创建davidge用户的配置文件

cat >>/etc/vsftpd/vconf/davidge<<EOF
local_root=/data/ftp/davidge
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
EOF

完成后通过cat查询配置文件信息:

FTP配置文件重要参数说明:

anonymous_enable=NO    #禁用匿名用户

dual_log_enable=yes        # 配置双重日志。

xferlog_file=/var/log/xferlog   #访问日志的文件路径

guest_enable=YES                #启用虚拟用户

guest_username=ftpvu      #指定虚拟用户的系统用户名

virtual_use_local_privs=YES  #虚拟用户使用本地用户的权限

user_config_dir=/etc/vsftpd/vconf    #虚拟用户配置文件目录

allow_writeable_chroot=YES     ##可写(可上传)

chroot_local_user=YES     #本地用户禁锢在宿主目录中

把下面的配置文件追加到vsftpd.conf里面,并禁用匿名用户,同时开启ftp的日志:

通过sed禁用匿名用户

sed -i 's@anonymous_enable=YES@anonymous_enable=NO@g' /etc/vsftpd/vsftpd.conf 

追加配置文件新到vsftpd.conf

cat >>/etc/vsftpd/vsftpd.conf <<EOF
dual_log_enable=yes
xferlog_file=/var/log/xferlog
guest_enable=YES
guest_username=ftpvu
virtual_use_local_privs=YES
user_config_dir=/etc/vsftpd/vconf
allow_writeable_chroot=YES
anon_other_write_enable=YES
chroot_local_user=YES
EOF

最后生效的配置文件内容:

[root@cent7-184 vsftpd]# grep '^[a-Z]' /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_std_format=YES

listen=NO

listen_ipv6=YES

pam_service_name=vsftpd

userlist_enable=YES

tcp_wrappers=YES

dual_log_enable=yes

xferlog_enable=YES

xferlog_file=/var/log/xferlog

guest_enable=YES

guest_username=ftpvu

virtual_use_local_privs=YES

user_config_dir=/etc/vsftpd/vconf

allow_writeable_chroot=YES

anon_other_write_enable=YES

[root@cent7-184 ftp1]# systemctl restart  vsftpd.service

[root@cent7-184 ftp1]# lsof -i :21

COMMAND   PID USER   FD   TYPE   DEVICE SIZE/OFF NODE NAME

vsftpd  20846 root    4u  IPv6 33721328      0t0  TCP *:ftp (LISTEN)

[root@cent7-184 ftp1]# netstat -lntup|grep ftp

tcp6       0      0 :::21                   :::*                    LISTEN      20846/vsftpd

登陆测试和日志:

使用 davidge 用户传输的时候不限制速度:

只能在自己的虚拟用户目录下操作,不可以切换到其他目录,否则提示550切换目录失败

添加新用户的方法:

cat >>/etc/vsftpd/virtusers <<EOF
ftp10
123456
EOF

db_load -T -t hash -f /etc/vsftpd/virtusers  /etc/vsftpd/virtusers.db

mkdir -p /data/ftp/ftp10

chown -R ftpvu.  /data/ftp/

cat >>/etc/vsftpd/vconf/ftp10<<EOF
local_root=/data/ftp/ftp10
anonymous_enable=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
write_enable=YES
local_umask=022
idle_session_timeout=600
data_connection_timeout=120
local_max_rate=512000
EOF

systemctl restart  vsftpd.service

lsof -i :21

上面几条命令的截图:

验证登陆和速率:

错误提示信息和解决办法:

1. 500 OOPS:

由于建立的本地用户没有指定家目录,需要通过usermod来指定定义的家目录。

500 OOPS: cannot change directory:/home/ftpvu

Login failed.

[root@cent7-184 ftp1]# usermod -d /data/ftp/ ftpvu

[root@cent7-184 ftp1]# grep ftp /etc/passwd

ftp:x:14:50:FTP User:/var/ftp:/sbin/nologin

ftpvu:x:8890:8890::/data/ftp/:/sbin/nologin

2. 550 Failed:

ftp> cd /var

550 Failed to change directory.

550 Failed- 客户端没有切换目录的权限,由于限制了目录只能访问自己的目录。

chroot_local_user=YES

如果想让授权的用访问其他目录可以配置下面的2行:

chroot_list_enable=YES

chroot_list_file=/etc/vsftpd/vsftpd.chroot_list

并把需要切换目录的用户放入list文件: /etc/vsftpd/vsftpd.chroot_list

Linux Centos 通过虚拟用户访问FTP的配置的更多相关文章

  1. CentOS7 FTP服务搭建(虚拟用户访问FTP服务)

    概述 最近在搞Oracle在Linux系统下集群,针对Linux系统,笔人也是一片空白.Liunx外部文件的传输,避免不了使用FTP服务,所以现在就整理下,CentOS7环境下,FTP服务的搭建.FT ...

  2. Centos下安装FTP并进行虚拟用户访问方式配置

    1. 安装认证所需包 [root@localhost]#yum install pam* [root@localhost]#yum install db4* 首先安装PAM(用于用户认证)和DB4(用 ...

  3. Linux系统学习 十八、VSFTP服务—虚拟用户访问—配置虚拟用户访问

    配置虚拟用户访问 首先至少要关闭userlist 改完配置文件是要重启服务来使它生效 其实在刚装好vsftp的时候的配置文件不用修改的情况下配置虚拟用户访问控制是最好的 local_root选项不影响 ...

  4. Linux CentOS 6.5 下 vsftpd ftp服务器搭建

    Linux CentOS 6.5 下 vsftpd ftp服务器搭建 by:授客 QQ:1033553122   操作系统环境:CentOS 6.5-x86_64 下载地址:http://www.ce ...

  5. 在Linux(CentOS 6.6)服务器上安装并配置基于Apache的SVN服务器

    #!/bin/bash # # 在Linux(CentOS 6.6)服务器上安装并配置基于Apache的SVN服务器: # # .安装服务 # .创建svn版本库 # .创建svn用户 # .配置sv ...

  6. Linux(Centos)配置vsftp使用账号密码(虚拟用户)登录ftp进行文件上传和修改

    安装vsftp yum install vsftpd -y 安装完成之后进入vsftp的配置文件夹 cd /etc/vsftpd/ 文件夹内容如下 [root@VM-0-12-centos vsftp ...

  7. vsftpd搭建ftp服务,并实现虚拟用户访问

    安装vsftpd服务: yum install vsftpd -y [root@wadeson ~]# rpm -ql vsftpd /etc/logrotate.d/vsftpd /etc/pam. ...

  8. 007.FTP虚拟用户访问

    一 虚拟用户优点 可对每个用户进行单独设定权限. 每个用户单独配置文件,单独指定主目录,而不能访问系统的其它资源. 注意:虚拟用户目录和本地用户访问目录不冲突. 二 配置虚拟用户步骤 添加虚拟用户口令 ...

  9. Linux系统学习 十九、VSFTP服务—虚拟用户访问—为每个虚拟用户建立自己的配置文件,单独定义权限

    为每个虚拟用户建立自己的配置文件,单独定义权限 可以给每个虚拟用户单独建立目录,并建立自己的配置文件.这样方便单独配置权限,并可以单独指定上传目录 1.修改配置文件 vi /etc/vsftpd/vs ...

随机推荐

  1. 微信小程序获取数据、处理数据、绑定数据关键步骤记录

    onload:function(event){ var inTheatersUrl ="https://api.douban.com"+"/v2/movie/in_the ...

  2. carousel 插件隐藏列表中几项导致左右切换出错

    1. 一般的应用场景: 用于左右快速切换显示的列表内容,比如对员工的切换. 对于这种情况必不可少需要按照部门进行搜索,目前我的做法是首次加载所有该用户可以查看的员工列表,选择部门后又选择的隐藏掉其他不 ...

  3. webapi 开启跨域支持

    1.Global文件: GlobalConfiguration.Configuration.EnableCors(); 2.需要跨域的action或controller添加跨域规则 [EnableCo ...

  4. php静态变量static

    静态变量 function test() { static $a = 0; echo $a; $a++; } test(); test(); test();

  5. php session 存储到redis

    PHP 的会话默认是以文件的形式存在的,可以配置到 NoSQL 中,即提高了访问速度,又能很好地实现会话共享,,,爽歪歪! 配置方式如下: 方法一:修改 php.ini 的设置 1 2 session ...

  6. CSS选择器备忘录

    CSS选择器备忘录 基本选择器 Selector Meaning Example 通用选择器 匹配任何元素 * 标签选择器 CSS1中称之为元素选择器,匹配为指定标签的所有元素 div 伪元素选择器 ...

  7. 《C#多线程编程实现方式》

    一.使用线程的理由 1.可以使用线程将代码同其他代码隔离,提高应用程序的可靠性. 2.可以使用线程来简化编码. 3.可以使用线程来实现并发执行. 二.基本知识 1.进程与线程:进程作为操作系统执行程序 ...

  8. 使用windows资源管理器打开jar

    在命令行里输入: assoc .jar=CompressedFolder

  9. 让你的sharepoint2013具有EMS快递查询的功能

    <iframe name="kuaidi100" src="http://www.kuaidi100.com/frame/app/index2.html" ...

  10. 【Android学习入门】Android中activity的启动模式

    启动模式简单地说就是Activity启动时的策略,在Androidmanifest.xml文件中的标签android:launchMode属性设置,在Android中Activity共有四种启动模式分 ...