vsftpd服務詳解(匿名用戶訪問,本地用戶訪問,指定用戶訪問控制,虛擬用戶)

vsftpd服務詳解(匿名用戶訪問,本地用戶訪問,指定用戶訪問控制,虛擬用戶)

vsftpd詳解

vsftpd 是「very secure FTP daemon」的縮寫,安全性是它的一個最大的特色。vsftpd 是一個 UNIX 類操做系統上運行的服務器的名字,它能夠運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個徹底免費的、開放源代碼的ftp服務器軟件,支持不少其餘的 FTP 服務器所不支持的特徵。
特色
很是高的安全性需求、帶寬限制、良好的可伸縮性、可建立虛擬用戶、支持IPv六、速率高
小巧輕快,安全易用。數據庫

ftp、sftp、vsftp、vsftpd詳解

ftp 是File Transfer Protocol的縮寫,文件傳輸協議,用於在網絡上進行文件傳輸的一套標準協議,使用客戶/服務器模式。它屬於網絡傳輸協議的應用層。
sftp 是SSH File Transfer Protocol的縮寫,安全文件傳輸協議;
vsftp 是一個基於GPL發佈的類Unix系統上使用的ftp服務器軟件,它的全稱是Very Secure FTP今後名稱能夠看出來,編制者的初衷是代碼的安全;
vsftpd 是very secure FTP daemon的縮寫,安全性是它的一個最大的特色。vsftpd 是一個 UNIX 類操做系統上運行的服務器的名字,它能夠運行在諸如 Linux、BSD、Solaris、 HP-UNIX等系統上面,是一個徹底免費的、開放源代碼的ftp服務器軟件;vim

匿名用戶登陸FTP

[root@localhost ~]# yum install vsftpd -y ##安裝vsftp服務
[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@localhost vsftpd]# systemctl start vsftpd  ##開啓服務
[root@localhost vsftpd]# systemctl stop firewalld.service 
s[root@localhost vsftpd]# setenforce 0
[root@localhost vsftpd]# echo "this is text" > /var/ftp/test.txt ##寫一段內容到測試文件中

客戶機去測試訪問

C:\Users\CHEN>ftp 192.168.136.178 ##訪問ftp服務
鏈接到 192.168.136.178。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.136.178:(none)): ftp  ##匿名訪問
331 Please specify the password.
密碼:  ##密碼沒有,直接回車
230 Login successful.
ftp> pwd  ##查看當前的絕對路徑
257 "/"
ftp> ls -a  ##查看目錄中的內容
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
.
..
pub
test.txt  ##服務器中的文件
226 Directory send OK.
ftp: 收到 25 字節,用時 0.00秒 25000.00千字節/秒。
ftp> get test.txt  ##下載文件到本地客戶機,在哪一個磁盤訪問的就會下載到哪裏,能夠切換磁盤來下載
200 PORT command successful. Consider using PASV.
150 Opening BINARY mode data connection for test.txt (13 bytes).
226 Transfer complete.
ftp: 收到 13 字節,用時 0.00秒 13000.00千字節/秒。

客戶機查看有沒有收到文件

vsftpd服務詳解(匿名用戶訪問,本地用戶訪問,指定用戶訪問控制,虛擬用戶)

ftp> put test1.txt  ##建立一個文件上傳到服務器中
200 PORT command successful. Consider using PASV.
550 Permission denied.  ##權限受限

回到服務器開啓匿名訪問最大的權限

[root@localhost ftp]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vsftpd.conf
##在配置文件中查找開啓下列選項
anonymous_enable=YES       ##開啓匿名用戶
local_enable=YES    ##本地用戶
write_enable=YES    ##寫入權限
local_umask=022     ##本地用戶反掩碼
anon_upload_enable=YES   ##上傳權限開啓
anon_mkdir_write_enable=YES   ##開啓建立目錄而且可以寫入
anon_other_write_enable=YES   ##添加一個other的重命名和刪除的權限

[root@localhost vsftpd]# systemctl restart vsftpd  ##重啓服務
[root@localhost vsftpd]# cd /var/ftp/    ##切換到ftp目錄下
[root@localhost ftp]# ls
pub  test.txt
[root@localhost ftp]# ls -l
總用量 4
drwxr-xr-x. 2 root root  6 10月 31 2018 pub
-rw-r--r--. 1 root root 13 11月  5 19:14 test.txt
[root@localhost ftp]# chmod 777 pub   ##將pub目錄權限給最大,注意不能直接給ftp權限最大

再用客戶機去訪問ftp,上傳本地文件到服務器

C:\Users\CHEN>ftp 192.168.136.178 ##訪問ftp服務
鏈接到 192.168.136.178。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.136.178:(none)): ftp
331 Please specify the password.
密碼:
230 Login successful.
ftp> cd pub/                             ##切換到pub目錄下
250 Directory successfully changed.
ftp> put test1.txt                      ##上傳文件
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 發送 13 字節,用時 0.03秒 0.41千字節/秒。
ftp> by     ##退出
221 Goodbye.
##可使用delete刪除文件

本地用戶登陸ftp文件默認在家目錄

root@localhost ~]# useradd zhangsan
[root@localhost ~]# passwd zhangsan
更改用戶 zhangsan 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字符
從新輸入新的 密碼:
passwd:全部的身份驗證令牌已經成功更新。
[root@localhost ~]# useradd lisi
[root@localhost ~]# passwd lisi
更改用戶 lisi 的密碼 。
新的 密碼:
無效的密碼: 密碼少於 8 個字符
從新輸入新的 密碼:
passwd:全部的身份驗證令牌已經成功更新。

防止本地用戶訪問系統目錄,限制只訪問用戶家目錄

[root@localhost ~]# vim /etc/vsftpd/vsftpd.conf 
101 chroot_local_user=YES  ##第101行開啓本地訪問系統目錄
102 chroot_list_enable=YES   ##102行添加寫的權限
[root@localhost ~]# systemctl restart vsftpd

去客戶機去測試訪問

C:\Users\CHEN>ftp 192.168.136.178
鏈接到 192.168.136.178。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.136.178:(none)): zhangsan

331 Please specify the password.
密碼:
230 Login successful.
ftp> cd /    ##切換到系統根目錄
250 Directory successfully changed.
ftp> ls     ##查看發現仍是在用戶的家目錄中,訪問不到系統的其餘目錄了,加強了安全性
200 PORT command successful. Consider using PASV.
150 Here comes the directory listing.
226 Directory send OK.

設置容許,拒絕指定用戶訪問ftp

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@localhost vsftpd]# vim vsftpd.conf

userlist_enable=YES ##確認user-list開啓

[root@localhost vsftpd]# ls
ftpusers  user_list  vsftpd.conf  vsftpd_conf_migrate.sh
[root@localhost vsftpd]# echo "zhangsan" >> user-list   ##將zhangsan用戶添加到列表中,user-list(默認拒絕),容許或者拒絕特定用戶登陸
[root@localhost vsftpd]# systemctl restart vsftpd    ##重啓服務

用客戶機測試訪問ftp

C:\Users\CHEN>ftp 192.168.136.178
鏈接到 192.168.136.178。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.136.178:(none)): zhangsan
530 Permission denied.
登陸失敗。                                        ##拒絕登陸

設置列表爲僅容許

[root@localhost ftp]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vsftpd.conf  ##配置vsftpd配置文件
userlist_enable=YES
userlist_deny=NO   ##添加列表容許

[root@localhost vsftpd]# systemctl restart vsftpd   ##重啓服務

客戶機去測試訪問

C:\Users\CHEN>ftp 192.168.136.178
鏈接到 192.168.136.178。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.136.178:(none)): zhangsan   ##用zhangsan去登陸
331 Please specify the password.
密碼:
230 Login successful.        ##登陸成功
ftp> by
221 Goodbye.

C:\Users\CHEN>ftp 192.168.136.178
鏈接到 192.168.136.178。
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.13.140:(none)): lisi       ##用lisi去登陸
530 Permission denied.
登陸失敗。                           ##登陸失敗

創建虛擬用戶登陸使用ftp

文件在系統用戶vuser家目錄

建立虛擬用戶文件

[root@localhost ~]# cd /etc/vsftpd/
[root@localhost vsftpd]# vim vuser

chen           ##奇數行爲用戶名
123123    ##偶數行爲密碼
cheng
123123

轉換成數據庫文件,設置權限

[root@localhost vsftpd]# db_load -T -t hash -f vuser vuser.db  ##將vuser轉換成數據庫文件,T轉換,t類型,f指定文件
[root@localhost vsftpd]# chmod 600 vuser  ##設置權限
[root@localhost vsftpd]# chmod 600 vuser.db 

編輯pam認證模塊支持虛擬用戶登陸
root@localhost vsftpd]# useradd -d /opt/vuser -s /sbin/nologin vuser

建立系統用戶,指定家目錄,不能登陸

[root@localhost vsftpd]# vim /etc/pam.d/vsftpd.vu   ##編譯pam認證模塊

auth required pam_userdb.so db=/etc/vsftpd/vuser    ##識別轉換過的數據庫文件
account required pam_userdb.so db=/etc/vsftpd/vuser   ##鏈接的密碼服務
##開啓虛擬用戶,使用pam模塊認證登陸
[root@localhost vsftpd]# vim vsftpd.conf  ##修改配置文件
##大G到末行
#pam_service_name=vsftpd   ##註釋
##添加下面三行內容
guest_enable=YES           ##開啓來賓用戶訪問
guest_username=vuser      ##使用vuser用戶名
pam_service_name=vsftpd.vu   ##pam模塊
[root@localhost vsftpd]# systemctl restart vsftpd   ##重啓服務

客戶機去測試

C:\Users\xy007>ftp 192.168.136.178
鏈接到 192.168.136.178
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.136.178:(none)): tom   ##使用虛擬用戶tom登陸
331 Please specify the password.
密碼:
230 Login successful.
ftp> put test1.txt      ##上傳一個文件
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 發送 13 字節,用時 0.00秒 13000.00千字節/秒。
##查看文件的權限爲600
[root@localhost vsftpd]# ls -l /opt/vuser/
總用量 4
-rw-------. 1 vuser vuser 13 11月  5 22:51 test1.txt

單獨用戶配置,指定上傳文件的權限644

[root@localhost vsftpd]# vim vsftpd.conf 
##大G末行添加
user_config_dir=/etc/vsftpd/vu_dir   ##單獨用戶配置文件夾

[root@localhost vsftpd]# mkdir vu_dir  ##建立文件夾
[root@localhost vsftpd]# cd vu_dir/
[root@localhost vu_dir]# vim lisa     ##在配置文件夾裏建立用戶配置文件

anon_umask=022  ##指定上傳文件的權限

[root@localhost vu_dir]# systemctl restart vsftpd  ##重啓服務

客戶機去測試使用lisa用戶登陸,查看上傳文件權限

C:\Users\xy007>ftp 192.168.136.178
鏈接到 192.168.136.178
220 (vsFTPd 3.0.2)
200 Always in UTF8 mode.
用戶(192.168.136.178:(none)): lisa    ##使用lisa登陸
331 Please specify the password.
密碼:
230 Login successful.
ftp> put 111.txt        ##上傳文件
200 PORT command successful. Consider using PASV.
150 Ok to send data.
226 Transfer complete.
ftp: 發送 13 字節,用時 0.00秒 13000.00千字節/秒。

[root@localhost vu_dir]# ls -l /opt/vuser/   ##查看上傳文件的權限
總用量 8
-rw-r--r--. 1 vuser vuser 13 11月  5 22:58 111.txt    ##lisa上傳文件權限644
-rw-------. 1 vuser vuser 13 11月  5 22:51 test1.txt  ##tom上傳文件權限600
相關文章
相關標籤/搜索