vsftpd 配置虛擬用戶

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

執行指令:docker

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

目錄結構:
bash

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(由於本地有鏡像因此不須要拉取鏡像)ide

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,能夠直接登陸。
code

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.

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

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.

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

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.
相關文章
相關標籤/搜索