Linux 下的FTP服务-2-vsftpd配置虚拟用户
2017-07-02 00:00
856 查看
摘要: vsftpd 的用户分为两大类: 匿名用户和具体用户. 具体用户的用户又分为: 系统用户和虚拟用户, 系统用户和虚拟用户只能选择一种方式. 虚拟用户相对于Linux 系统用户而言, 虚拟用户只能通过FTP 协议登录FTP服务器, 不能用于ssh 登录Linux 服务器. 虽然说虚拟用户方式配置复杂, 但是笔者更倾向于使用这种方式, 因为如果使用系统用户的话, 那么根本无需搭建FTP 服务器, 直接通过Wincp 等工具直接登录Linux 服务器操作即可.
我们来搭建一个ftp服务, 供开发组测试组同事使用, 用户及其权限如下:
用户密码均为: 用户名@123
虚拟用户需要一个系统用户作为代理用户,笔者使用admin 用户. 也就是说, 虚拟用户在对文件进行增删改操作时, 相当于admin 用户
使用root 用户创建文件夹
将新创建文件所有者和所属组修改为admin, 以保证admin用户对此目录有完全访问权限.因为虚拟用户的代理用户为admin.
修改anon 目录权限为777,因为虚拟用户相当于其它人, 所以需要将目录其它人权限设置为7, 这样匿名用户才能进行上传下载文件
文件格式: 一行用户名一行密码:
将原来内容全部注释, 新添加两行, 注意vusers文件不添加后缀名.db
对于required 后饮用的库文件, 64位系统和32位系统不一样, 笔者系统为64位操作系统
目录中一个用户对应一个文件,文件名为用户名
** develop **
** developAdmin **
** test**
** testAdmin **
** superAdmin **
文件格式: 一个用户名一行,此处我们只配置superAdmin 用户.
#附: 搭建问题
确保防火墙关闭或释放了ftp 相关端口
确保ftp_home_dir, allow_ftpd_full_access, selinux 配置正确
确保虚拟用户代理用户admin 对根目录的权限是否正确.
注意虚拟用户名不能使用ftp, 否则会出现意想不到的问题的
我们来搭建一个ftp服务, 供开发组测试组同事使用, 用户及其权限如下:
用户角色 | 用户名 | 根目录 | 可读 | 上传文件 | 新建文件夹 | 删除/重命名 | 跳出主目录 |
---|---|---|---|---|---|---|---|
匿名用户 | anonymous | /var/data/ftp/anon | Y | Y | N | N | N |
开发组管理员 | developAdmin | /var/data/ftp/develop | Y | Y | Y | Y | N |
开发组普通用户 | develop | /var/data/ftp/develop | Y | Y | N | N | N |
测试组管理员 | testAdmin | /var/data/ftp/test | Y | Y | Y | Y | N |
测试组普通用户 | test | /var/data/ftp/test | Y | Y | N | N | N |
超级用户 | superAdmin | /var/data/ftp | Y | Y | Y | Y | Y |
虚拟用户需要一个系统用户作为代理用户,笔者使用admin 用户. 也就是说, 虚拟用户在对文件进行增删改操作时, 相当于admin 用户
1 创建用户目录
注意:使用root 用户创建文件夹
将新创建文件所有者和所属组修改为admin, 以保证admin用户对此目录有完全访问权限.因为虚拟用户的代理用户为admin.
修改anon 目录权限为777,因为虚拟用户相当于其它人, 所以需要将目录其它人权限设置为7, 这样匿名用户才能进行上传下载文件
[root@localhost ~]# mkdir -p /var/data/ftp/anon /var/data/ftp/develop /var/data/ftp/test [root@localhost ~]# chown admin:admin /var/data/ftp/anon /var/data/ftp/develop /var/data/ftp/test [root@localhost ~]# chmod 777 /var/data/ftp/anon [root@localhost ~]# ll /var/data/ftp/ total 16 drwxrwxrwx. 2 admin admin 4096 Jul 1 19:22 anon drwxr-xr-x. 2 admin admin 4096 Jul 1 19:22 develop drwxr-xr-x. 2 admin admin 4096 Jul 1 19:22 test drwxr-xr-x. 2 admin admin 4096 Jun 20 20:09 wars [root@localhost ~]#
2. 设置数据源
2.1 创建用户名密码文件
文件位置: /etc/vsftpd/vusers.list文件格式: 一行用户名一行密码:
[root@localhost ~]# vim /etc/vsftpd/vusers.list developAdmin developAdmin@123 develop develop@123 testAdmin testAdmin@123 test test@123 superAdmin superAdmin@123
2.2 生成用户名密码数据库文件
[root@localhost ~]# db_load -T -t hash -f /etc/vsftpd/vusers.list /etc/vsftpd/vusers.db [root@localhost ~]# ls /etc/vsftpd/ ftpusers vsftpd.conf vsftpd.conf.rpmsave vusers.list user_list vsftpd_conf_migrate.sh vusers.db [root@localhost ~]#
2.3 配置用户数据源
编辑文件: /etc/pam.d/vsftpd将原来内容全部注释, 新添加两行, 注意vusers文件不添加后缀名.db
对于required 后饮用的库文件, 64位系统和32位系统不一样, 笔者系统为64位操作系统
[root@localhost vsftpd]# vim /etc/pam.d/vsftpd #%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 pam_userdb.so db=/etc/vsftpd/vusers account required pam_userdb.so db=/etc/vsftpd/vusers
2.4 创建虚拟用户配置目录
将不同用户的具体配置文件存放在/etc/vsftpd/vusers_conf 目录下目录中一个用户对应一个文件,文件名为用户名
[root@localhost ~]# mkdir /etc/vsftpd/vusers_conf
2.5 为不同用户创建不同的配置文件
2.5.1 创建配置文件
为每一个用户创建自己的配置文件, 文件名为用户名[root@localhost ~]# touch /etc/vsftpd/vusers_conf/develop [root@localhost ~]# touch /etc/vsftpd/vusers_conf/developAdmin [root@localhost ~]# touch /etc/vsftpd/vusers_conf/test [root@localhost ~]# touch /etc/vsftpd/vusers_conf/testAdmin [root@localhost ~]# touch /etc/vsftpd/vusers_conf/superAdmin [root@localhost ~]# ls /etc/vsftpd/vusers_conf/ develop developAdmin superAdmin test testAdmin
2.5.2 编辑配置文件
virtual_use_local_privs 如果设置为YES 则表示此用户拥有和代理的系统用户admin 完全一样的权限.因为笔者设置的用户根目录的所有者和所属组均为admin, 所以如果设置了YES 就代表拥有了对这个目录操作的所有权限.** develop **
#设定根目录 local_root=/var/data/ftp/develop # 设定权限,不拥有和代理系统用于同样的权限 virtual_use_local_privs=NO #设定写权限 write_enable=YES #设定权限:可以上传文件 anon_upload_enable=YES #设定权限:不能新建目录 anon_mkdir_write_enable=NO #设定权限:不能删除/重命名文件 anon_other_write_enable=NO #设定权限:可以浏览目录下的文件 anon_world_readable_only=NO #设定上传文件权限 anon_umask=022
** developAdmin **
#设定根目录 local_root=/var/data/ftp/develop #设置虚拟用户拥有和代理系统用户同样的权限 virtual_use_local_privs=YES #设定上传文件权限 anon_umask=022
** test**
#设定根目录 local_root=/var/data/ftp/test # 设定权限,不拥有和代理系统用于同样的权限 virtual_use_local_privs=NO #设定写权限 write_enable=YES #设定权限:可以上传文件 anon_upload_enable=YES #设定权限:不能新建目录 anon_mkdir_write_enable=NO #设定权限:不能删除/重命名文件 anon_other_write_enable=NO #设定权限:可以浏览目录下的文件 anon_world_readable_only=NO #设定上传文件权限 anon_umask=022
** testAdmin **
#设定根目录 local_root=/var/data/ftp/test #设置虚拟用户拥有和代理系统用户同样的权限 virtual_use_local_privs=YES #设定上传文件权限 anon_umask=022
** superAdmin **
#设定根目录 local_root=/var/data/ftp #设置虚拟用户拥有和代理系统用户同样的权限 virtual_use_local_privs=YES #设定上传文件权限 anon_umask=022
3. 配置允许用户跳出主目录的用户列表
文件位置: /etc/vsftpd/chroot_list文件格式: 一个用户名一行,此处我们只配置superAdmin 用户.
[root@localhost vsftpd]# vim chroot_list superAdmin
4. 配置vsftpd 核心配置文件
前面做的都是准备工作, 由/etc/vsftpd/vsftpd.conf 配置文件将前面的操作关联起来# Example config file /etc/vsftpd/vsftpd.conf ########## 全局配置 ########## write_enable=YES local_umask=022 dirmessage_enable=YES xferlog_enable=YES connect_from_port_20=YES xferlog_std_format=YES listen=YES userlist_enable=YES tcp_wrappers=YES #pasv 传输方式端口上下限 pasv_min_port=61000 pasv_max_port=62000 ########## 匿名用户配置 ########## #开启匿名用户访问 anonymous_enable=YES #指定匿名用户访问根目录 anon_root=/var/data/ftp/anon #匿名用户允许上传文件 anon_upload_enable=YES #匿名用户不允许创建文件夹 anon_mkdir_write_enable=NO #匿名用户不允许删除/更名文件/文件夹 anon_other_write_enable=NO #匿名用户代理系统用户 ftp_username=ftp ########## 虚拟用户配置 ########## #指定pam 服务名称, 和/etc/pam.d 目录下的文件vsftpd 保持一致 pam_service_name=vsftpd # 开启虚拟用户登录 guest_enable=YES # 设置虚拟用户代理系统用户名 guest_username=admin # 设置默认登录路径 local_root=/var/data/ftp/anon # 设置运行本地用户登录,不设置的话, 虚拟用户不能登录 local_enable=YES # 设置具体用户配置文件目录 user_config_dir=/etc/vsftpd/vusers_conf ########## 设置跳出目录 ########## #设置禁止用户跳出主目录 chroot_local_user=YES #设置允许特殊用户跳出主目录 chroot_list_enable=YES #设置特殊用户配置文件 chroot_list_file=/etc/vsftpd/chroot_list
5. 启动服务器
[root@localhost vsftpd]# service vsftpd start Starting vsftpd for vsftpd: [ OK ]
#附: 搭建问题
确保防火墙关闭或释放了ftp 相关端口
确保ftp_home_dir, allow_ftpd_full_access, selinux 配置正确
确保虚拟用户代理用户admin 对根目录的权限是否正确.
注意虚拟用户名不能使用ftp, 否则会出现意想不到的问题的
相关文章推荐
- Vsftpd虚拟用户配置(Linux FTP)
- ubuntu vsftpd虚拟用户配置/ubuntu12.04上搭建vsftpd服务示例linux
- [FTP服务]vsftpd 安装与虚拟用户配置
- Linux下vsftpd安装以及配置FTP虚拟用户实践
- Linux下vsftpd安装以及配置FTP虚拟用户实践
- pam+vsftpd配置虚拟ftp用户(无需数据库)
- RHEL4-FTP服务(五)配置虚拟用户访问vsftp服务器_(下)
- Linux下的Ftp虚拟用户配置
- linux下创建FTP虚拟用户的配置过程--非系统账户登陆FTP
- CentOS (Linux) 上开启FTP服务并配置用户
- RHEL4- FTP服务(三)配置匿名用户访问VSFTPD服务器
- Linux FTP虚拟用户实现之vsftpd
- Linux下配置vsftpd和虚拟用户 成功
- Linux上搭建FTP服务的相关配置3:设置用户磁盘额及访问时间
- LinuxFTP服务搭建及创建虚拟用户
- Linux FTP 虚拟用户的使用配置
- linux vsftpd 的虚拟用户配置
- centos FTP服务vsftpd下的虚拟用户 权限
- Linux下FTP服务与虚拟用户及SSL加密
- Linux vsftpd编译安装和配置允许本地用户登录FTP