網絡文件共享的幾種方式
HTTP NFS(unix like) SAMBA FTP
vsftpd (Very Secure FTP)
ftp需要兩個端口
21:命令端口
20:數據端口
是一種跨平臺的文件傳輸工具。
ftp有兩種傳輸模式
1、主動模式
服務器的端口:21,20
2、被動模式
服務器的端口:21,隨機端口
ftp主動模式和被動模式的區別:
主動模式:
主動模式的過程:
任何端口到FTP服務器的21端口(客戶端初始化的連接 S<-C)
FTP服務器的21端口到大于1023的端口(服務器響應客戶端的控制端口S->C)
FTP服務器的20端口到大于1023的端口(服務器端初始化數據連接到客戶端的數據端口 S->C)
大于1023端口到FTP服務器的20端口(客戶端發送ACK響應到服務器的數據端口 S<-C)
當用戶登錄到ftp服務器的時候,匿名用戶進入到/var/ftp,系統帳戶進入到自己的家目錄
ftp的被動模式
從任何端口到服務器的21端口(客戶端初始化的連接 S<-C)
服務器的21端口到任何大于1023的端口(服務器響應到客戶端的控制端口的連接 S->C)
從任何端口到服務器的大于1023端口(入;客戶端初始化數據連接到服務器指定的任意端口 S<-C)
服務器的大于1023端口到遠程的大于1023的端口(出;服務器發送 ACK響應和數據到客戶端的數據端口 S->C)
軟件安裝:
#yum install vsftpd -y
服務啟動:
#servicevsftpd start
#/etc/init.d/vsftpdstart
#chkconfigvsftpd on
# netstat -antulp | grep vsftpd
tcp 0 0 0.0.0.0:21 0.0.0.0:* LISTEN 28997/vsftpd
配置文件的位置:
/etc/vsftpd/vsftpd.conf
在編輯配置文件之前,最好備份一份,以防萬一
ftp配置的目標:
1、搞定匿名帳戶的訪問
2、本地帳戶
3、虛擬帳戶
匿名用戶訪問:
#vi /etc/vsftpd/vsftpd.conf
12anonymous_enable=YES //允許匿名用戶登錄
//匿名用戶指的是: ftpanonymous
28anon_upload_enable=YES //匿名用戶可以上傳
#cd /
# touch a
# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): ftp
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 (127,0,0,1,50,241)
150 Here comes the directory listing.
drwxr-xr-x 2 0 0 4096 Oct 13 13:29 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> ls
227 Entering Passive Mode (127,0,0,1,191,136)
150 Here comes the directory listing.
226 Directory send OK.
ftp> put a
local: a remote: a
227 Entering Passive Mode (127,0,0,1,192,96)
553 Could not create file.
ftp> quit
221 Goodbye.
允許匿名用戶上傳但是為什么上傳不了文件呢?
還必須看目錄有沒有可寫權限。
# chmod 777 /var/ftp/pub
# ftp localhost
Connected to localhost.localdomain.
220 (vsFTPd 2.0.5)
530 Please login with USER and PASS.
530 Please login with USER and PASS.
KERBEROS_V4 rejected as an authentication type
Name (localhost:root): ftp
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 (127,0,0,1,200,175)
150 Here comes the directory listing.
drwxrwxrwx 2 0 0 4096 Oct 13 13:29 pub
226 Directory send OK.
ftp> cd pub
250 Directory successfully changed.
ftp> put a
local: a remote: a
227 Entering Passive Mode (127,0,0,1,168,25)
150 Ok to send data.
226 File receive OK.
ftp> quit
221 Goodbye.
----------------------------------------------
本地帳戶
指的就是服務器本身的擁有的帳號
vim/etc/vsftpd/vsftpd.conf
anonymouns_enable=NO
#anon_upload_enable=YES
15 local_enable=YES
//本地帳戶認證方式啟動
18 write_enable=YES
//表示開啟寫權限
22 local_umask=022
//表示上傳文件的權限掩碼
/etc/init.d/vsftpdrestart
ftplocalhost
ftp>cd /etc
ftp>pwd
/etc
那么這個時候,就可以下載u1擁有權限的任意文件。用戶u1可以隨意切換所在目錄
解決用戶瞎溜達的問題?
vim/etc/vsftpd/vsftpd.conf
96 chroot_list_enable=YES
98 chroot_list_file=/etc/vsftpd/chroot_list
vim /etc/vsftpd/chroot_list
u1
u2
//表示這是一個關于chroot的黑名單,凡是在chroot_list中出現的用戶名
//都會實現chroot的限制
限制所有的本地用戶:
vim/etc/vsftpd/vsftpd.conf
chroot_local_user=YES
限制用戶chroot的白名單設置:
vim/etc/vsftpd/vsftpd.conf
chroot_local_user=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list
//chroot_list文件中,列出不進行chroot限制的用戶列表
ftp
虛擬帳戶
具體實現:
1.通過創建本地數據庫實現虛擬用戶
#yum install db4-utils -y
創建一個用于映射虛擬用戶的真實用戶:
#useradd -d /var/ftp/vuserdir -s /sbin/nlogin vuser
2.修改配置文件:
#vim/etc/vsftpd/vsftpd.conf
guest_enable=YES
guest_username=vuser
3.生成虛擬用戶文件
#vim/etc/vsftpd/vftpuser.txt
neo
123
mike
456
4.生成虛擬用戶數據文件
#db_load -T -t hash -f /etc/vsftpd/vftpuser.txt/etc/vsftpd/vftpuser.db
#chmod600 /etc/vsftpd/vftpuser.db
5.創建一個新的pam認證程序
vim/etc/pam.d/vsftpd1
auth required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
account required /lib/security/pam_userdb.so db=/etc/vsftpd/vftpuser
#vim /etc/vsftpd/vsftpd.conf
pam_service_name=vsftpd1
/etc/init.d/vsftpdrestart
登錄之后,出現這樣的問題:
226Transfer done (but failed to open directory).
修改配置文件:
vim/etc/vsftpd/vsftpd.conf
anon_world_readable_only=NO
額外的ftp配置:
vim/etc/vsftpd/vsftpd.conf
ftpd_banner=Welcometo uplooking ftp service
anon_max_rate=100 (單位是字節)
max_clients=1
deny_file={*.ext,*.dll}
關于用戶訪問控制的兩個文件:
user_list
ftpusers
綜合練習:
在一臺主機上創建三個基于域名的虛擬主機,每個主機的磁盤配額為80M,90M,100M,使用ftp分別管理三個虛擬主機,每個虛擬主機的管理員,只能管理自己的虛擬主機。要求,每個網站的磁盤具有高性能,高可靠性,并且可以磁盤擴展。