文件共享

文件共享:
NFS、FTP(vsftpd)、samba、apache、nginx

文件共享要點:
1.Linux中的文件共享服務器軟件有哪些?每種共享軟件的應用場合和特點?
2.文件共享軟件的安裝、服務啓動的方法,以及文件共享的基本方法?
3.如何實現基於用戶(即需要用戶名和密碼驗證)的訪問控制?
4.如何實現基於IP(即允許哪些IP的客戶機訪問共享)的訪問控制?
5.訪問共享時的讀寫權限控制,權限要考慮2個要點:目錄自身的權限、文件共享軟件中設置的權限。
警告:用戶訪問ftp、samba共享的用戶賬號的登錄shell建議設置成/sbin/nologin,這樣的話安全性更高,即只讓這些用戶訪問共享,而不能用ssh或本地登錄到linux系統中。即useradd tom -s /sbin/nologin

解釋:以下是一個for循環語句來批量創建用戶並設置初始登錄密碼跟用戶名相同,設i的取值爲tom、lucy、lily,$i表示調用i的取值。
for i in tom lucy lily
do
useradd $i -s /sbin/nologin
echo $i | passwd --stdin $i
done

文件共享的軟件:
NFS:實現unix和linux系統之間的文件共享,通常用於局域網(LAN)中,採用NFS協議。屬於sun公司開發的一套輕量級的文件共享軟件。特點是能做基於IP的訪問控制,能實現文件的在線編輯,但是無法實現基於用戶的訪問控制。

vsftpd:通常用於互聯網(WAN廣域網)遠程做文件共享。可以實現跨系統平臺做共享。跨系統平臺是指服務器和客戶機的操作系統都支持FTP協議。特點是支持基於IP、用戶的訪問控制策略。缺點是不能共享打印機,不支持文件的在線編輯(即離線編輯,要先下載到本地進行修改,再上傳到服務器上)功能。

samba:實現的是在linux中用samba共享,windows中用網上鄰居訪問共享。採用的是SMB協議。特點是能做打印機共享,支持基於IP、用戶的訪問控制策略,且支持共享文件的在線編輯。

NFS的優點:安裝和設置簡單,輕量級的文件共享軟件。可以實現linux和unix系統之間的文件共享。在win7/win10系統中也可以訪問nfs共享。支持基於IP的訪問控制。
缺點:不支持基於用戶名的訪問控制。即訪問nfs共享時,無需輸入用戶名和密碼。如果要解決此問題,可採用ftp、samba、apache、nginx共享。

網絡環境拓撲:
客戶機client 服務器server
192.168.11.1(win7/10) 192.168.11.11(centos)
192.168.11.12(centos)

NFS:網絡文件系統(Network File System)。提供網絡文件系統平臺,需要藉助RPC(遠程過程調用)協議來發送文件傳輸的控制指令。
發佈時間:1984年
公司:SUN公司。典型產品有JAVA。SUN公司被Oracle公司收購

NFS軟件:
nfs-utils、rpcbind
說明:如果是安裝了centos桌面環境,這兩個軟件包都已經安裝好了。
如果是安裝了centos最小環境,需要手動安裝這兩個軟件包。

NFS的部署思路:(網絡服務的部署通用思路)
0.關閉安全功能,並查狀態:
systemctl stop firewalld ; setenforce 0
systemctl status firewalld ; getenforce
1.查軟件是否已安裝,如果未安裝就安裝軟件。
2.啓動服務,並允許開機自動啓動
3.設置共享目錄,重新加載設置。
4.做本地(內測)訪問測試,做異地(公測)訪問測試。

環境準備:
關閉安全功能,並查狀態:
systemctl stop firewalld ; setenforce 0
systemctl status firewalld ; getenforce

NFS安裝:
查是否已安裝:rpm -q nfs-utils rpcbind
安裝:yum install -y nfs-utils rpcbind
查軟件的文件列表:rpm -ql nfs-utils
查配置文件列表:rpm -qc nfs-utils

NFS服務管理:
重啓動服務:systemctl restart nfs rpcbind
允許開啓自動啓動:systemctl enable nfs rpcbind
查服務狀態:systemctl status nfs rpcbind

共享需要的文件:
通過/etc/exports共享配置文件來實現。查man exports來了解配置文件的格式。
exports配置文件語法如下:man exports查幫助中的EXAMPLE例子
共享目錄的絕對路徑 1號客戶主機名或IP(共享選項) n號客戶主機名或IP(共享選項)
/usr (ro) 192.168.11.13(rw)
/opt
(rw,no_root_squash) 192.168.11.0/24(rw)

客戶主機名或IP:
*號 表示任何IP的主機
主機名 可以指定客戶機的主機名
192.168.11.0/24 表示允許192.168.11.0這個網段的所有主機訪問共享

共享選項:
ro (常用選項)可讀ReadOnly
rw (常用選項)可讀可寫read + write
sync (常用選項)同步傳輸
async (常用選項)異步傳輸
no_root_squash (常用選項)不將root映射成nfsnobody匿名用戶,即讓root用自己的身份和權限訪問共享
no_all_squash (默認啓用)不將所有用戶映射成nfsnobody匿名用戶,即讓所有用戶用自己的身份和權限訪問共享
root_squash 將root映射成nfsnobody匿名用戶(默認啓用)
all_squash 將所有用戶映射成nfsnobody匿名用戶
anonuid 匿名用戶的uid號
anongid 匿名用戶的gid號

nfs的其他配置文件:(僅瞭解一下,無需修改)
cat /var/lib/nfs/etab 記錄nfs共享的完整設置選擇,此文件的內容來源於/etc/exports文件。當重啓nfs服務時,會自動更新etab文件內容。

例:通過nfs將/usr目錄以只讀方式共享,允許任何IP的主機來訪問。
vim /etc/exports
/usr *(ro)

平滑重啓(重加載)nfs服務:exportfs -rav 或 systemctl reload nfs
本地(內測)查共享資源列表:showmount -e 127.0.0.1

exportfs命令選項:man exportfs
-r 重新共享所有目錄
-a 打開或取消所有目錄共享。
-v 輸出詳細信息。當共享或者取消共享時,顯示在做什麼。
-f 在“新”模式下,刷新內核共享表之外的任何東西。

在異地(公測)做掛在訪問測試:
本地(內測)查共享資源列表:showmount -e 192.168.11.11
創建掛載點:mkdir -pv /mynfs
掛載:mount -t nfs 192.168.11.11:/usr /mynfs
查磁盤空間使用狀態:df -hT

showmount選項:man showmount
-a或--all 以 host:dir 這樣的格式來顯示客戶主機名和掛載點目錄。
-d或--directories 僅顯示被客戶掛載的目錄名。
-e或--exports 顯示NFS服務器的輸出清單。

在Win7/10中訪問NFS共享:
1.安裝nfs客戶端(client)程序。
運行Win+R-->control控制面板-->程序-->打開或關閉windows功能-->NFS服務-->勾選“NFS客戶端”-->確定。
2.運行Win+R-->cmd-->輸入如下命令。
查共享資源列表:showmount -e 192.168.11.11
掛載共享資源爲K盤:mount 192.168.11.11:/usr k:
打開共享:win+E--->雙擊K盤圖標

附加操作:卸載共享的k盤:右擊K盤圖標--->斷開

練習:用nfs服務以可讀可寫(rw)方式共享/opt目錄,允許任何IP的主機訪問。做本地訪問測試,將其掛載到/optnfs目錄,在掛載點目錄中touch a.txt文件,看是否有寫入權限。

問題:讓root用戶在掛載點目錄下touch a.txt文件時提示"無法創建/optnfs/a.txt權限不夠"。怎麼辦?
問題分析:
首先,看exports共享中是否以rw可讀可寫方式共享了指定的目錄。
其次,查看共享目錄自身的權限,用ls -ld /opt查看權限結果。權限結果如下:
drwxr-xr-x. 3 root root 16 1月 3 12:11 /opt
請回答權限的五個問題?
再次,root用戶在訪問nfs共享時,root是以匿名訪問的,屬於其他用戶,而/opt目錄自身對於other其他用戶的權限是r-x,無w可寫的權限。但是普通用戶是以no_all_squash不以匿名用戶身份,而是以自己真實訪問共享。
權限解決方案:將/opt目錄的other權限用chmod o+w /opt來設置之後,再用touch命令在掛載點目錄做創建測試,發現可以寫了。

附加操作:查看touch後的a.txt權限如下:
-rw-r--r--. 1 nfsnobody nfsnobody 0 1月 21 10:49 a.txt
說明:a.txt的屬主、屬組均爲nfsnobody匿名用戶賬號。

文件共享權限要考慮的2個要素:
1.用戶對目錄自身的訪問權限。
2.目錄做共享時設置的訪問權限。
警告:用戶訪問共享時想可讀可寫,必須是以上兩個權限都爲可讀可寫。


克隆虛擬機(01-21-PM):
準備工作:
1.將linx系統設置成開機自動進入CLI命令行界面:
cat /etc/inittab 查看inittab系統啓動的運行等級配置文件
systemctl get-default 查看當前系統的啓動運行等級
systemctl set-default multi-user.target 設置系統啓動的運行等級爲3,即多用戶的CLI命令行界面

附註(不做這一步):
systemctl set-default graphical.target 設置系統啓動的運行等級爲5,即GUI桌面圖形界面

2.將node12c虛擬機開機,並執行如下操作。
cd /etc/sysconfig/network-scripts
ls
cp -v ifcfg-ens33{,.bak}
vim ifcfg-ens33 修改網卡配置文件全文內容如下[刪掉不需要的內容即可]
TYPE=Ethernet
BOOTPROTO=none
DEFROUTE=yes
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.11.11
PREFIX=24
GATEWAY=192.168.11.2
DNS1=114.114.114.114
DNS2=8.8.8.8

3.重啓網絡服務:
systemctl restart network
ip a 或 ifconfig

4.將虛擬機用poweroff關機,編輯虛擬機硬件設置,將內存設置爲512M,創建名稱爲"CLI-OK"的快照。

5.(選做)將"CLI-OK"快照克隆出一臺虛擬機,虛擬名稱爲"node12c"。然後編輯node12c虛擬機的硬件設置中的網卡的mac地址(-->高級-->MAC地址-->生成-->看生成的新MAC地址是多少)。

6.將node12c虛擬機開機,執行如下操作。
cd /etc/sysconfig/network-scripts
ls
vim ifcfg-ens33 修改文件中的如下內容[其他內容保持不變]
IPADDR=192.168.11.12

重啓網絡服務,並查看IP地址:
systemctl restart network
ip a 或 ifconfig 看ens33的IP是否變成了192.168.11.12這個IP地址

7.用poweroff命令關閉node12c虛擬機。關機後創建一個名稱爲"IP12"的快照。

8.參考nod12c虛擬機的克隆操作步驟,再克隆出一臺名稱爲"node13c"的虛擬機。參考上面的6、6、7步驟來操作。

附錄(作爲參考):ifcfg-ens33原始配置文件內容如下:
TYPE=Ethernet
PROXY_METHOD=none
BROWSER_ONLY=no
BOOTPROTO=none
DEFROUTE=yes
IPV4_FAILURE_FATAL=no
IPV6INIT=yes
IPV6_AUTOCONF=yes
IPV6_DEFROUTE=yes
IPV6_FAILURE_FATAL=no
IPV6_ADDR_GEN_MODE=stable-privacy
NAME=ens33
UUID=cb9fa9a8-31ac-4a7c-b1ce-365595ebb466
DEVICE=ens33
ONBOOT=yes
IPADDR=192.168.11.11
PREFIX=24
GATEWAY=192.168.11.2
DNS1=114.114.114.114
DNS2=8.8.8.8
IPV6_PRIVACY=no


vsftpd文件共享:

FTP:是文件傳輸協議的縮寫。用來實現文件的上傳(upload)和下載(download)。
FTP是工作在C/S架構模式下。
C/S架構:是客戶端Client/服務器server訪問模式。C/S的特點是客戶機必須使用專用的客戶端程序去訪問服務器。
B/S架構:是瀏覽器Browser、服務器Server訪問模式。B/S的特點是客戶機只需用IE、Firefox等瀏覽器來訪問服務器。B/S架構通常是用來開發基於web網站的應用程序。

vsftpd:是非常安全的ftp守護進程(Very secure ftp Daemon)。
進程:正在進行(運行running)的程序。
守護進程Daemon:網絡服務類的程序都會有守護進程。守護進程是指實時監測服務訪問狀態的程序。通常都是在系統後臺運行。

FTP的工作端口:
21 控制端口,用於在客戶機和服務器之間建立連接。
20 數據端口。用於服務器給客戶機主動進行數據連接。
網絡服務端口號的作用:用來標示服務器上的不同業務(服務)。

服務器:提供服務的機器。

vsftpd的部署思路:(網絡服務的部署通用思路)
0.關閉安全功能,並查狀態:
systemctl stop firewalld ; setenforce 0
systemctl status firewalld ; getenforce
1.查軟件是否已安裝,如果未安裝就安裝軟件。
2.啓動服務,並允許開機自動啓動
3.設置共享目錄,重新加載設置。
4.做本地(內測)訪問測試,做異地(公測)訪問測試。

環境準備:
關閉安全功能,並查狀態:
systemctl stop firewalld ; setenforce 0
systemctl status firewalld ; getenforce

vsftpd、ftp、lftp安裝:
說明:vsftpd是服務器端程序
ftp、lftp是客戶端程序

查是否已安裝:rpm -q vsftpd ftp lftp
安裝:yum install -y vsftpd ftp lftp
查軟件的文件列表:rpm -ql vsftpd
查配置文件列表:rpm -qc vsftpd

vsftpd 服務管理:
重啓動服務:systemctl restart vsftpd
允許開啓自動啓動:systemctl enable vsftpd
查服務狀態:systemctl status vsftpd

共享需要的文件:
vsftpd的默認共享目錄:
匿名用戶(ftp或anonymous)共享:/var/ftp目錄
普通用戶:訪問的是普通用戶自己的家目錄,通常是"/home/用戶名"文件夾
注意:root用戶默認不能登錄vsftpd服務器來訪問共享,因爲root賬號在黑名單裏。

vsftpd的配置文件:rpm -qc vsftpd
/etc/logrotate.d/vsftpd 日誌輪滾策略文件
/etc/pam.d/vsftpd pam認證文件(重點)
/etc/vsftpd/ftpusers 黑名單文件(重點)
/etc/vsftpd/user_list 用戶訪問列表文件(重點),默認是黑名單,但是可以設置成白名單
/etc/vsftpd/vsftpd.conf 服務的主配置文件(重點)

練習:將root用戶從ftpusers黑名單文件中註釋掉,重啓vsftpd服務,用root賬號訪問共享資源。
第1步:編輯黑名單文件1。
vim /etc/vsftpd/ftpusers 編輯黑名單文件1
#root 在此行行首添加#號

第1步:編輯黑名單文件2。
vim /etc/vsftpd/user_list 編輯黑名單文件2
#root 在此行行首添加#號

第3步:重啓服務。(修改黑名單文件是立即生效的,可以不重啓服務)。
systemctl restart vsftpd

第四步,做共享訪問測試。
win7/10訪問vsftpd共享:win+E-->ftp://root:[email protected]

linux用root訪問共享:
ftp 192.168.11.11 回車---》用戶名root回車--->密碼0回車-->看到successful表示登錄成功
lftp 192.168.11.11 -u root,0

練習:在centos系統中用useradd 創建tom用戶,設置登錄密碼爲tom。然後分別用win7/10和centos做共享訪問測試。並在win7/10上傳一個文件到用戶的家目錄中。

問題:什麼時候讓user_list文件變成白名單?
答:由於當user_list爲白名單時,僅允許白名單中的用戶訪問vsftpd共享。所以當系統中有1萬個用戶賬號時,我只讓3個人能訪問vsftpd文件共享服務,那麼就得用白名單。

練習:在系統中創建3個用戶tom、lucy、lily,給他們設置登錄密碼爲0。用windows做ftp訪問共享測試,分別上傳一個文件到用戶的家目錄中。
useradd tom
useradd lucy
useradd lily
echo 0 | passwd --stdin tom
echo 0 | passwd --stdin lucy
echo 0 | passwd --stdin lily

win7/10訪問共享:
Win+E--> ftp://192.168.11.11回車--->右鍵菜單-->登錄-->用戶名和密碼-->上傳文件。

練習:採用user_list白名單功能,僅允許tom用戶訪問vsftpd共享。
第一步,將tom用戶加入到user_list文件中。
vim /etc/vsftpd/user_list 在文件最後添加如下內容
tom

第二步,將user_list設置成白名單文件。
vim /etc/vsftpd/vsftpd.conf
userlist_deny=NO 找到此行,如果沒有就在最後添加此行

第三步,重啓vsftpd服務.
systemctl restart vsftpd

第四步,分別用tom、lucy、lily訪問共享,看是否只有tom能訪問。
win7/10訪問共享:
Win+R-->cmd--> ftp 192.168.11.11回車--->用戶名和密碼-->看登錄是否成功( successful)

小結:vsftpd的用戶名單監測流程如下:
先監測user_list文件(是黑還是白)----》再監測ftpusers黑名單中是否有這個用戶。

練習:將tom用戶從ftpusers和user_list文件中刪除或用#號註釋掉。將/etc/vsftpd/vsftpd.conf主配置文件的userlist_deny=NO這行用#號註釋掉,並重啓vsftpd服務,最後用tom、lucy、lily做ftp的命令行訪問測試,確保這3個用戶都能訪問共享。

到此:ftpusers和user_list名單文件功能介紹完畢。

vsftpd.conf主配置文件:
功能:對vsftpd軟件的功能進行設置,可以設置限速、匿名和普通用戶訪問權限、chroot等功能。

專家建議:修改主配置文件之前,最好備份一下配置文件。備份文件的後綴通常爲.bak或.org。
cd /etc/vsftpd ; ls
cp -av vsftpd.conf{,.bak}
說明:-a 是複製時包括源文件的所有(all)的權限和屬性、selinux屬性都複製給目標文件。而-p選項時複製時不包含selinux屬性的。

練習:查看並熟悉vsftpd.conf主配置文件中的默認設置。查看時不包含#開頭(^#)的、空白行(^$),要求顯示行號。
grep -nEv '^#|^$' /etc/vsftpd/vsftpd.conf 內容如下(共13行)
12:anonymous_enable=YES 允許匿名訪問共享
16:local_enable=YES 允許本地普通用戶(是指用useradd創建的用戶)訪問共享
19:write_enable=YES 允許寫操作,即可寫權限
23:local_umask=022 本地用戶的umask值
37:dirmessage_enable=YES 允許顯示目錄信息
40:xferlog_enable=YES 允許xferlog日誌,xferlog文件路徑是/var/log/xferlog文件,僅記錄文件的上傳和下載日誌
43:connect_from_port_20=YES 啓用20號端口的連接(data數據端口)
57:xferlog_std_format=YES 啓用xferlog標準(std是standard)格式的日誌
115:listen=NO 不啓用ipv4監聽
124:listen_ipv6=YES 啓用IPV6監聽,會向下兼容ipv4
126:pam_service_name=vsftpd vsftpd的pam用戶認證服務文件,是/etc/pam.d/vsftpd文件
127:userlist_enable=YES 啓用user_list用戶列表文件
128:tcp_wrappers=YES 啓用tcp_wrappers防火牆功能,用來做基於IP的TCP訪問控制

vsftpd.conf默認設置的功能:
1.允許匿名用訪問共享,訪問的是/var/ftp目錄,且只能下載文件,不能上傳文件。
2.允許普通用訪問共享,訪問的是用戶自己的家目錄,既能下載文件,也能上傳文件。
3.普通用戶用ftp命令登錄到vsftpd服務器之後,能chroot到服務器的其他目錄路徑下,此功能不安全,建議關掉。

練習:設置vsftpd.conf配置文件中不允許anonymous匿名用戶訪問vsftpd共享,重啓服務後,做訪問測試。測試完畢後,將設置還原,並重啓服務。

xferlog是一個上傳下載日誌。只是記錄上傳下載。如果要看更加具體的登錄的一些日誌,需要vsftpd.log日誌文件。
例:/var/log/xferog日誌文件內容如下。
Tue Jan 22 11:53:35 2019,1 ,::ffff:192.168.11.1 , 2061, /home/tom/qr.png ,b _ i r tom ftp 0 c
發生時間,傳輸所花時間,客戶端IP,文件大小byte,文件名路徑,文件傳輸格式,文件特殊處理標記,i上傳或o下載,r真實用戶登錄,tom用戶,ftp服務器名,認證方式爲0,認證用戶ID爲
,傳輸完成狀態爲c已完成。

下面解釋一下xferlog日誌文件中每一列的含義。
列號 列功能 說明 示例
1 發生時間 記錄發生的時間 例:SunJun1612:23:532013
2 文件傳輸時間 傳輸該文件使用的時間 例:1
3 客戶端 客戶端主機的IP或主機名 例:192.168.1.100
4 文件大小 單位:字節 例:12
5 文件名 上傳或下載的文件名稱 例:/pub/dd
6 文件傳輸類型 a表示ASCII(文本),b(二進制) 例:b
7 包括四種文件特殊處理標記,“_”表不做任何處理,C表示文件時壓縮格式,U表示文件是非壓縮格式,T表示是tar格式
8 文件傳輸方向 o表示從服務器到客戶端,i相反 例:i
9 用戶登錄方式 a表示匿名登錄,g表示虛擬用戶登錄,r表示真實用戶登錄。 例:a
10 用戶名稱 用戶名稱 ?(匿名用戶)
11 服務器名 一般爲FTp ftp
12 認證方式 0表示無,1表示RFC931認證 例:0
13 認證的用戶ID 表示無法獲得用戶ID 例:
14 傳輸完成狀態 c表示完成,i表示沒完成 例:i

以上基本上就是我們的xferlog日誌記錄內容。


vsftpd的chroot牢籠功能:vim /etc/vsftpd/vsftpd.conf 找到如下內容
#chroot牢籠功能:鎖定用戶在自己的家目錄中,即不允許用戶訪問自己家目錄以外的目錄。
#chroot_local_user=YES 允許本地用戶chroot牢籠功能(change root),默認爲NO不啓用
#chroot_list_enable=YES 啓用chroot_list文件功能,默認NO不啓用此功能

(default follows)

#chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路徑,默認無此文,需要用戶自己創建

chroot牢籠四種情況:
1.全部不鎖(默認情況)
2.全部加鎖(用兩行代碼)
3.少數不加鎖(用四行代碼)
4.少數加鎖(用三行代碼)

情況1.關閉所有普通用戶的牢籠功能(即不鎖,默認情況)。設置如下
#chroot_local_user=YES 允許本地用戶chroot牢籠功能(change root),默認爲NO不啓用
#chroot_list_enable=YES 啓用chroot_list文件功能,默認NO不啓用此功能

(default follows)

#chroot_list_file=/etc/vsftpd/chroot_list

情況2.啓用所有普通用戶的牢籠功能(即對所有人加鎖)。設置如下
chroot_local_user=YES 啓用本地用戶chroot牢籠功能(change root),默認爲NO不啓用
allow_writeable_chroot=YES 允許chroot牢籠功能下執行寫操作(centos7中必加此行)

測試練習:將vsftpd.conf文件中的chroot_local_user=YES功能啓用,重啓服務,用tom、lucy用訪問共享,執行ls /usr看命令結果。

情況3.給指定的少數普通用戶不啓用牢籠功能(即少數人不加鎖,白名單)。設置如下
chroot_local_user=YES 啓用本地用戶chroot牢籠功能(change root),默認爲NO不啓用
allow_writeable_chroot=YES 允許chroot牢籠功能下執行寫操作(centos7中必加此行)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路徑

測試練習:將vsftpd.conf文件中的chroot_list做如下白名單設置,重啓服務,用tom、lucy用訪問共享,執行pwd看命令結果。
第1步,編輯vsftpd.conf文件。
vim /etc/vsftpd/vsftpd.conf
啓用如下chroot的4行代碼
chroot_local_user=YES
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

第2,修改chroot_list名單文件。(此文件中的用戶不啓用牢籠功能)
vim /etc/vsftpd/chroot_list 添加如下內容
lucy
lily

第3步,重啓服務,分別在ftp命令行用tom、lucy、lily做訪問測試,執行pwd命令看顯示的工作路徑。
測試結果:tom啓用了牢籠功能,lucy、lily是不啓用牢籠功能的。

情況4.給指定的少數普通用戶啓用牢籠功能(即少數人加鎖,黑名單)。設置如下
#chroot_local_user=YES 啓用本地用戶chroot牢籠功能(change root),默認爲NO不啓用
allow_writeable_chroot=YES 允許chroot牢籠功能下執行寫操作(centos7中必加此行)
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list 指定chroot_list文件及其路徑

測試練習:將vsftpd.conf文件中的chroot功能做如下chroot_list黑名單設置,重啓服務,用tom、lucy用訪問共享,執行pwd看命令結果。
第1步,編輯vsftpd.conf文件。
vim /etc/vsftpd/vsftpd.conf
啓用如下chroot的4行代碼
#chroot_local_user=YES
allow_writeable_chroot=YES
chroot_list_enable=YES
chroot_list_file=/etc/vsftpd/chroot_list

第2,修改chroot_list名單文件。(此文件中的用戶不啓用牢籠功能)
vim /etc/vsftpd/chroot_list 添加如下內容
lucy
lily

第3步,重啓服務,分別在ftp命令行用tom、lucy、lily做訪問測試,執行pwd命令看顯示的工作路徑。
測試結果:lucy、lily啓用了牢籠功能,tom是不啓用牢籠功能的。

練習:將vsftpd.conf配置文件中的chroot功能的配置選項代碼全部註釋掉。再繼續研究新的功能。


需求:實現允許anonymous匿名用戶既能下載又能上傳文件文件。
需求分析:匿名用戶要想對共享目錄有rw可讀可寫的權限,必須滿足以下2個條件:
1.文件共享軟件必須允許這個用戶有可讀可寫的權限。
2.用戶對共享目錄自身要有可讀可寫的權限。
3.匿名用戶僅允許上傳文件到/var/ftp中的子目錄中。如/var/ftp/upload,且ftp匿名用戶對upload目錄要有可讀可寫權限。

警告:/var/ftp目錄的屬主、屬組不允許修改,且other權限不允許有w可寫權限,否則用ftp匿名用戶訪問共享時會提示下面這個500錯誤:
500 OOPS: vsftpd: refusing to run with writable root inside chroot()
Login failed.
421 Service not available, remote server has closed connection

實施參考:
第1步,在vsftpd.conf配置文件中允許anonymous匿名用戶有可讀可寫的權限。
vim /etc/vsftpd/vsftpd.conf 找到如下代碼,去掉29、33行的#號
12 anonymous_enable=YES
29 #anon_upload_enable=YES 允許匿名用戶上傳
33 #anon_mkdir_write_enable=YES 允許匿名用戶用mkdir創建目錄
anon_other_write_enable=YES 允許匿名用戶執行rm刪除等操作(添加此行)
anon_world_readable_only=NO 關閉匿名用戶只讀的限制(爲YES時會無法下載)

第2步,用root用戶創建/var/ftp/upload目錄,權限爲777或屬主和屬組均爲ftp,重啓vsftpd服務,在win7/10中用ftp匿名用戶訪問共享ftp://192.168.11.11,上傳一個文件到upload共享目錄,看是否能傳上去。結果是可以匿名用戶上傳文件到upload目錄中。
mkdir -v /var/ftp/upload
chown -v ftp:ftp /var/ftp/upload 或 chmod -v 777 /var/ftp/upload
systemctl restart vsftpd


vsftpd.conf的其他配置選項:man vsftpd.conf
48 #chown_uploads=YES 允許修改上傳後的文件的屬主和屬組
49 #chown_username=whoever 文件的屬主、屬組修改成當前訪問共享的用戶
53 #xferlog_file=/var/log/xferlog 指定xferlog日誌文件名及其路徑,當xferlog_enable爲YES時,此項默認爲啓用
60 #idle_session_timeout=600 (重點)空閒會話超時爲600秒(即10分鐘),默認開啓了,時間是300秒
idle空閒會話超時時間是指用戶登錄到ftp服務後,n秒都沒執行操作,服務器自動將此用戶斷開連接。(防止客戶機佔用服務器網絡資源)
63 #data_connection_timeout=120 (重點)數據連接超時時間爲120秒,默認開啓了,時間是300秒
data_connection超時時間是指當客戶端下載或上傳文件時,由於網絡不穩定,當數據掉線時間超過120秒,文件就下載或上傳失敗。(防止客戶機佔用服務器網絡資源)
67 #nopriv_user=ftpsecure
72 #async_abor_enable=YES 允許異步方式傳輸數據
83 #ascii_upload_enable=YES 允許以ascii編碼方式上傳文件,默認爲NO,是以binary二進制方式上傳
84 #ascii_download_enable=YES 允許以ascii編碼方式下載文件,默認爲NO,是以binary二進制方式下載
87 #ftpd_banner=Welcome to blah FTP service. (重點)自定義banner歡迎提示語(標語)(用於打廣告)
banner_file=/etc/vsftpd/banner.txt (重點)自定義banner標語文件(用於打廣告)
91 #deny_email_enable=YES
93 #banned_email_file=/etc/vsftpd/banned_emails

local_max_rate=0 本地用戶(普通用戶)最大傳輸速度,0是不限速。單位是byte字節
anon_max_rate=0 匿名用戶最大傳輸速度,0是不限速。單位是byte字節
anon_other_write_enable=YES 允許匿名用戶執行除了新建和上傳外的其他權限,如刪除、改名。

listen_port=21 監聽21號端口(默認開啓)
pasv_enable=YES 啓用pasv被動模式
pasv_min_port=5000 指定pasv被動模式的最小端口號
pasv_max_port=6000 指定pasv被動模式的最大端口號
dual_log_enable=YES 啓用/var/log/xferlog 和 /var/log/vsftpd.log 雙日誌文件(默認關閉)
max_per_ip=數字 單個IP的最大併發量(即單個客戶端IP能同時登錄的數量),同時下載幾個文件
max_clients=數字 最大客戶端數量(即併發量),即允許有多少個IP的客戶端同時訪問服務器

user_config_dir=/etc/vsftpd/userconf 定義用戶個人配置文件所在目錄。定義了這句之後,就要在userconf目錄中創建以用戶名命名的文件,這就是這個用戶的配置文件。其中加入一條local_root=/home/ftp爲指定用戶登錄目錄。
setproctitle_enable=YES 將所有連接以不同的進程體現出來

練習:要求在vsftpd.conf中對每個用戶限制不同的文件傳輸速度,並且設置不同的登錄“標示語”。
第1步,在vsftpd.conf配置文件中添加如下功能選項。
vim /etc/vsftpd.conf 添加如下內容
user_config_dir=/etc/vsftpd/userconf 指定用戶個性化配置文件的主目錄

第2步,創建/etc/vsftpd/userconf目錄,給tom限制上傳和下載速度爲2MB/s(約2000000字節)。
mkdir -v /etc/vsftpd/userconf
vim /etc/vsftpd/userconf/tom 添加如下設置內容
local_max_rate=2000000

第3步,參考lucy的限速設置方法,給lucy設置成限制上傳和下載速度爲8M/s(約2000000字節)。
vim /etc/vsftpd/userconf/tom 添加如下設置內容
local_max_rate=8000000


vsftpd的tcp_wrapers防火牆設置
查網絡服務對應的端口手冊文件:more /etc/services
tcp_wrapers的功能:是一個迷你的TCP防火牆,可以用來做基於TCP協議的應用程序的IP安全訪問控制。
配置文件:
白名單:/etc/hosts.allow
黑名單:/etc/hosts.deny

技巧:讓少數人爲白戶,那麼先在hosts.deny中做拒絕所有(all)黑名單,然後在hosts.allow中做少數IP的放行白名單。

配置文件格式:man hosts.allow
格式說明: 守護進程名稱:主機名或IP地址
守護進程名稱可以是:vsftpd、sshd、httpd、in.tftpd等。
主機名或IP地址可以是:all所有主機、主機名、域名(網址)、IP地址、網絡地址、IP地址範圍。

設置舉例:
vim /etc/hosts.deny 黑名單
vsftpd:192.168.11.1 拒絕192.168.11.1這臺主機訪問vsftpd共享
sshd:192.168.11.1 拒絕192.168.11.1這臺主機訪問sshd共享

注意:做完hosts.deny黑名單測試後,請將hosts.deny文件中的設置註釋掉或刪掉。然後再做下面的vsftpd虛擬用戶項目。

vsftpd虛擬用戶
虛擬用戶:即非useradd創建的用戶賬號(非/etc/passwd中的賬號),而是用vim創建的屬於vsftpd的獨立用戶賬號。
虛擬用戶的優勢:可以避免系統中的用戶賬號過多,讓vsftpd文件共享軟件獨立管理自己的用戶賬號。

虛擬用戶賬號文件格式:
文件中的奇數行是用戶賬號,偶數行是用戶的密碼。

vsftpd的虛擬用戶方案思路:
0.準備工作:確保vsftpd文件共享服務已安裝,並已啓動vsftpd服務,且關閉了selinux和firewalld安全功能。
1.創建虛擬用戶賬號文件。
2.將虛擬用戶賬號用db_load轉換成加密的數據庫格式文件。
3.在vsftpd的pam認證文件中添加虛擬用戶賬號文件的認證關係。
4.用useradd創建一個普通用戶賬號vftper。
5.在vsftpd.conf配置文件中啓用guest來賓(即虛擬用戶)功能,設置一個真實用戶賬號,並將真實用戶賬號vftper和虛擬用戶賬號文件關聯起來。
6.給每個虛擬用戶賬號設置獨立的共享訪問速度和訪問目錄。
7.重啓vsftpd服務,並分別用虛擬用戶賬號訪問共享。

vsftpd虛擬用戶實施思路:
0.準備工作:確保關閉了selinux和firewalld安全功能。且vsftpd文件共享服務已安裝,並已啓動vsftpd服務。
setenforce 0
getenfroce
systemctl stop firewalld
systemctl status firewalld

1.創建虛擬用戶賬號文件。
cat > /etc/vsftpd/vuser.txt <<EOF
f1
passf1
f2
passf2
f3
passf3
EOF

2.將虛擬用戶賬號轉換成加密的數據庫格式文件。
yum provides db_load
yum install -y libdb-utils
cd /etc/vsftpd
ls
db_load -T -t hash -f /etc/vsftpd/vuser.txt /etc/vsftpd/vuserdb.db
chmod -v 600 /etc/vsftpd/vuserdb.db

db_load選項:
-T 是translation轉換文件格式
-t hash 指定格式轉換的算法爲hash算法
-f 是指定要轉換格式的文件
/etc/vsftpd/vuser.txt 是要轉換格式的文件
/et/vsftpd/vuserdb.db 是轉換格式之後的文件

3.在vsftpd的pam認證文件中添加虛擬用戶賬號文件的認證關係。
cp -av /etc/pam.d/vsftpd{,.bak}
vim /etc/pam.d/vsftpd 做如下修改
#%PAM-1.0
#以下兩行的功能:僅能實現虛擬用戶訪問共享,普通用戶不能訪問共享。(不建議使用)
#required 意思是必須的 sufficient 意思是滿足的、備選的
#auth required pam_userdb.so db=/etc/vsftpd/vuserdb
#account required pam_userdb.so db=/etc/vsftpd/vuserdb
#以下功能選項的功能:既能讓虛擬用戶訪問共享,也能讓普通用戶訪問共享。(推薦使用)
auth sufficient pam_userdb.so db=/etc/vsftpd/vuserdb
account sufficient pam_userdb.so db=/etc/vsftpd/vuserdb
#以下幾行功能選項是vsftpd的默認pam認證文件內容。(無需修改)
session optional pam_keyinit.so force revoke
auth required pam_listfile.so item=user sense=deny file=/etc/vsftpd/ftpusers onerr=succeed
auth required pam_shells.so
auth include password-auth
account include password-auth
session required pam_loginuid.so
session include password-auth

4.用useradd創建一個普通用戶賬號vftper。
useradd vftper -s /sbin/nologin
id vftper
ls -ld /home/vftper

5.在vsftpd.conf配置文件中設置一個真實用戶賬號,並將真實用戶賬號vftper和虛擬用戶賬號文件關聯起來。
cd /etc/vsftpd
cp -av vsftpd.conf{,.bak}
cat /etc/vsftpd/vsftpd.conf
vim vsftpd.conf 在文件最後添加如下內容
guest_enable=YES 允許來賓用戶訪問共享,即虛擬用戶
guest_username=vftper 指定來賓用戶名爲vftper用戶(即第4步新建的用戶)
user_config_dir=/etc/vsftpd/vuser_conf 指定用戶配置文件目錄
allow_writeable_chroot=YES 允許chroot功能下執行寫操作(必須加此行,否則會登錄失敗)
#user_sub_token=$USER 使用用戶子令牌(通常不用)

6.給每個虛擬用戶賬號設置獨立的共享訪問速度和訪問目錄。
cd /etc/vsftpd
mkdir -v vuser_conf
cd vuser_conf
#創建f1、f2虛擬用戶的會員個性化設置文件,允許f1這個虛擬用戶在自己的家目錄中可讀可寫。
touch f1 f2
mkdir -v /home/vftper/{f1,f2,f3}
chmod -v 777 /home/vftper/{f1,f2,f3}
cat > f1 <<EOF
write_enable=YES
anon_world_readable_only=NO
anon_upload_enable=YES
anon_mkdir_write_enable=YES
anon_other_write_enable=YES
local_root=/home/vftper/f1
EOF

#允許f2這個用戶在自己的家目錄中可讀,但不可寫。
cat > f2 <<EOF
#添加local_root這行即可,其餘內容可以不添加。
local_root=/home/vftper/f2
write_enable=NO
anon_world_readable_only=NO
anon_upload_enable=NO
anon_mkdir_write_enable=NO
anon_other_write_enable=NO

EOF

7.重啓vsftpd服務,並分別用虛擬用戶賬號訪問共享。
systemctl restart vsftpd
ftp 192.168.11.11 -->用f1、f2虛擬用戶分別訪問共享,測試文件的上傳。

到此,vsftpd的虛擬用戶項目試驗完畢。

使用ssl登入
cd /etc/pki/tls/certs
openssl req -new -x509 -nodes -out vsftpd.pem -keyout vsftp.crt

vim /etc/vsftpd/vsftpd.conf. 創建vsftpd的ssl認證配置文件
ssl_enable=YES
ssl_sslv2=YES
ssl_sslv3=YES
ssl_sslv1=YES
rsa_cert_file=/etc/pki/tls/certs/vsftpd.crt

重啓vsftpd服務後,就可用客戶端來嘗試SSL加密連接了。


ftp和lftp客戶端程序的操作功能:

ftp命令:
用法:ftp [選項] 主機名或IP地址

練習:用tom用戶登錄到ftp 192.168.11.11服務器上,執行如下的ftp內部命令。

ftp的內部操作命令:
help或? 顯示命令幫助
pwd 顯示遠程工作目錄路徑
ls 顯示遠程文件名列表
!本地命令 執行客戶機本地的操作命令,如!date 、 !ls
lcd 切換或查詢本地(local)路徑,如 lcd /etc 、 lcd /opt
cd 切換遠程網絡資源路徑
put 上傳單個本地當前目錄下的文件到遠程服務器的的當前工作目錄下.如put group
mput 上傳多個本地當前目錄下的文件到(同上),如 mput hosts
get 下載單個文件到當前的本地工作目錄下,如 get group
mget 下載多(multi)個文件到當前的本地工作目錄下,如 mget host

注意:put、mput、get、mget操作只用對本地當前工作目錄中的文件操作。
prompt 關閉或開啓交互式模式,即是否提示yes、no
verbose 開啓或關閉執行過程進度
delete 刪除服務器上的單個文件
mdelete 刪除服務器上的多個文件,如 mdelete hosts*
mkdir 在共享目錄中新建目錄,如 mkdir haha
rmdir 在共享目錄中刪除目錄,如 rmdir haha
passive 關閉或開啓ftp的被動數據傳輸模式
user 切換用戶登錄賬號
rename 修改共享目錄中的文件名

lftp命令:
用法:ftp [選項] 主機名或IP地址
例:lftp 192.168.11.11 -u tom,0
說明:-u 是指定用戶名和密碼,兩者間用逗號分隔

練習:用tom用戶登錄到ftp 192.168.11.11服務器上,執行如下的ftp內部命令。
lftp 192.168.11.11 -u tom,0

lftp的內部操作命令:
help或? 顯示命令幫助
pwd 顯示遠程工作目錄路徑
ls 顯示遠程文件名列表
!本地命令 執行客戶機本地的操作命令,如!date 、 !ls
lcd 切換或查詢本地(local)路徑,如 lcd /etc 、 lcd /opt
cd 切換遠程網絡資源路徑
put 上傳單個本地當前目錄下的文件到遠程服務器的的當前工作目錄下.如put /etc/group
mput 上傳多個本地當前目錄下的文件到(同上),如 mput /etc/host
get 下載單個文件到當前的本地工作目錄下,如 get group
mget 下載多(multi)個文件到當前的本地工作目錄下,如 mget host

mirror 下載共享目錄中當前的所有文件到本地的當前目錄下
mrm 刪除共享目錄中的多個文件,mrm刪目錄需要用-r選項,如 mrm host*
注意:put、mput、get、mget操作可用絕對路徑。


win7/10下的ftp客戶端軟件:
ftp、資源管理器(Win+E)、flashFXP

flashFXP客戶端軟件:優點是支持斷點續傳功能。
斷點續傳:是指客戶機重啓系統後可以繼續下載未完成文件內容。


ftp的工作模式:主動port、被動passive模式

ftp主動(port)模式工作過程:
1.客戶機和服務器建立連接關係(登錄): 客戶機(>1024的隨機端口號) <----> 服務器 21號port
2.雙方建立數據連接關係,傳輸數據:客戶機(>1024的隨機port) <----> 服務器 20號port

ftp被動(pasv)模式工作過程:
1.客戶機和服務器建立連接關係(登錄): 客戶機(>1024的隨機端口號) <----> 服務器 21號port
2.雙方建立數據連接關係,傳輸數據:客戶機(>1024的隨機port) <----> 服務器(>1024的隨機port)
說明:當ftp服務器上有防火牆時,通常客戶機是以被動模式去訪問ftp服務器的。在ftp服務器的vsftpd.conf和防火牆上要指定放行的被動模式端口範圍的最小值和最大值。
vsftpd.conf 的被動模式端口範圍:
pasv_min_port=5000
pasv_max_port=6000

vsftpd共享小結:
1.ftp是什麼?實現什麼功能?2個工作端口?
2.vsftpd的查、安裝、啓動、允許開機自啓動、查狀態、查配置文件?
3.vsftpd黑、白名單。ftpusers、user_list。
4.vsftpd.conf主配置文件的功能選項。如限速、併發量、banner標示語等設置。
5.vsftpd的chroot牢籠功能。熟悉四行chroot的代碼。
6.ftp、lftp是客戶端程序的命令使用:通過命令做文件的上傳、下載。
7.vsftpd的虛擬用戶(guest來賓用戶)功能。
8.vsftpd的匿名用戶上傳功能的實現。
9.ftp服務的主、被動模式工作過程。主、被動模式的區別?

到此,vsftpd文件共享的技術點告一段落.


samba文件共享
功能:採用smb和netbios協議實現linux和windows之間的文件共享。windows的網上鄰居和文件夾共享就是採用的smb和netbios協議開發的軟件。

smb:是服務器消息塊(server message block)的縮寫。
netbios:是網絡基本輸入輸出系統(net basic input output system)的縮寫。此協議是採用計算機主機名來實現主機間的互訪。目前被直接捆綁在IP協議簇中。

smb協議的開發者:SMB最初是IBM的貝瑞·費根鮑姆(Barry Feigenbaum)研製的,其目的是將DOS操作系統中的本地文件接口“中斷13”改造爲網絡文件系統。

samba共享服務的端口號:445(data share) 139(netbios主機名解析)

環境準備:
關閉安全功能,並查狀態:
systemctl stop firewalld ; setenforce 0
systemctl status firewalld ; getenforce

samba軟件的安裝:
說明:samba是服務器端軟件
samba-client是端客戶軟件
samba-common 是samba的公用程序文件

查是否已安裝:rpm -qa | grep samba 或 rpm -q samba samba-common samba-client
安裝:yum install -y samba samba-common samba-client
查軟件的文件列表:rpm -ql samba
查配置文件列表:rpm -qc samba samba-common

samba服務管理:
重啓動服務:systemctl restart smb
允許開啓自動啓動:systemctl enable smb
查服務狀態:systemctl status smb
查samba的服務端口:netstat -atunlp | grep smb 或 lsof -i:445
netstat選項:是查看網絡進程狀態(net stat)的命令。
-a 即all,顯示所有網絡進程
-t 即tcp,顯示TCP協議的網絡進程
-u 即udp,顯示UDP協議的網絡進程
-n 即number,以數字方式顯示協議的端口號,例 ftp 21、http 80、ssh 22、vnc 5900等
-l 即listen,只顯示狀態爲listen監聽的網絡進程
-p 即PID進程號,顯示網絡進程的PID號
網絡進程狀態(用man netstat可查):listen監聽 ESTABLISHED已連接 CLOSE_WAIT等待關閉

共享需要的文件:
samba的默認共享目錄:
普通用戶:訪問的是普通用戶自己的家目錄,通常是"/home/用戶名"文件夾
自定義共享目錄:需要在/etc/samba/smb.conf主配置文件中設置共享參數

samba-common、samba的配置文件:rpm -qc samba-common samba
/etc/logrotate.d/samba 日誌輪滾策略文件
/etc/samba/lmhosts 本地主機配置文件
/etc/samba/smb.conf (重點)samba的主配置文件,用於實現samba的環境設置和自定義共享目錄
/etc/sysconfig/samba samba的系統配置文件

/etc/openldap/schema/samba.schema samba的openldap認證配置文件
/etc/pam.d/samba samba的pam認證文件

練習:在系統中創建用戶s1、s2、s3,用pdbedit將3個用戶分別設置成samba用戶並指定密碼,用pdbedit顯示samba用戶賬號列表,用win7/10訪問samba共享。
useradd s1 新建s1普通用戶
useradd s2
useradd s3
pdbedit -L 顯示samba用戶名列表
pdbedit -a s1 將s1用戶設置成samba用戶
pdbedit -a s2
pdbedit -a s3
pdbedit -L
pdbedit -Lv s1 顯示s1用戶的詳細信息

win7/10訪問samba共享:Win+R---> \192.168.11.11\s1回車---> 輸入s1用戶名和密碼--->上傳1個文件。

linux中查samba共享資源:smbclient -L 192.168.11.11 在輸入密碼提示是,直接回車即可。
linux中登錄到samba服務器:smbclient //192.168.11.11/s1 -U s1%0
smbclient軟件的內部命令:
help或? 顯示命令幫助
ls 顯示共享目錄的文件名列表
!命令 執行客戶端本地的shell命令。如 !date 、 !ls 、!pwd
lcd 切換本地(local)的工作目錄路徑。如 lcd /etc
pwd 顯示共享目錄的工作路徑
prompt 關閉或開啓交互式操作模式,即是否提示Yes/No
mkdir 在共享目錄中新建目錄,如 mkdir ak
mput 上傳多個本地當前目錄下的文件到遠程服務器的的當前工作目錄下
如mput host*
mget 從共享目錄中下載多個文件到本地當前目錄下。如 mget hosts
rm 刪除文件
rmdir 刪除目錄
exit 退出smbclient軟件


samba的自定義共享設置:man smb.conf

練習:要求用samba共享/opt目錄,共享名稱爲optsmb,允許任何人對此目錄可讀可寫。
第1步,用vim編輯/etc/samba/smb.conf配置文件。
vim /etc/samba/smb.conf 在文件最後添加如下內容
[optsmb] 共享名稱(商標)
comment=opt dir share 描述信息(內容隨意打,自己看着辦)
path=/opt 共享目錄路徑
writable=yes 開啓可寫權限
browseable=yes 允許在網上鄰居中顯示(瀏覽)
public=yes 或 guest ok=yes 允許匿名訪問共享
#valid users=s1 只允許s1用戶有效訪問共享的(即白名單)
#invalid users=s3 只禁止s3用戶訪問共享(即黑名單)

第2步,檢測smb.conf配置文件語法,重啓smb服務,用s2用戶做共享訪問測試。
testparm 檢測smb.conf配置文件語法
systemctl restart smb
smbclient //192.168.11.11/optsmb -U s2%0
ls
lcd /etc
put hosts 提示“無權限” 按下方操作步驟來解決
exit

第3步,查看/opt目錄的權限,將他的other權限改爲rwx。
ls -ld /opt
chmod -v o+rwx /opt (不安全的做法)將/opt目錄的other權限設置爲rwx可讀可寫可執行

安全的權限設置方法:
chmod -v o-w /opt
getfacl /opt 查/opt目錄的FACL權限
setfacl -m u:s3:rwx /opt 在/opt目錄上設置FACL權限,允許s3用戶可讀可寫可執行

第4步,再次執行第2步中的smbclient的相關操作。分別用s2、s3用戶訪問共享,做文件上傳操作,看哪個用戶上傳文件時提示錯誤“NT_STATUS_ACCESS_DENIED opening remote file”。

第5步,用win7/10訪問samba共享的optsmb名稱所對應的名稱的目錄。分別用s2、s3用戶訪問共享。
win7/10查samba共享資源:Win+R---> cmd ---> new view 192.168.11.11

訪問方法一:Win+R---> \192.168.11.11\optsmb回車---> 輸入s3用戶名和密碼--->上傳1個文件。
訪問方法二:鼠標右擊“計算機圖標”---> 映射網絡驅動器--->輸入 \192.168.11.11\optsmb--->不勾選“登錄時重新連接”,勾選“使用其他憑據連接”--->確定--->輸入s3用戶名和密碼--->確定即可。
訪問方法三:Win+R--->cmd--->net use k: \192.168.11.11\optsmb 密碼 /user:tom

斷開映射的網絡驅動器:net use * /del

win7/10系統中訪問samba文件共享的緩存記錄的清除:
首先,關閉訪問共享的窗口。
然後,Win+R--->cmd---> net use * /del /y 清除共享訪問記錄
---> gpupdate /force 強制刷新組策略


samba的虛擬用戶:
samba的虛擬用戶是指給一個真實的samba用戶定義多個別名(即綽號)。他們只是用戶名不同,但是共用samba真實用戶的密碼。

Samba虛擬用戶的實現方法:
練習:採用samba虛擬用戶功能,給s3用戶分別設置tom、lucy這2個別名,給s2用戶分別設置ak、bk這2個別名。分別在smbclient命中用s2、s3的別名訪問共享。

第1步, 新建用戶別名名單文件(即虛擬用戶名單文件)。
vim /etc/samba/vuser
s2 = ak bk
s3 = tom lucy

第2步,修改smb.conf主配置文件,在文件中指定虛擬用戶名單文件路徑。
vim /etc/samba/smb.conf
[global] (全局環境設置)找到此行
username map=/etc/samba/vuser (添加此行)指定虛擬用戶名單文件路徑

第3步,執行testparm命令,再重啓smb服務,分別在smbclient中用tom、ak用戶做訪問測試。驗證看到的共享文件是什麼?看誰有權限執行mkdir haha?
testparm
systemctl restart smb
smbclient //192.168.11.11/optsmb -U tom%0
執行操作:ls
mkdir haha 能正常創建目錄
rmdir haha 能正常刪除目錄

smbclient //192.168.11.11/optsmb -U ak%0
執行操作:ls
mkdir haha 提示錯誤(無權限)"NT_STATUS_ACCESS_DENIED……"

練習:在192.168.11.12客戶機上,將192.168.11.11的optsmb共享名稱所對應的目錄掛載到/mnt/smbgua目錄中。查看掛載狀態,查看掛載點目錄的文件名列表。
smbclient -L 192.168.11.11 查指定服務器上的samba共享資源
mkdir -v /mnt/smbgua
mount -t cifs //192.168.11.11/optsmb /mnt/smbgua -o username=tom,password=0
df -hT
ls -l /mnt/smbgua


smb.conf主配置文件的其他功能選項:man smb.conf
smb.conf配置文件內容由global全局環境設置、共享目錄設置兩部分組成。

smb.conf的默認設置選項:
[global] 全局環境設置
printcap name = cups 跟打印機有關的選項
security = USER 安全等級設置爲USER用戶級,即需要用戶名和密碼驗證。還可以是什麼呢,請查man手冊。
username map = /etc/samba/vuser (自己添加的)虛擬用戶賬號文件
workgroup = SAMBA 計算機所在的局域網的工作組名
idmap config * : backend = tdb samba的用戶賬號數據庫文件
cups options = raw 跟打印機有關的選項

[homes] 用戶家目錄的共享設置
browseable = No 不顯示在網上鄰居中
comment = Home Directories 註釋說明信息
inherit acls = Yes 允許繼承ACL權限
read only = No 禁止只讀操作,即可讀可寫,等同於writable=Yes
valid users = %S %D%w%S 有效用戶賬號。%S是samba服務中的用戶賬號,%D當前域或當前工作組中的用戶賬號,

smb.conf中基於用戶訪問控制的選項:
browseable=yes 允許在網上鄰居中顯示共享名稱
public=yes 或 guest ok=yes 允許匿名用戶訪問
writable=yes 或 readonly=no 允許寫操作,即可寫權限
#valid users=用戶1,用戶n,@組名 指定允許訪問共享的用戶賬號(即白名單)
#invalid users=s3,@組名 只禁止s3用戶訪問共享(即黑名單)
技巧:只允許少數人能訪問共享時用白名單。只禁止少數人能訪問共享時用黑名單。

write list=用戶1,用戶n,@組名 指定有可寫權限的用戶賬號(即白名單)

smb.conf中基於IP訪問控制的選項:man smb.conf 進入後執行/150就可以查到例子
hosts allow = 192.168. EXCEPT 192.168.11.1 允許192.168..的所有主機訪問共享,除了192.168.11.1之外
hosts deny = 192.168. EXCEPT 192.168.11.1 不允許192.168..的所有主機訪問共享,除了192.168.11.1之外
說明:hosts allow設置可以放在[global]全局環境設置中(限制訪問所有共享目錄),也可以放在自定義共享目錄的設置中(僅限制訪問此目錄)。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章