1. 程式人生 > >Linux學習筆記之smb檔案共享

Linux學習筆記之smb檔案共享

SMB檔案共享服務:SMB協議是建立在NetBIOS協議之上的應用協議,是基於TCP138、139兩個埠的服務,NetBIOS出現之後,Microsoft就使用NetBIOS實現了一個網路檔案/列印服務系統。這個系統基於NetBIOS設定了一套檔案共享協議,Microsoft稱之為SMB(Server Message Block) 協議,這個協議被用於Lan Manager和Windows伺服器系統中,實現不同計算機之間共享 印表機和檔案等。因此,為了讓Windows和Unix/Linux計算機相整合,最好的辦法就是在 Unix/Linux計算機中安裝支援SMB協議的軟體。這樣使用Windows的客戶端不需要更改設定, 就能像使用Windows NT或Windows 2000伺服器一樣,使用Unix/Linux計算機上的共享資源了。
1,smb服務的安裝及配置
yum install samba-client samba-common.x86_64 samba.x86_64 -y ##安裝smb服務
systemctl start smb ##開啟smb服務
systemctl stop firewalld.service ##關閉防火牆
setsebool -P samba_enable_home_dirs on ##關閉selinux對家目錄共享的限制
getsebool -a | grep samba
smbpasswd -a student ##student必須是本機存在的使用者pdbedit -L ##檢視使用者
Linux學習筆記之smb檔案共享


pdbedit -x student ##刪除使用者
測試:smbclient -L //172.25.254.120 -U student ##檢視
Linux學習筆記之smb檔案共享
smbclient //172.25.254.120/student -U student ##登陸
Linux學習筆記之smb檔案共享
mount -o username=xin,password=1 //172.25.254.153/xin /media ##掛載(掛載到其他目錄下,在這個目錄下寫入檔案就會自動儲存到共享目錄中。)
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
在目錄中,可以建立檔案,建立目錄,刪除檔案,刪除目錄。------針對掛載情況
對於登陸模式,之可以建立目錄和刪除檔案,也可以上傳檔案(只針對本地檔案 通過"!ls"命令進行檢視);不可以刪除目錄,也不可以建立目錄
這是因為selinux為警告模式,或者samba_enable_home_dirs,功能是開啟的。

Linux學習筆記之smb檔案共享
在服務端檢視
Linux學習筆記之smb檔案共享

2.samba共享目錄
mkdir westos
touch westos/westosfile{1..5}
vim /etc/samba/smb.conf
321 [westos] ##共享名稱
322 comment = local directory westos ##共享說明
323 path = /westos ##共享目錄路徑
Linux學習筆記之smb檔案共享
systemctl restart smb.service
semanage fcontext -a -t samba_share_t '/westos/(/.*)?'
restorecon -FvvR /westos/
共享目錄自建立目錄上需要修改selinux屬性,此方式修改只針對修改目錄
測試:smbclient //172.25.254.120/westos -U student
Linux學習筆記之smb檔案共享


3.samba匿名訪問
vim /etc/samba/smb.conf
125 map to guest = bad user ##把匿名使用者對映成guest
321 [westos]
322 comment = local directory westos
323 path = /westos
324 guest ok = yes
Linux學習筆記之smb檔案共享
systemctl restart smb.service
測試:smbclient //172.25.254.120/westos
Linux學習筆記之smb檔案共享
匿名掛載:
Linux學習筆記之smb檔案共享
4,使用者登陸後看到的域名的修改及使用者黑白名單的建立
1,修改登陸之後,使用者看到的域名
服務端:
1.修改配置檔案/etc/samba/smb.conf,在配置檔案中,修改檔案的第89行的''workgroup",可以改變域名。並重啟服務
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
測試:
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
2.使用者白名單的建立
服務端:
修改配置檔案/etc/samba/smb.conf,在配置檔案中,在檔案的第96行加入:hosts allow=IP,來允許該IP登陸,並重啟服務。主機名"server.example.com"的IP為"172.25.254.183",主機名"client.example.com"的IP為''172.25.254.133'',主機名"foundation83.ilt.example.com"的IP為''172.25.254.83''。
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
測試:
Linux學習筆記之smb檔案共享
ip為172.25.254.183成功登陸
Linux學習筆記之smb檔案共享
ip為172.25.254.133成功登陸
Linux學習筆記之smb檔案共享
IP為172.25.254.83的登陸失敗
3.使用者黑名單的建立
修改配置檔案/etc/samba/smb.conf,在配置檔案中,在檔案的第97行加入:hosts deny=IP,來允許該IP登陸,並重啟服務。主機名"server.example.com"的IP為"172.25.254.183",主機名"client.example.com"的IP為''172.25.254.133'',主機名"foundation83.ilt.example.com"的IP為''172.25.254.83''。
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
測試:
Linux學習筆記之smb檔案共享
IP為172.25.254.183的主機登陸失敗
Linux學習筆記之smb檔案共享
IP為172.25.254.83的主機登陸成功
4.samba共享目錄的管理引數
[westos]
comment = local directory westos
path = /westos
guest ok = yes
1.writable = yes 共享目錄可寫
2.write list = +test 指定xx可寫(+,@表使用者組可寫)
3.valid users = test 指定使用者對共享目錄可以掛載
4.valid users = @test 指定共享目錄使用者可以掛載(+,@表使用者組可寫)
5.browseable = no 共享目錄不可見,但共享目錄仍然實際存在並能使用
6.admin users = test 指定test使用者在共享目錄中為root使用者
測試:
1:Linux學習筆記之smb檔案共享
2:Linux學習筆記之smb檔案共享
3,4:Linux學習筆記之smb檔案共享
5:Linux學習筆記之smb檔案共享
6:Linux學習筆記之smb檔案共享
5.smb多使用者掛載及開機自動掛載
如下圖所示,以root使用者掛載一個共享目錄,但是切換到普通使用者kiosk,發現這個普通使用者也可以看到裡面的檔案,這顯然是很不安全的,也不合理,所以需要對客戶端的使用者進行許可權管理。即客戶端的其他使用者需要進行認證才可以檢視掛載內容。
Linux學習筆記之smb檔案共享

1,yum insatll cifs-utils ##在客戶端上,管理的軟體是"cifs-utils"。
安裝完這個軟體之後,不用開啟服務就可以直接使用
在客戶端,將允許匿名使用者登陸的程式碼註釋
Linux學習筆記之smb檔案共享
2,"vim /root/smbpasswd"。在這個檔案中寫入SAMBA服務上真實存在的使用者和密碼,檔名稱可以自行編輯(該檔案中書寫不能加空格),完成後為了安全給予600許可權。
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
3,mount -o credentials=/root/smbpasswd,sec=ntlmssp,multiuser //172.25.254.183/xin /media"。(可以通過man mount.cifs來檢視幫助)如下圖所示,以此命令進行掛載,掛載後student使用者無法看到掛載目錄的檔案。此時,root使用者使用的身份是服務端的xin(/root/smbpasswd中所編輯的)

其中:credentials=/root/smbpasswd檔案指定使用者名稱和密碼;sec=ntlmssp是認證方式(因為下載的samba是4.1的,所以認證方式是ntlmssp,查詢方式rpm -qa | grep samba);multiuser為多使用者掛載。
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享
客戶端:看到root使用者所使用的身份是1001(其實就是服務端xin使用者)
Linux學習筆記之smb檔案共享
服務端:
Linux學習筆記之smb檔案共享
Linux學習筆記之smb檔案共享

  1. 如果student使用者需要看到裡面的檔案,則需要進行使用者身份驗證,student使用者輸入"cifscreds add -u chen 172.25.254.183"輸入密碼後即可完成認證,認證可以輸入SAMBA服務中的任意一個真實存在的使用者。
    為了後續實驗,在服務端,再新增一個samba使用者
    Linux學習筆記之smb檔案共享
    cifscreds add -u chen 172.25.254.183
    cifscreds clearall
    cifscreds add -u chen
    touch studentfile(可以看到是服務端的使用者chen(uid = 1002;gid = 1002)建立的)
    客戶端:
    Linux學習筆記之smb檔案共享
    服務端:
    Linux學習筆記之smb檔案共享
    +++++++++++++++++++++++++++++++++++++++++++++
    開機自動掛載
    編輯/etc/fstab,在該檔案中,最後一行,加入下面的內容
    Linux學習筆記之smb檔案共享