1. 程式人生 > >linux初學者-CIFS網絡文件系統篇

linux初學者-CIFS網絡文件系統篇

通用 img 不可 nts 操作 min ios div 註意

linux初學者-CIFS網絡文件系統篇

CIFS是一種通用網絡文件系統,主要用於網絡設備之間的文件共享。CIFS可以在linux系統和windows系統之間共享文件,因此這種文件系統主要用於客戶端是windows系統。

提供CIFS的服務是SAMBA,下文將介紹SAMBA服務的一些配置以及用法。

1、SAMBA的安裝和配置

"yum install samba samba-common samba-client -y"。安裝SAMBA服務。

技術分享圖片

"systemctl start smb",開啟SAMBA服務。"systemctl enable smb",開機啟動SAMBA服務。"systemctl stop firewalld",關閉防火墻,也可以對防火墻進行配置。

技術分享圖片

"smbpasswd -a student",在SAMBA服務中添加一個用戶,這個用戶必須為主機中真是存在的用戶。"pdbedit -L",可以查看添加了哪些用戶。

技術分享圖片

"smbclient -L //172.25.254.202 -U student",輸入密碼後可以看到SAMBA用戶"student"共享了哪些目錄,如下圖,默認會共享用戶的家目錄。

技術分享圖片

"smbclient //172.25.254.202/student -U student",輸入密碼後可以查看共享目錄"student"下的文件。但是在SElinux開啟的情況下,是無法看到裏面文件的,需要"setsebool -P samba_enable_home_dirs on"開啟這個功能之後即可查看。

技術分享圖片技術分享圖片

技術分享圖片

"mount -o username=student,password=student //172.25.254.202/student /mnt",可以將這個"student"目錄掛載在其他目錄下,在這個目錄下寫入文件就會自動儲存到"student"目錄。

技術分享圖片

"vim /etc/samba/smb.conf",在配置文件中,修改第89行的"workgroup"可以改變域名,例如下圖,設置"workgroup = text"。重啟服務後生效。

技術分享圖片技術分享圖片

可以在第96行加入"hosts deny = IP"或者"hosts allow = IP"來阻止或者允許該IP登陸。如下圖所示,主機名"singlenet"的IP為"172.25.254.202"。

技術分享圖片技術分享圖片技術分享圖片

2、共享其他目錄

默認的共享目錄是家目錄,如果需要共享其他目錄,如自建一個目錄"/we",裏面有"wefile{1..3}"三個文件。

技術分享圖片

此時需要如下步驟:

a、"vim /etc/samba/smb.conf"。在第322行至第324行輸入以下內容:

[DATA]

comment = local directory /we

path = /we

技術分享圖片

"[DATA]"為共享目錄目標,可以自己編寫。重啟服務。"smbclient -L //172.25.254.202 -U student",可以看到這個"DATA"目錄,但是卻無法通過"smbclient //172.25.254.202/DATA -U student"看到這個目錄裏面的內容。這是因為SElinux的影響。

技術分享圖片技術分享圖片

b、"semanage fcontext -a -t samba_share_t ‘/we(/.*)?‘"。修改自建目錄"/we"的安全上下文,並通過"restorecon -RvvF /we"刷新。

技術分享圖片

完成後重啟服務就可以通過"smbclient //172.25.254.202/DATA -U student"看到這個目錄裏面的內容了。

技術分享圖片

上述的步驟適合於自建目錄,但是如果是系統的目錄呢?就無法修改目錄的安全上下文了。例如下圖第326行至第328行,共享"/mnt"目錄,目錄下有"mntfile{1..3}"三個文件。

技術分享圖片

此時就需要用"setsebool -P samba_export_all_ro on"關閉在SAMBA中的安全上下文功能。完成後就可以看到"/mnt"下的文件了。需要註意的是,"samba_export_all_ro"打開後,因為安全上下文失效,所以共享自建目錄也不需要再修改安全上下文了。

技術分享圖片技術分享圖片技術分享圖片

3、匿名用戶登陸

在配置文件"/etc/samba/smb.conf"中共享文件後輸入"browseable = no"就會在查詢是不顯示這個目錄,但是這個目錄依舊存在,可以看到其中的文件。如下圖第325行所示。

技術分享圖片技術分享圖片

SAMBA也是可以通過匿名用戶登陸的,需要在配置文件"/etc/samba/smb.conf"中加入"guest ok = yes",如下圖第326行所示,這是開啟了匿名用戶登陸。

技術分享圖片

重啟服務後就可以不通過用戶,而直接輸入"smbclient //172.25.254.202/DATA"直接登陸查看裏面的文件。

技術分享圖片

但是,上述設置之後雖然可以匿名登陸,但是無法掛載在某個目錄下,此時需要在配置文件中輸入"map to guest = bad user",這是使匿名用戶登陸或者掛載時以"guest"用戶進行。重啟服務後就可以進行掛載了。

技術分享圖片技術分享圖片技術分享圖片

如果匿名用戶掛載需要開機自動掛載,則在"/etc/fstab"文件中輸入"//172.25.254.202/DATA /mnt cifs defaults,username=guest 0 0"即可。

技術分享圖片

4、目錄掛載後的寫權限

4.1、開啟寫權限

如下圖所示,目錄掛載之後並不能在其中建立或者刪除文件。這是因為並沒有開啟寫權限。

技術分享圖片

開啟寫權限需要在配置文件中輸入第327行的"writable = yes",並給予共享目錄"/we"777權限,完成後還必須修改"/we"目錄的安全上下文。完成後重新掛載就可以進行文件的建立和刪除了。

技術分享圖片技術分享圖片技術分享圖片

與共享系統目錄時相同,系統目錄無法修改安全上下文,此時需要輸入"setsebool -P samba_export_all_rw on"開啟SElinux中的寫權限功能,修改後系統目錄掛載後就可以建立和刪除文件了。開啟功能後,自建目錄也不需要再修改安全上下文。

技術分享圖片

4.2、寫權限的限定

上述配置是使所有用戶在掛載時都可以建立或者刪除文件,有時還需要對一些用戶進行限制,例如現有兩個用戶"student"和"class",想要"student"可以建立文件,而"class"用戶不可以。則需要在配置文件中輸入"write list = student",這時只有"student"用戶擁有寫權限,則可以解決這個問題。

技術分享圖片技術分享圖片

還可以在將配置文件"write list = "後的"student"該為"+student",這表示屬於student用戶組的用戶擁有寫權限,如下圖所示,將student用戶組添加為"class"用戶的附加組,此時"class"用戶就可以進行文件的建立和刪除了。

技術分享圖片技術分享圖片技術分享圖片

4.3、建立文件的歸屬

共享目錄掛載之後建立的文件默認的是以哪個用戶的身份登陸,文件的所有人就為哪個用戶。可以在配置文件中輸入下圖第335行的"admin users = class",就可以使得以class用戶在掛載這個共享目錄後,以root用戶的身份進行操作,如下圖所示。可以看出設置之後建立的文件"file1"的文件所有人為"root",而之前以student用戶掛載建立的文件"file3"的文件所有人為"student"。

技術分享圖片技術分享圖片技術分享圖片

5、用戶的權限管理

如下圖所示,以root用戶掛載一個共享目錄,但是切換到普通用戶kiosk,發現這個普通用戶也可以看到裏面的文件,這顯然是很不安全的,也不合理,所以需要對客戶端的用戶進行權限管理。即客戶端的其他用戶需要進行認證才可以查看掛載內容。

技術分享圖片

其設置步驟如下所示:

"yum install cifs-utils -y"。在客戶端上,管理的軟件是"cifs-utils"。

技術分享圖片

"vim /root/smbpassword"。在這個文件中寫入SAMBA服務上真實存在的用戶和密碼,文件名稱可以自行編輯,完成後為了安全給予600權限。

技術分享圖片技術分享圖片

"mount -o credentials=/root/smbpassword,multiuser,sec=ntlmssp //172.25.254.202/SYSTEM /mnt"。如下圖所示,以此命令進行掛載,掛載後kiosk用戶無法看到掛載目錄的文件。

技術分享圖片

如果kiosk用戶需要看到裏面的文件,則需要進行用戶身份驗證,kiosk用戶輸入"cifscreds add -u class 172.25.254.202"輸入密碼後即可完成認證,認證可以輸入SAMBA服務中的任意一個真實存在的用戶。

技術分享圖片

kiosk用戶在掛載目錄下建立一個文件"kioskfile",如下圖,在客戶端可以看到這個文件是屬於kiosk用戶的,但在SAMBA服務端,可以看到這個文件是屬於class用戶的。這是因為kiosk用戶建立的文件在SAMBA服務端是屬於客戶端kiosk用戶的uid在服務端所對應的那個用戶的。kiosk的uid為1001,在SAMBA服務端,1001的uid對應的用戶為class。

技術分享圖片技術分享圖片

上述即是在客戶端管理普通用戶對共享目錄操作的方式。

還可以在配置文件中寫入下圖第328行中的"valid users = student",這是使得只能以student用戶進行掛載,也可以寫為"valid users = @student",這是使得只能student用戶組內的用戶可以進行掛載。

技術分享圖片技術分享圖片

以上就是linux系統和windows系統通用的共享文件系統CIFS的主要內容。SAMBA服務主要用於客戶端是windows系統的文件共享。而linux系統之間的文件共享是采用NFS的共享文件系統。

linux初學者-CIFS網絡文件系統篇