Samba
1)內部訪問
2)權限控制簡單
3)用戶較不安全
4)用戶訪問量小
FTP
1)支持內、外網訪問
2)較嚴格的權限控制
3)隱藏本地用戶
4)支持更多的用戶訪問
5)帶寬
C/S架構:Client --> Server
B/S架構:Browser --> Server
一、FTP
1.端口
1)控制連接:TCP 21(發送TCP控制請求連接等信息)
2)數據連接:TCP 20(實現FTP的上傳、下載等操作)
2.工作流程
1)主動模式:服務器主動發起連接
a.客戶端訪問FTP,輸入用戶、密碼
b.服務器使用本地21連接客戶端隨機產生端口
c.客戶端使用隨機端口與服務器21端口建立連接關係
d.客戶端使用隨機端口上傳或下載服務器內容(連接服務端20端口)
注:主動模式,客戶端不能開啓防火牆
2)被動模式:服務器被動等待連接
a.客戶端訪問FTP,輸入用戶、密碼
b.客戶端使用隨機端口連接服務器的21端口
c.服務器隨機產生(需提前定義範圍)端口,並將隨機端口告知客戶端
d.客戶端使用隨機端口連接服務器產生的隨機端口
e.客戶端使用隨機端口上傳或下載服務器內容
注:被動模式,用於客戶端開啓防火牆時
3.傳輸模式
1)文件模式(ASCII):只支持純文本,不再使用
2)二進制模式:支持文件、視頻、圖像等
4.FTP用戶類型
1)匿名:用戶名(anonymous)、密碼爲空;用戶名(ftp)、密碼(ftp)
2)本地用戶:使用服務器本地存在的用戶密碼登錄
3)虛擬用戶:不存在的用戶
5.FTP軟件
1)服務端:Windows(Serv-U、FTP發佈服務)、Linux(vsftpd)非常安全的FTP軟件
2)客戶端:Windows自帶"資源管理器"、flashfxp;wget、aria2c、lftp等
二、搭建匿名的FTP
1.IP配置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
service network restart
2.安裝vsftpd軟件包
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/local.repo
[local]
name=loca
baseurl=file:///mnt
gpgcheck=0
mount /dev/cdrom /mnt
yum -y install vsftpd
3.編輯配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //啓用匿名訪問
anon_root=/ftproot/ //指定匿名用戶訪問目錄(默認/var/ftp/)
anon_upload_enable=YES //允許匿名用戶上傳
anon_other_write_enable=YES //允許匿名用戶刪除文件、文件夾
anon_mkdir_write_enable=YES //允許匿名用戶創建文件夾
anon_umask=022 //匿名用戶上傳的文件權限爲644
pasv_enable=YES //啓用被動模式
pasv_min_port=10000 //指定被動模式最小端口
pasv_max_port=11000 //指定被動模式最大端口
local_enable=NO //不啓用本地用戶訪問
write_enable=YES //允許寫入
local_umask=022 //本地用戶上傳的文件權限爲644
dirmessage_enable=YES //啓用message信息顯示(如目錄下存在.message文件,會顯示該文件內容)
xferlog_enable=YES //啓動xferlog日誌文件
connect_from_port_20=YES //數據連接端口
xferlog_std_format=YES //指定xferlog日誌格式爲std
listen=YES //啓動監聽
pam_service_name=vsftpd //pam認證模塊
userlist_enable=YES //啓動userlist列表文件
tcp_wrappers=YES //啓動TCP_WAPPER控制
反碼
local_umask=022
文件:666
目錄:777
文件:644
目錄:755
umask值 文件 目錄
022 644 755
027 640 750
002 664 775
006 660 771
007 660 770
4.啓動服務
mkdir -p /ftproot/anonymous && chmod o+w /ftproot/anonymous
/etc/init.d/vsftpd start && chkconfig --level 35 vsftpd on
/etc/init.d/iptables stop && setenforce 0
三、搭建本地用戶
1.IP配置
vim /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE=eth0
TYPE=Ethernet
ONBOOT=yes
NM_CONTROLLED=no
BOOTPROTO=static
IPADDR=192.168.1.10
NETMASK=255.255.255.0
service network restart
1.安裝vsftpd軟件包
rm -rf /etc/yum.repos.d/*
vim /etc/yum.repos.d/local.repo
[local]
name=loca
baseurl=file:///mnt
gpgcheck=0
mount /dev/cdrom /mnt
yum -y install vsftpd
2.編輯配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //禁用匿名訪問
pasv_enable=YES //啓用被動模式
pasv_min_port=10000 //指定被動模式最小端口
pasv_max_port=11000 //指定被動模式最大端口
local_enable=YES //啓用本地用戶訪問
local_root=/ftproot/ //指定本地用戶訪問目錄(默認/home/xxx)
write_enable=YES //允許寫入
local_umask=022 //本地用戶上傳的文件權限爲644
dirmessage_enable=YES //啓用message信息顯示(如目錄下存在.message文件,會顯示該文件內容)
xferlog_enable=YES //啓動xferlog日誌文件
connect_from_port_20=YES //數據連接端口
xferlog_std_format=YES //指定xferlog日誌格式爲std
listen=YES //啓動監聽
pam_service_name=vsftpd //pam認證模塊
userlist_enable=YES //啓動userlist列表文件
tcp_wrappers=YES //啓動TCP_WAPPER控制
3.新建本地用戶
useradd -s /sbin/nologin hehe //新建本地系統用戶hehe
echo "123" | passwd --stdin hehe //設置hehe密碼爲123
setfacl:針對不同用戶設置不同權限
setfacl [選項] u/g:用戶/組:權限 文件/目錄
選項:
-d:設置目錄的權限
-m:後續操作,後面必須跟上權限
例:
允許a、b用戶擁有所有權限、c用戶只能讀取
mkdir /a/
useradd -s /sbin/nologin a
useradd -s /sbin/nologin b
useradd -s /sbin/nologin c
setfacl -d -m u:a:rwx /a/ //設置a用戶針對/a/目錄擁有所有權限
setfacl -d -m u:b:rwx /a/ //設置b用戶針對/a/目錄擁有所有權限
getfacl /a/ //查看/a/目錄所設置的所有權限
四、搭建虛擬用戶
1.定義用戶密碼文件
vim /etc/vsftpd/user
a
123
b
123
注:奇數爲用戶名,偶數爲上一行用戶密碼
2.轉換用戶密碼文件爲數據庫文件
db_load -T -t hash -f /etc/vsftpd/user /etc/vsftpd/user.db
//將定義的用戶密碼使用hash轉換爲數據庫文件
3.新建PAM認證文件
vim /etc/pam.d/haha
#PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user
4.新建本地用戶
useradd -s /sbin/nologin qwe
5.編輯配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=NO //禁用匿名訪問
pasv_enable=YES //啓用被動模式
pasv_min_port=10000 //指定被動模式最小端口
pasv_max_port=11000 //指定被動模式最大端口
guest_enable=YES //啓用虛擬用戶
guest_username=qwe //指定虛擬用戶對應的本地映射用戶
user_config_dir=/etc/vsftpd/virtual //指定虛擬用戶配置文件存放目錄
local_enable=YES //啓用本地用戶訪問
local_root=/ftproot/ //指定本地、虛擬用戶訪問的目錄
write_enable=YES //允許寫入
local_umask=022 //本地用戶上傳的文件權限爲644
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES //啓動監聽
pam_service_name=haha //pam認證模塊(注:修改默認vsftpd認證PAM,修改爲自建PAM)
userlist_enable=YES //啓動userlist列表文件
tcp_wrappers=YES //啓動TCP_WAPPER控制
注:如虛擬用戶不當前新建配置文件,則使用全局的虛擬用戶權限
6.新建虛擬用戶配置文件
mkdir /etc/vsftpd/virtual
touch /etc/vsftpd/virtual/a
touch /etc/vsftpd/virtual/b
vim /etc/vsftpd/virtual/a
anon_upload_enable=YES
anon_other_write_enable=YES
anon_mkdir_write_enable=YES
anon_umask=022
7.啓動服務
/etc/init.d/vsftpd start && chkconfig --level 35 vsftpd on
/etc/init.d/iptables stop && setenforce 0
8.測試
a擁有完全權限
b只能下載,不能上傳
五、搭建虛擬用戶與匿名用戶共存
1.定義用戶密碼文件
vim /etc/vsftpd/user
a
123
b
123
注:奇數爲用戶名,偶數爲上一行用戶密碼
2.轉換用戶密碼文件爲數據庫文件
db_load -T -t hash -f /etc/vsftpd/user /etc/vsftpd/user.db
//將定義的用戶密碼使用hash轉換爲數據庫文件
3.新建PAM認證文件
vim /etc/pam.d/haha
#PAM-1.0
auth required pam_userdb.so db=/etc/vsftpd/user
account required pam_userdb.so db=/etc/vsftpd/user
4.新建本地用戶
useradd -s /sbin/nologin qwe
5.編輯配置文件
vim /etc/vsftpd/vsftpd.conf
anonymous_enable=YES //啓動匿名訪問
anon_root=/ftproot/ //指定匿名用戶訪問目錄(默認/var/ftp/)
pasv_enable=YES //啓用被動模式
pasv_min_port=10000 //指定被動模式最小端口
pasv_max_port=11000 //指定被動模式最大端口
guest_enable=YES //啓用虛擬用戶
guest_username=qwe //指定虛擬用戶對應的本地映射用戶
user_config_dir=/etc/vsftpd/virtual //指定虛擬用戶配置文件存放目錄
local_enable=YES //啓用本地用戶訪問
local_root=/ftproot/ //指定本地、虛擬用戶訪問的目錄
write_enable=YES //允許寫入
local_umask=022 //本地用戶上傳的文件權限爲644
dirmessage_enable=YES
xferlog_enable=YES
connect_from_port_20=YES
xferlog_std_format=YES
listen=YES //啓動監聽
pam_service_name=haha //pam認證模塊(注:修改默認vsftpd認證PAM,修改爲自建PAM)
userlist_enable=YES //啓動userlist列表文件
tcp_wrappers=YES //啓動TCP_WAPPER控制
注:如虛擬用戶不當前新建配置文件,則使用全局的虛擬用戶權限
6.新建虛擬用戶配置文件
mkdir /etc/vsftpd/virtual
touch /etc/vsftpd/virtual/a
touch /etc/vsftpd/virtual/b
vim /etc/vsftpd/virtual/b
anon_upload_enable=NO //允許匿名用戶上傳
7.啓動服務
/etc/init.d/vsftpd start && chkconfig --level 35 vsftpd on
/etc/init.d/iptables stop && setenforce 0
8.測試
hehe擁有完全權限
haha只能下載,不能上傳
匿名用戶只能下載,不能上傳
9.Linux訪問FTP
lftp FTP服務器IP -u 用戶名
lftp> ls //列表顯示當前所有內容
lftp> cd xxx //進入指定目錄
lftp> get xxx //下載指定文件或目錄到當前位置
lftp> pub xxx //上傳指定文件或目錄到FTP
ftp FTP服務器IP
Name (192.168.1.10:root): xxx //輸入FTP服務器登陸用戶
Password:xxx //輸入FTP服務網登陸密碼
lftp> ls //列表顯示當前所有內容
lftp> cd xxx //進入指定目錄
lftp> get xxx //下載指定文件或目錄到當前位置
lftp> pub xxx //上傳指定文件或目錄到FTP
Centos 7:curlftpfs