1. 程式人生 > >vsftpd 配置虛擬用戶

vsftpd 配置虛擬用戶

conf new dir trying bsp comm rfi please remote

本文章介紹通過docker搭建的vsftpd實踐,如有任何問題,請聯系我,一起交流。
請訪問git地址:
https://code.aliyun.com/jy1779/vsftpd.git

執行指令:

root@elk:/docker# git clone https://code.aliyun.com/jy1779/vsftpd.git

目錄結構:

root@elk:/docker/vsftpd# ls 
conf  data  docker-compose.yml  Dockerfile  log  pam.d  sources.list
root@elk:/docker/vsftpd# tree -l
.
├── conf #宿主機目錄,存放vsftpd所有配置文件,僅用於宿主機。
│   ├── vsftpd  #vsftpd配置文件目錄,主要存放自定義腳本,虛擬用戶配置文件,等等
│   │   ├── bin #自定義腳本目錄
│   │   │   ├── add_vuser.sh #用於添加虛擬用戶
│   │   │   ├── del_vuser.sh #用於刪除虛擬用戶
│   │   │   └── run_vsftpd.sh #用於運行vsftpd服務
│   │   ├── chroot_list #限制用戶家目錄
│   │   ├── user_config_dir #虛擬用戶配置文件目錄
│   │   │   └── jonny #虛擬用戶配置文件
│   │   ├── user_list #限制虛擬用戶訪問,虛擬用戶需要添加到該文件才可以訪問
│   │   ├── v_user_password.db #虛擬用戶驗證文件
│   │   ├── v_user_password.txt #虛擬用戶驗證前文本
│   │   └── welcome.txt #登錄vsftpd後顯示歡迎信息
│   └── vsftpd.conf #vsftpd主配置文件
├── data #vsftpd掛載出來的根目錄
│   └── jonny #虛擬用戶家目錄
│       └── test
├── docker-compose.yml  #docker-compose管理
├── Dockerfile #Dockerfile 構建
├── log #日誌目錄
│   ├── vsftpd.log 
│   └── xferlog
├── pam.d
│   └── vsftpd  #PAM驗證 
└── sources.list

啟動vsftpd(因為本地有鏡像所以不需要拉取鏡像)

root@elk:/docker/vsftpd# docker-compose up -d vsftpd
Creating vsftpd.1 ... 
Creating vsftpd.1 ... done
root@elk:/docker/vsftpd# docker-compose logs vsftpd
Attaching to vsftpd.1
vsftpd.1  | *************************************************
vsftpd.1  | *                                               *
vsftpd.1  | *                VSFTPD SERVER                  *
vsftpd.1  | *                                               *
vsftpd.1  | *************************************************
vsftpd.1  | ADD VIRTUAL USER
vsftpd.1  | ----------------
vsftpd.1  | · Default virtual user:
vsftpd.1  |   - username: jonny
vsftpd.1  |   - password: 123456
vsftpd.1  | · You can use the command "ftp localhost", enter the virtual user and password.
vsftpd.1  | · Add new Virtual user to /etc/vsftpd/bin/add_vuser.sh
vsftpd.1  | · Del Virtual user to /etc/vsftpd/bin/del_vuser.sh

登錄ftp:

默認創建了一個虛擬用戶:jonny,可以直接登錄。

root@elk:/docker/vsftpd# ftp localhost
ftp: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
220-welcome to ftp !
220 
Name (localhost:jonny): jonny
331 Please specify the password.
Password:
230 Login successful.
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls  #查看該虛擬用戶的家目錄
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
-rw-r--r--    1 0        0               0 Jan 20 10:24 test  
226 Directory send OK.

添加用戶:(添加用戶需要進入容器內部運行指令或者在容器外部調用容器內部腳本)

root@elk:/docker/vsftpd# docker exec -it vsftpd.1 bash  #進入容器內部
root@elk:/srv/ftp# cd /etc/vsftpd/bin/  
root@elk:/etc/vsftpd/bin# ls
add_vuser.sh  del_vuser.sh  run_vsftpd.sh
root@elk:/etc/vsftpd/bin# ./add_vuser.sh jaye 123456   #執行腳本,兩個參數,一個是新增的用戶名,一個是密碼
root@elk:/etc/vsftpd/bin# exit  #退出容器
exit
root@elk:/docker/vsftpd# ftp localhost   #使用新添加的虛擬用戶登錄
ftp: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
220-welcome to ftp !
220 
Name (localhost:jonny): jaye  
331 Please specify the password.
Password:
230 Login successful.   #登錄成功
Remote system type is UNIX.
Using binary mode to transfer files.
ftp> ls  #因為剛剛創建的虛擬用戶,所以虛擬用戶的家目錄沒有任何文件或目錄
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.

刪除用戶:(跟添加用戶一樣,進入容器內部或者在外部調用指令)

root@elk:/docker/vsftpd# docker exec -it vsftpd.1 bash
root@elk:/srv/ftp# cd /etc/vsftpd/bin
root@elk:/etc/vsftpd/bin# ls
add_vuser.sh  del_vuser.sh  run_vsftpd.sh
root@elk:/etc/vsftpd/bin# ./del_vuser.sh jaye   #刪除虛擬用戶,只需要一個參數,就是用戶名
root@elk:/etc/vsftpd/bin# exit
exit
root@elk:/docker/vsftpd# ftp localhost 
ftp: connect to address ::1: Connection refused
Trying 127.0.0.1...
Connected to localhost.
220-welcome to ftp !
220  
Name (localhost:jonny): jaye   #這時已經登錄不上了。
530 Permission denied.
Login failed.

先下班,待續....

vsftpd 配置虛擬用戶