Linux 中实现文件传输服务

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Linux 中实现文件传输服务相关的知识,希望对你有一定的参考价值。

继续上章vsftpd,介绍vsftpd的虚拟用户配置

一、背景需求
 
当有多个用户需要不同的权限时,本地用户、匿名用户都无法控制那么精细,这时候可以考虑下虚拟用户了,例如有如下要求。
 

家目录 删除 是否允许切换目录
tom /myftp/tom × × ×
jerry /myftp/jerry × ×
admin /myftp

 
二、详细配置

```
    a. 安装程序:
        [[email protected] ~]# yum -y install vsftpd

    b. 创建配置文件:
        [[email protected] ~]# cp /etc/vsftpd/vsftpd.conf{,.bak}
        [[email protected] ~]# vim  /etc/vsftpd/vsftpd.conf
        #关闭匿名用户,本地用户必须开启,否则虚拟用户无法正常运行
        anonymous_enable=NO
        local_enable=YES
        write_enable=YES
        #设置禁锢用户,默认开启后/etc/vsftpd/chroot_list文件中的用户都被禁锢
        chroot_list_enable=YES
        chroot_list_file=/etc/vsftpd/chroot_list
        #设置虚拟用户相应功能(虚拟用户对应的本地用户、
        guest_enable=YES
        guest_username=virtual
        pam_service_name=vsftpd.pam
        user_config_dir=/etc/vsftpd/vuser_conf.d
        #设置数据连接(被动模式)的端口范围
        pasv_min_port=30000
        pasv_max_port=30999
        #关闭反向域名解析,用于加速访问
        reverse_lookup_enable=NO
    c.创建pam认证文件,并指定虚拟用户的账号、密码数据库位置
        注意:如果是32位的系统pam_userdb.so模块不在lib64目录下,详情可通过 rpm -ql  pam  |   grep userdb 得知
        [[email protected] ~]# vim /etc/pam.d/vsftpd.pam 
        auth required /lib64/security/pam_userdb.so db=/etc/vsftpd_login
        account required /lib64/security/pam_userdb.so db=/etc/vsftpd_login

    d.创建用户密码数据库,奇数行位用户名、偶数行位密码
        [[email protected] ~]# vim /etc/vsftpd_login
        tom
        123
        jerry
        123
        admin
        123
        [[email protected] ~]# db_load -t hash -T -f /etc/vsftpd_login /etc/vsftpd_login.db 

    e.为每个虚拟用户创建不同的权限
        [[email protected] ~]# mkdir /etc/vsftpd/vuser_conf.d
        #TOM用户权限设置:
        [[email protected] ~]# vim /etc/vsftpd/vuser_conf.d/tom 
        local_root=/myftp/tom
        anon_world_readable_only=YES
        anon_upload_enable=NO
        anon_mkdir_write_enable=NO
        anon_other_write_enable=NO
        [[email protected] ~]# mkdir /myftp/tom
        [[email protected] ~]# touch /myftp/tom/tom.read
        #Jerry用户权限配置:
        [[email protected] ~]# cp /etc/vsftpd/vuser_conf.d/{tom,jerry}
        [[email protected] ~]# vim /etc/vsftpd/vuser_conf.d/jerry
            local_root=/myftp/jerry
            anon_world_readable_only=YES
            anon_upload_enable=YES
            anon_mkdir_write_enable=YES
            anon_other_write_enable=NO
        [[email protected] ~]# mkdir /myftp/jerry
        [[email protected] ~]# touch /myftp/jerry/jerry.read.write
        #Admin用户权限配置:
        [[email protected] ~]# cp /etc/vsftpd/vuser_conf.d/{jerry,admin}
        [[email protected] ~]# vim /etc/vsftpd/vuser_conf.d/admin 
        local_root=/myftp/tom
        anon_world_readable_only=YES
        anon_upload_enable=YES
        anon_mkdir_write_enable=YES
        anon_other_write_enable=YES
        [[email protected] ~]# mkdir /myftp/admin
        [[email protected] ~]# touch /myftp/admin/admin.read.write.delete.no_chroot
        #禁锢用户
        [[email protected] ~]# vim /etc/vsftpd/chroot_list
        tom
        jerry
        #设置目录权限
        [[email protected] ~]# chown virtual  -R  /myftp/ 
        #重启服务
        [[email protected] ~]# !sys
        systemctl restart vsftpd 

三、测试效果
Tom用户测试结果:
技术分享图片

Jerry用户测试结果:
技术分享图片

Admin用户测试结果:
技术分享图片

Admin用户也被禁锢了...

以上是关于Linux 中实现文件传输服务的主要内容,如果未能解决你的问题,请参考以下文章

虚拟机中实现Linux与Windows之间的文件传输

如何使用 jabber net 在 c# Windows 应用程序中实现文件传输

vue中实现文件上传下载的三种解决方案(推荐)

在 Navigation Drawer 的每个片段中实现不同的 Action Bar 项

xshell中怎样实现windows和linux文件传输

在片段中实现对话框时,必须在添加内容之前请求窗口功能