linux學習之旅(二十二)&CIFS網路檔案系統

mon_star發表於2017-08-19

SAMBA/CIFS概要:

CIFS是一種通用網路檔案系統,主要用於網路裝置之間的檔案共享。CIFS可以在Linux系統和windows系統之間共享檔案,因此這種檔案系統主要用於客戶端是windows系統。

提供CIFS的服務是SAMBA

Samba,是種用來讓UNIX系列的作業系統與微軟Windows作業系統的SMB/CIFS(Server Message Block/Common Internet File System)網路協議做連結的自由軟體。第三版不僅可訪問及分享SMB的資料夾及印表機,本身還可以整合入Windows Server的網域,扮演為網域控制站(DomainController)以及加入Active.Directory成員。簡而言之,此軟體在Windows與UNIX系列OS之間搭起一座橋樑,讓兩者的資源可互通有無。

實現了儲存分離,他可以掛載,真正進行操作,而和apache不一樣,不只是檔案傳輸。

SAMBA 伺服器總共需要至少三個套件:

  • samba:這個套件主要包含了 SAMBA 的主要 daemon檔案 ( smbd 及 nmbd )、 SAMBA 的檔案檔 (document )、以及其它與 SAMBA 相關的logrotate 設定檔案及開機預設選項檔案等;
  • samba-common:這個套件則主要提供了 SAMBA 的主要設定檔(smb.conf) 、 smb.conf 語法檢驗的測試程式 (testparm )等等;
  • samba-client:這個套件則提供了當 Linux 做為SAMBA Client 端時,所需要的工具指令,例如掛載 SAMBA檔案格式的執行檔 smbmount等等。

SAMBA服務的具體配置:

yum install samba samba-common samba-client -y   //安裝元件
開啟服務,開機自啟,關閉火牆
  • samba埠在TCP,UDP都開了
[root@localhost ~]# smbpasswd -a student  //新增使用者
New SMB password:
Retype new SMB password:
Added user student.

pdbedit -L  //檢視使用者資訊
"注意要關閉selinuxm,不然無法檢視"
smbclient -L //172.25.254.209 -U student  //檢視資訊

smbclient //172.25.254.209/student -U student  //以studennt身份登陸進入檔案系統

在另一臺主機上直接掛載
mount -o username=student,password=student //172.25.254.209/student /mnt
//df發現掛載上了,這樣,哪怕原來的伺服器掛掉,也可以使用了,這樣,就實現了儲存分離
//也可以直接登陸上去,不一定要掛載

檢視samba
1.可以掛載用檔案系統看
2.用登陸看
3.用本地看

如果需要selinux處於強制模式保證安全性,那麼其實,開啟相應的selinux許可權就可以訪問了,不用關閉selinux

setsebool -P samba_enable_home_dirs on    //開啟samba許可權
  • 不能更改安全上下文時才會去修改布林值
    普通目錄更改安全上下文就可以,但是系統級的目錄因為不能隨意修改,所以修改他的布林值,改完布林值之後,就再不用考慮安全上下文了


  • samba裡面的配置都在/etc/samba/smb.conf更改裡面的配置資訊
  • man smb.conf 可以檢視詳細的配置檔案寫法
    比如89行 workgroup = WESTOS
//修改完退出需要重啟smb服務
那麼再次檢視資訊時 Domain=[WESTOS] //顯示域是WESTOS


//同樣的,還可以設定登陸限制

編輯檔案還可以增加自己建立的目錄

  • 但是會發現登陸不進去:


  • 需要開啟samba_export_all_ro
  • 開啟後/westos就可以檢視了

給DATA目錄新增設定:
browseable = no
//是否使你的共享在客戶端發現時被發現,no 隱藏
guest ok = yes
///是否可以讓匿名使用者訪問,預設值是no,如果關閉了就不談後面對映了

把無身份的bad user對映成 guest匿名使用者:

map to guest = bad user


修改完重啟服務生效

用匿名使用者連線
[root@foundation9 ~]# mount -o username=guest //172.25.254.209/DATA /mnt
Password for guest@//172.25.254.209/DATA:  
[root@foundation9 ~]# df

開啟/etc/fstab,檔案型別是cifs
//172.25.254.209/DATA  /mnt cifs defaults,username=guest,password="" 0 0   ##無密碼,不檢測,不備份

儲存退出後,mount -a 就直接可以掛上了

writable = yes    ##是否對檔案內部可寫

  • 檢視時出問題,先看selinux是否數了問題 系統級的目錄需要改布林值,不能改上下文

  • samba_export_all_rw 開啟

restorecon -RvvF dir   //重新整理布林值

再看許可權是否允許,這裡我們用student登陸,所以檔案的使用者student的許可權要給
可以直接給777
chmod 777 /westos/
## /mnt 本來許可權就是777

下來才是配置檔案的寫入問題 
新增writable = yes

登陸進入samba之後可以輸入 help檢視當前有的命令
登陸進去如果沒有一些命令,掛載就有了

新建使用者lee
將lee新增到smb中

首先設定writadble = no 關閉對所有可寫,然後單獨給定許可權
write list = student
 指定使用者可寫student
         +student  |  @student 使用者組

將lee新增到student的附屬組
用那個身份掛載建立的檔案就是誰的

admin users = lee ,lee建立的檔案所屬使用者root
掛載之後在掛載的檔案中建立檔案,檢視檔案的屬性,是root使用者lee組


  • 再次強調,本地chmod設定的許可權是針對本地使用者的 哪怕就是別人遠端登陸共享,許可權也是按每個伺服器自己的,根主機chmod設定的沒關係



SMB多使用者掛載

server端

yum install cifs-utils -y ##安裝這個檔案,可以管理登陸訪問的許可權
man mount.cifs
[root@foundation9 /]# vim /root/smbpassword  ##指定認證密碼檔案
username=lee
password=lee
chmod 600 /root/smbpassword     ##這個是為了安全性考慮
掛載:
mount -o credentials=/root/smbpassword,multiuser,sec=ntlmssp //172.25.254.209/CONFIG /mnt/
##此時,kiosk使用者就無法檢視掛載的/mnt了,需要認證才可以進入

認證方法: cifscreds
Usage:
cifscreds add [-u username] [-d] < host|domain>
cifscreds clear [-u username] [-d] < host|domain>
cifscreds clearall
cifscreds update [-u username] [-d] < host|domain>

直接輸入指令就是檢視基本的幫助

cifscreds add -u lee 172.25.254.209  ##以lee登陸


//在其中建立檔案,這裡的檔案的建立就按lee的相應配置來

client端:

 touch /mnt/tes
//在client端看的時候,檔案的所屬是kiosk,即客戶端的使用者,但是實際並不是

//在剛剛對CONFIG的設定,新建立的檔案的許可權在server端檢視:
[root@smb_server ~]# ll /mnt/tes
-rw-r--r--. 1 root lee 0 Aug 14 23:43 /mnt/tes

這個目錄共享可用的使用者
valid users = student
@student | +student 使用者組

修改時註釋掉匿名使用者


  • 發現,只有用student使用者可以登陸,lee就會被拒絕
    變成 +student之後,因為已經設定過lee是student組,所以lee又可以登陸了


samba主要針對windows客戶端與linux客戶端
linux與linux客戶端質之間用NFS ,下一篇將是對NFS檔案系統的講解

相關文章