1. 程式人生 > >Linux 中實現文件傳輸服務(二)

Linux 中實現文件傳輸服務(二)

term 安裝程序 fig gin 分享圖片 域名解析 anon size upload

繼續上章vsftpd,介紹vsftpd的虛擬用戶配置

一、背景需求

當有多個用戶需要不同的權限時,本地用戶、匿名用戶都無法控制那麽精細,這時候可以考慮下虛擬用戶了,例如有如下要求。

家目錄 刪除 是否允許切換目錄
tom /myftp/tom × × ×
jerry /myftp/jerry × ×
admin /myftp


二、詳細配置

```
    a. 安裝程序:
        [root@node1 ~]# yum -y install vsftpd

    b. 創建配置文件:
        [root@node1 ~]# cp /etc/vsftpd/vsftpd.conf{,.bak}
        [root@node1 ~]# 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 得知
        [root@node1 ~]# 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.創建用戶密碼數據庫,奇數行位用戶名、偶數行位密碼
        [root@node1 ~]# vim /etc/vsftpd_login
        tom
        123
        jerry
        123
        admin
        123
        [root@node1 ~]# db_load -t hash -T -f /etc/vsftpd_login /etc/vsftpd_login.db 

    e.為每個虛擬用戶創建不同的權限
        [root@node1 ~]# mkdir /etc/vsftpd/vuser_conf.d
        #TOM用戶權限設置:
        [root@node1 ~]# 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
        [root@node1 ~]# mkdir /myftp/tom
        [root@node1 ~]# touch /myftp/tom/tom.read
        #Jerry用戶權限配置:
        [root@node1 ~]# cp /etc/vsftpd/vuser_conf.d/{tom,jerry}
        [root@node1 ~]# 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
        [root@node1 ~]# mkdir /myftp/jerry
        [root@node1 ~]# touch /myftp/jerry/jerry.read.write
        #Admin用戶權限配置:
        [root@node1 ~]# cp /etc/vsftpd/vuser_conf.d/{jerry,admin}
        [root@node1 ~]# 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
        [root@node1 ~]# mkdir /myftp/admin
        [root@node1 ~]# touch /myftp/admin/admin.read.write.delete.no_chroot
        #禁錮用戶
        [root@node1 ~]# vim /etc/vsftpd/chroot_list
        tom
        jerry
        #設置目錄權限
        [root@node1 ~]# chown virtual  -R  /myftp/ 
        #重啟服務
        [root@node1 ~]# !sys
        systemctl restart vsftpd 

三、測試效果
Tom用戶測試結果:
技術分享圖片

Jerry用戶測試結果:
技術分享圖片

Admin用戶測試結果:
技術分享圖片

Admin用戶也被禁錮了...

Linux 中實現文件傳輸服務(二)