1. 程式人生 > >FTP(五)創建虛擬用戶

FTP(五)創建虛擬用戶

FTP創建虛擬用戶

創建虛擬用戶

所謂虛擬用戶就是,所有虛擬用戶會統一贏誰為一個指定的系統普通賬號:訪問共享位置,即為此系統普通用戶的家目錄,當然每個虛擬用戶也可被賦予不同的訪問權限,通過匿名用戶的權限控制參數進行指定

虛擬用戶帳號的存儲方式:

1,創建專門一個文件存放用戶密碼,但是該文件需要用hash格式。所以需要用下面的這條命令:

    db_load -T -t hash -f vusers.txt vusers.db 

實現步驟:

一,創建用戶數據庫文件

"註意該文件的格式:第一行 用戶名,第二行 密碼,以此類推"
    vim /etc/vsftpd/vusers.txt 
    wang        #用戶名
    wangpass    #密碼
    mage        #用戶名
    magepass    #密碼

二,修改文件格式

 1,cd /etc/vsftpd/ 
 2,db_load -T -t hash -f vusers.txt vusers.db 
 #為了安全修改文件權限
 3,chmod 600 vusers.db 

三,創建系統普通用戶,和FTP訪問目錄

 1,創建用戶
    useradd -d /var/ftproot -s /sbin/nologin vuser ? 
 2,因為FTP是只能普通用戶登入,所以普通用戶需要對目錄有讀和執行權限,這樣才能上傳下載文件。
    chmod +rx /var/ftproot/  
 3,因為FTP為了安全根目錄不能有寫權限,因為根目錄有寫權限,我們登入上去是不是就能根目錄給刪了對吧,所以需要執行下面的命令。
    chmod -w /var/ftproot/
   #為了能有個上傳下載的目錄單獨在創建一個目錄。
    mkdir /var/ftproot/upload 
   #因為登入上來映射的用戶都是vuser用戶所以要給vuser用戶對upload目錄有完全控制的權限,所以可以給它ACL權限這樣比較安全
    setfacl -m u:vuser:rwx /var/ftproot/upload 

四,創建PAM模塊配置文件

因為現在的驗證方式跟之前的不同了,所以需要自己創建一個PAM模塊文件,然後在主配置文件中調用該文件

1,創建PAM模塊文件

     vim /etc/pam.d/vsftpd.db 
     文件內容如下:
     auth required pam_userdb.so db=/etc/vsftpd/vusers 
     account required pam_userdb.so db=/etc/vsftpd/vusers 

2,重新指定PAM配置文件

    vim /etc/vsftpd/vsftpd.conf 
    guest_enable=YES  
    guest_username=vuser 
    "pam_service_name=vsftpd.db"註意該項在配置文件中已經有需要修改一下     

六,SELinux設置

禁用SELinux或者 setsebool -P ftpd_full_access 1

七,重啟服務

    如果是CentOS-7:systemctl restart vsftpd
    如果是CentOS-6:service vsftpd restart

八,測試

這時候登入就可以用剛才創建的vusers.txt文件裏的用戶名密碼了

例如:
    [root@ansible-7 ~]# ftp 192.168.136.7
    Connected to 192.168.136.7 (192.168.136.7).
    220 (vsFTPd 3.0.2)
    Name (192.168.136.7:root):  "wang"
    331 Please specify the password.
    Password:
    230 Login successful.
    Remote system type is UNIX.
    Using binary mode to transfer files.
    ftp> ls
    227 Entering Passive Mode (192,168,136,7,149,32).
    150 Here comes the directory listing.
    drwxrwxr-x    2 0        0               6 Feb 27 00:58 upload
    226 Directory send OK.

成功了,但是有一個不足就是每個用戶登入上來都是一個權限一個目錄這樣不太靈活,下面實現每個虛擬用戶登入上來各自對應不同的權限,並且還可讓他登入上來對應的目錄都不同一個。

九,實現虛擬用戶不同權限

1,修改FTP主配置文件

    vim /etc/vsftpd/vsftpd.conf 
    #下面這個選項,作用就是讓虛擬用戶支持獨立的權限配置文件
    user_config_dir=/etc/vsftpd/vusers.d/ 

2,給每個虛擬用戶創建一個獨立的權限配置文件


    #創建配置文件存放的路徑
    mkdir /etc/vsftpd/vusers.d/ 
    #進入此目錄
    cd /etc/vsftpd/vusers.d
    #創建各自用戶的權限配置文件

    vim wang 
    anon_upload_enable=YES      #允許wang用戶上傳文件
    anon_mkdir_write_enable=YES #允許wang用戶創建文件
    anon_other_write_enable=YES #允許wang用戶刪除文件
    local_root=/wangroot        #登錄wang目錄改變至指定wangroot目錄裏
    註意"wangroot這個目錄手工創建,並且該目錄不能有w權限,可以為wang用戶單獨創建一個共享目錄並且權限也需要改為766,讓Other具有讀寫權限"

    vim li
    anon_other_write_enable=YES  #允許li用戶刪除文件
    local_root=/liroot           #登錄li目錄改變至指定liroot目錄裏
    "同樣liroot目錄也需要手工創建,操作跟wang賬號的一樣"

3,測試

一,wang賬號測試
    登入測試:成功
        [root@ansible-7 ~]# ftp 192.168.136.7
        Connected to 192.168.136.7 (192.168.136.7).
        220 (vsFTPd 3.0.2)
        Name (192.168.136.7:root): wang
        331 Please specify the password.
        Password:
    上傳文件測試:成功
        ftp> !ls #查看本機文件
        anaconda-ks.cfg  Downloads          Music     Templates
        Desktop      f1     Pictures  Videos   Documents    Public
        ftp> put f1  #上傳文件
        local: f1 remote: f1
        227 Entering Passive Mode (192,168,136,7,226,193).
        150 Ok to send data.
        226 Transfer complete.
        1073741824 bytes sent in 3.56 secs (301946.46 Kbytes/sec)
        ftp> ls  #查看目錄列表
        227 Entering Passive Mode (192,168,136,7,40,213).
        150 Here comes the directory listing.
        -rw-------    1 1001     1001     1073741824 Feb 27 03:12 f1
    創建目錄測試:成功
        ftp> mkdir wangdir #創建目錄
        257 "/upload/wangfile" created
        ftp> ls             #查看目錄列表
        227 Entering Passive Mode (192,168,136,7,208,167).
        150 Here comes the directory listing.
        -rw-------    1 1001     1001     1073741824 Feb 27 03:12 f1
        drwx------    2 1001     1001            6 Feb 27 03:12 wangdir
        226 Directory send OK.
    "下載文件測試:失敗測試"
    "為什麽呢,因為FTP默認,被下載的文件必須所有人都有讀權限,如果想什麽文件都能下載的話,"
    "需要修改主配置文件加上這一項: anon_world_readable_only=NO即可 (默認YES)"
        ftp> get f1  
        local: f1 remote: f1
        227 Entering Passive Mode (192,168,136,7,74,156).
        550 Failed to open file.
    刪除文件測試:成功
        ftp> delete f1
        250 Delete operation successful.
        ftp> ls
        227 Entering Passive Mode (192,168,136,7,130,109).
        150 Here comes the directory listing.
        drwx------    2 1001     1001            6 Feb 27 03:12 wangfile
        226 Directory send OK.

二,li賬號測試
    登陸測試:成功
        [root@ansible-7 ~]# ftp 192.168.136.7
        Connected to 192.168.136.7 (192.168.136.7).
        220 (vsFTPd 3.0.2)
        Name (192.168.136.7:root): li
        331 Please specify the password.
        Password:

    上傳文件測試:失敗
        ftp> put f1
        local: f1 remote: f1
        227 Entering Passive Mode (192,168,136,7,232,207).
        550 Permission denied.
    下載文件測試:成功。默認FTP就支持匿名下載所以限制不了
        ftp> get f1
        local: f1 remote: f1
        227 Entering Passive Mode (192,168,136,7,219,59).
        150 Opening BINARY mode data connection for f1 (1073741824 bytes).
        226 Transfer complete.
        1073741824 bytes received in 2.55 secs (421099.01 Kbytes/sec)
    刪除文件測試:成功
        ftp> delete f1
        250 Delete operation successful.
        ftp> ls
        227 Entering Passive Mode (192,168,136,7,195,31).
        150 Here comes the directory listing.
        drwx------    2 1001     1001            6 Feb 27 03:34 a
    創建目錄測試:失敗
        ftp> mkdir lidir
        550 Permission denied.      

FTP(五)創建虛擬用戶