SMB-server (Samba)node
Samba是個桑巴舞,是舞蹈的名字。linux
Linux系統和Windows系統共享。數據庫
下面咱們開始作實驗vim
先安裝samba軟件包yum -y install samba安全
而後咱們配置程序的主配置文件。服務器
配置文件後綴通常都是conf.網絡
300多條。那麼我急繼續老辦法。dom
這裏分號開擡頭的也是註釋,而後-v是反選。而後寫入到sam.conf,由於咱們開頭給他原來的更名了,而後咱們會發現還有好多空行也很煩人,那麼咱們也能夠這麼作。async
再加一個grep -v "^$"這表明就是一個空行。測試
咱們就會看到都過濾出來了。
而後咱們來編輯這個配置文件
能夠看出來咱們原來320行的內容,如今只剩下了20行,是否是就很爽了。
Samba服務程序中的參數以及做用
[global] | #全局參數。 | |
workgroup = MYGROUP | #工做組名稱 | |
server string = Samba Server Version %v | #服務器介紹信息,參數%v爲顯示SMB版本號 | |
log file = /var/log/samba/log.%m | #定義日誌文件的存放位置與名稱,參數%m爲來訪的主機名 | |
max log size = 50 | #定義日誌文件的最大容量爲50KB | |
security = user | #安全驗證的方式,總共有4種 | |
#share:來訪主機無需驗證口令;比較方便,但安全性不好 | ||
#user:需驗證來訪主機提供的口令後才能夠訪問;提高了安全性 | ||
#server:使用獨立的遠程主機驗證來訪主機提供的口令(集中管理帳戶) | ||
#domain:使用域控制器進行身份驗證 | ||
passdb backend = tdbsam | #定義用戶後臺的類型,共有3種 | |
#smbpasswd:使用smbpasswd命令爲系統用戶設置Samba服務程序的密碼 | ||
#tdbsam:建立數據庫文件並使用pdbedit命令創建Samba服務程序的用戶 | ||
#ldapsam:基於LDAP服務進行帳戶驗證 | ||
load printers = yes | #設置在Samba服務啓動時是否共享打印機設備 | |
cups options = raw | #打印機的選項 | |
[homes] | #共享參數 | |
comment = Home Directories | #描述信息 | |
browseable = no | #指定共享信息是否在「網上鄰居」中可見 | |
writable = yes | #定義是否能夠執行寫入操做,與「read only」相反 | |
[printers] | #打印機共享參數 | |
comment = All Printers | ||
path = /var/spool/samba | #共享文件的實際路徑(重要)。 | |
browseable = no | ||
guest ok = no | #是否全部人可見,等同於"public"參數。 | |
writable = no | ||
printable = yes |
最後一列printers是共享打印機參數,咱們這裏沒有,給他刪掉。
而後咱們看一下homes是共享出去每一個用戶家目錄,不太安全,刪掉
而後咱們看到有用得信息就這麼9行
而後咱們說一下這些參數做用。
1.[global] 共享的名稱
2.workgroup = MYGROUP 共享的用戶組
3.server string = Samba Server Version %v 共享出去的信息,%v是讓別人知道咱們服務器的版本
4.log file = /var/log/samba/log.%m 定義日誌文件的存放位置與名稱,參數%m爲來訪的主機名
5.max log size = 50 定義日誌文件的最大容量爲50KB,就是說50K保存一個
6.security = user 安全驗證的方式,總共有4種
7.passdb backend = tdbsam 定義用戶後臺的類型,共有3種
而後配置共享資源
用於設置Samba服務程序的參數以及做用
參數 | 做用 |
[database] | 共享名稱爲database |
comment = Do not arbitrarily modify the database file | 警告用戶不要隨意修改數據庫 |
path = /home/database | 共享目錄爲/home/database |
public = no | 關閉「全部人可見」 |
writable = yes | 容許寫入操做 |
第1步:建立用於訪問共享資源的帳戶信息。在RHEL 7系統中,Samba服務程序默認使用的是用戶口令認證模式(user)。這種認證模式能夠確保僅讓有密碼且受信任的用戶訪問共享資源,並且驗證過程也十分簡單。不過,只有創建帳戶信息數據庫以後,才能使用用戶口令認證模式。另外,Samba服務程序的數據庫要求帳戶必須在當前系統中已經存在,不然往後建立文件時將致使文件的權限屬性混亂不堪,由此引起錯誤。
pdbedit命令用於管理SMB服務程序的帳戶信息數據庫,格式爲「pdbedit [選項] 帳戶」。在第一次把帳戶信息寫入到數據庫時須要使用-a參數,之後在執行修改密碼、刪除帳戶等操做時就再也不須要該參數了。pdbedit命令中使用的參數以及做用如表
用於pdbedit命令的參數以及做用
參數 | 做用 |
-a 用戶名 | 創建Samba用戶 |
-x 用戶名 | 刪除Samba用戶 |
-L | 列出用戶列表 |
-Lv | 列出用戶詳細信息的列表 |
如今在咱們本地有這麼一個用戶linuxprobe ,必須是要存在的一個用戶。而後咱們將這個用戶給他加入到這個samba的數據庫裏面,作一個驗證,-a表明咱們第一次加就能夠了,把這個用戶加入到數據庫裏面,也就是創建samba用戶。-u表明用戶的名稱。而後咱們設置一下專門給他驗證samba服務的這麼一個密碼。
而後咱們給他建立一個共享目錄database,而後再給他777權限,讓其餘用戶也能夠進行操做。
若是你感受不夠安全的話就給他設置一下全部組和全部者。
接下來別忘了SELinux會限制咱們的行爲,因此咱們要給他把域設爲容許。
而後咱們過濾出來以後用setsebool 命令給他修改成on,-P是永久生效。其中samba_enable_home_dirs是表明開啓咱們用戶的訪問權限。
而後如今咱們建立出來本身的共享信息了,那麼接下來咱們再回到配置文件。
說一下這些新加的註釋的做用:
[database] 掛載的名稱,你們注意,這個名稱不是沒有用,咱們待會掛載設備的時候就是用的這個名稱,若是你寫了其餘的,那麼一會要注意也掛載設備名稱也是你寫的那個。
comment = 你能夠對這個共享用一段話來描述。
path = 定義咱們的目錄,就是咱們剛纔建立的共享目錄,那裏寫的什麼這裏就寫什麼。
public = no 是不是公開模式,咱們選擇no,由於咱們這裏但願是一個帳號密碼的驗證,不想公開
writable = yes 是否能進行寫入,咱們選擇能夠。
而後咱們保存退出重啓smb服務而且加入開機啓動項。
這樣就完了麼,並無,咱們看一下虛擬機和我的電腦通不通。
是通的,那麼好。咱們準備第二臺虛擬機。
咱們接下來測試用Windows訪問Linux Linux訪問Linux的測試,進行跨平臺的實驗。
咱們發現報錯了。
那麼咱們找一下錯誤,先試試防火牆吧,咱們執行一下咱們的iptables -F
而後咱們再試一下,果真能夠了,而後輸入帳戶密碼,由於咱們設置的事須要帳號密碼驗證的,linuxpro 密碼是本身設置的。登錄以後就如上圖。
讓咱們點擊這個文件的時候他會提醒咱們權限不足,那麼這是什麼緣由呢,咱們權限都設置爲777了,你們會不會第一時間就想到SELinux.咱們試一下。
咱們先setenforce 0臨時關閉一下SELinux。
果真,進來了。
而後咱們不能給他一直關閉,這不是個好辦法,由於不安全,因此咱們給他再開啓了,單獨容許samba的域進行容許,先過濾。
而後咱們看一下,咱們此次開啓一下samba_export_all_rw 這個應該是samba共享的讀寫權限,咱們再試一下。
確實能夠。說明咱們剛纔開錯了,應該開這一條纔對,尷尬。
而後咱們在裏面進行添加修改刪除操做,發現能夠,咱們回linux看一下里面有沒有我在本機上建立的這兩個文件。
發現有了。可是咱們還沒試一試Linux了呢
老樣子,先ping一下。
而後咱們想用Linux共享的話必須安裝一個軟件cifs-utils
而後咱們建立一個認證文件,名稱無所謂
在Linux客戶端,按照Samba服務的用戶名、密碼、共享域的順序將相關信息寫入到一個認證文件中。爲了保證不被其餘人隨意看到,最後把這個認證文件的權限修改成僅root管理員纔可以讀寫:
而後咱們寫上參數,先寫上用戶名稱username=linuxprobe就是待會咱們用誰來驗證的,而後寫上驗證密碼。domaim= 是工做組,這個不要瞎寫,不知道的話這樣查。在服務器上查cat /etc/samba/smb.conf
配置好認證文件後咱們給他一個600權限,不讓其餘人查看到這個文件信息。
在Linux客戶端上建立一個用於掛載Samba服務共享資源的目錄,並把掛載信息寫入到/etc/fstab文件中,以確保共享掛載信息在服務器重啓後依然生效:
而後咱們編輯一下/etc/fstab配置掛載
格式就是先來兩個//而後寫上共享服務器的IP而後是/database,就是咱們配置samba的時候[]裏面的名稱,千萬別瞎寫。而後掛在到本地/database. 格式叫作cifs ,而後認證文件,咱們是經過調取文件的方式進行認證的,而不是把咱們帳戶和密碼寫入到文件的。
而後咱們就能夠掛載咱們文件中定義好的設備了mount -a
而後咱們查看df -h
而後咱們能夠看到,裏面有文件,就是咱們開始和Windows測試建立的,如今咱們進行一下修改等操做。咱們發現能夠編輯,在外面查看也發現沒問題。
--------------------------------------------------------------------------------------------------------------------
若是你們以爲Samba服務程序的配置太麻煩,並且恰巧須要共享文件的主機都是Linux系統,那麼咱們推薦NFS,NFS(網絡文件系統)服務能夠將遠程Linux系統上的文件共享資源掛載到本地主機的目錄上,從而使得本地主機(Linux客戶端)基於TCP/IP協議,像使用本地主機上的資源那樣讀寫遠程Linux系統上的共享文件。這通常是對於Linux和Linux之間的共享。
作實驗前先準備兩臺Linux,而且還原一下,避免和上一個實驗衝突。
在這以前咱們還要準備一下給別人共享的文件夾。
先在服務端(192.168.10.10)建立一個共享的目錄,而後進入這個目錄在裏面放一個文件而且隨便寫一些內容,而後給這個目錄一個777的權限來讓別人也可以進行讀寫的權限。
而後咱們編輯一下咱們NFS的配置文件,和其餘的可能不同,這個須要特殊記一下。
用於配置NFS服務程序配置文件的參數
參數 | 做用 |
ro | 只讀 |
rw | 讀寫 |
root_squash | 當NFS客戶端以root管理員訪問時,映射爲NFS服務器的匿名用戶 |
no_root_squash | 當NFS客戶端以root管理員訪問時,映射爲NFS服務器的root管理員 |
all_squash | 不管NFS客戶端使用什麼帳戶訪問,均映射爲NFS服務器的匿名用戶 |
sync | 同時將數據寫入到內存與硬盤中,保證不丟失數據 |
async | 優先將數據保存到內存,而後再寫入硬盤;這樣效率更高,但可能會丟失數據 |
打開後咱們發現是空的,那就對了。他就是空的咱們本身寫東西。
第一列就是咱們共享設備的名稱也就是咱們剛纔建立的共享目錄/gongxiang。
第二列寫的是共享給誰也就是咱們的*,表明共享給全部人,咱們也能夠寫成192.168.0.0/24 共享給這個網段,或者192.168.10.20共享給某個主機。
注意小括號和*之間不能有空格,連着寫的。
第三個寫的是()裏面寫的參數,rw是給他們讀寫的權限,若是隻讀就是ro,sync表明數據進行一個同步,當咱們客戶端死機或者網絡中斷的狀況下,他能夠將咱們數據實時同步到咱們的硬盤,讓咱們數據儘可能不要丟失。root_squash是說咱們將對方來訪的超級用戶root給他映射成咱們本地的一個虛擬(匿名)用戶.
其餘參數設置到看上面參數列表。
而後咱們執行一個命令export -a,這是讓咱們配置文件可以去生效。
而後咱們重啓一下nfs服務而且添加到開機啓動裏面。
而後別忘了清空一下咱們的iptables -F,而且咱們把iptables狀態進行一個保存
而後咱們就能夠進去到咱們的客戶端裏面了。
別忘了ping一下看通不通,小問題每每最容易被忽視浪費時間。
NFS客戶端的配置步驟也十分簡單。先使用showmount命令(以及必要的參數,見表)查詢NFS服務器的遠程共享信息,其輸出格式爲「共享的目錄名稱 容許使用客戶端地址」。
showmount命令中可用的參數以及做用
參數 | 做用 |
-e | 顯示NFS服務器的共享列表 |
-a | 顯示本機掛載的文件資源的狀況NFS資源的狀況 |
-v | 顯示版本號 |
而後咱們配置一下vim /etc/fstab
咱們最前面寫上服務端的地址192.168.10.10. 對方服務器共享目錄/gongxiang ,而後是本地路徑/gongxiang,咱們方便記憶都起同樣,這裏別忘了一會出去建立這個目錄。咱們都沒建立呢在客戶端。而後文件格式是nfs,權限是defaults 而後是不備份,沒有校驗。
而後咱們建立出來咱們的本地共享目錄,而後掛載,而後df -h看掛載上了沒有,有時候會出現mount -a執行完了報錯,這時候不急,你直接df -h看一下,是否是已經掛載上了。
而後咱們立刻到共享目錄看一下,發現有了,而後再進行裏面內容修改增長等操做,徹底沒問題。
咱們在客戶端進行修改操做,而後去服務端去查看,果真發生了變化,沒問題。
----------------------------------------------------------------------------------------------------------------------------------
不管是Samba服務仍是NFS服務,都要把掛載信息寫入到/etc/fstab中,這樣遠程共享資源就會自動隨服務器開機而進行掛載。雖然這很方便,可是若是掛載的遠程資源太多,則會給網絡帶寬和服務器的硬件資源帶來很大負載。若是在資源掛載後長期不使用,也會形成服務器硬件資源的浪費。可能會有讀者說,「能夠在每次使用以前執行mount命令進行手動掛載」。這是一個不錯的選擇,可是每次都須要先掛載再使用,您不以爲麻煩嗎?
autofs自動掛載服務能夠幫咱們解決這一問題。與mount命令不一樣,autofs服務程序是一種Linux系統守護進程,當檢測到用戶試圖訪問一個還沒有掛載的文件系統時,將自動掛載該文件系統。換句話說,咱們將掛載信息填入/etc/fstab文件後,系統在每次開機時都自動將其掛載,而autofs服務程序則是在用戶須要使用該文件系統時纔去動態掛載,從而節約了網絡資源和服務器的硬件資源。
第一步咱們先安裝autofs軟件
而後咱們卸載掉咱們一直部署的yum文件系統,把掛載卸載掉。
而後咱們編輯一下autofs的主配置文件。
處於生產環境中的Linux服務器,通常會同時管理許多設備的掛載操做。若是把這些設備掛載信息都寫入到autofs服務的主配置文件中,無疑會讓主配置文件臃腫不堪,不利於服務執行效率,也不利於往後修改裏面的配置內容,所以在autofs服務程序的主配置文件中須要按照「掛載目錄 子配置文件」的格式進行填寫。掛載目錄是設備掛載位置的上一級目錄。例如,光盤設備通常掛載到/media/cdrom目錄中,那麼掛載目錄寫成/media便可。對應的子配置文件則是對這個掛載目錄內的掛載設備信息做進一步的說明。子配置文件須要用戶自行定義,文件名字沒有嚴格要求,但後綴建議以.misc結束。
在子配置文件中,應按照「掛載目錄 掛載文件類型及權限 :設備名稱」的格式進行填寫。例如,要把光盤設備掛載到/media/iso目錄中,可將掛載目錄寫爲iso,而-fstype爲文件系統格式參數,iso9660爲光盤設備格式,ro、nosuid及nodev爲光盤設備具體的權限參數,/dev/cdrom則是定義要掛載的設備名稱。配置完成後再順手將autofs服務程序啓動並加入到系統啓動項中:
這裏是咱們本身建立的子配置文件,不是系統原有的,你們注意一下。
其中咱們是要將光盤設備掛載到/media/iso中,那麼咱們直接寫iso 就行了,而-fstype爲文件系統格式參數,iso9660爲光盤設備格式,ro是隻讀,nosuid和nodev是當咱們光盤裏面出現了suid和dev的這個設備文件的話,那麼咱們當作通常文件來進行處理,防止一些黑客篡改咱們的文件,這個參數能夠寫能夠不寫。最後要寫上咱們掛在的設備的名稱/dev/cdrom。
而後咱們給他重啓服務而且添加到開機啓動項。
咱們看一下咱們的光盤如今確實是沒有被掛載上的。
咱們再進入media目錄看一下,沒有任何文件。
而後咱們看一下cd到裏面的iso,這時候裏面沒有目錄應該報錯纔對,可是,沒有報錯,好進去了,而且裏面有文件,那麼這時候咱們立刻df -h查看一下掛載信息,發現莫名掛在上了。這就是咱們的自動掛載autofs.