cifs網路檔案共享系統

zhou562334410發表於2018-11-22

cifs網路檔案共享系統是linux系統與windos系統之間的檔案共享(用於linux和windos之間的檔案傳輸系統)

企業中常用的web服務,用來提供http://(超文字傳輸協議)。
web系統是客戶端/伺服器模式的,所以應該有伺服器和客戶端裡兩個部分。常用的伺服器程式時Apache,常用的客戶端程式是瀏覽器。www服從http協議,預設的TCP/IP埠是80,客戶端和伺服器的通訊過程簡述如下:

  1. 客戶端(瀏覽器)和web伺服器建立TCP連線,然後向web伺服器發出訪問請求,根據HTTP協議,該請求中包含了客戶端的IP地址、瀏覽器的型別和請求的URL等一系列資訊
  2. web伺服器受到請求後,將客戶端要求的介面內容返回到客戶端。如果出現錯誤,則返回錯誤程式碼
  3. 斷開與遠端web伺服器的連線
    一、samba服務的安裝
[root@localhost ~]# yum install samba-common samba samba-client.x86_64 -y
[root@localhost ~]# systemctl start smb
[root@localhost ~]# systemctl enable smb
[root@localhost ~]# firewall-cmd --permanent --add-service=samba
[root@localhost ~]# firewall-cmd --permanent --add-service=samba-client 
[root@localhost ~]# firewall-cmd --reload 
[root@localhost ~]# smbclient -L //172.25.254.110  //匿名使用者登陸
Enter root's password:    //匿名使用者登陸沒有密碼,可直接回車 
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

	Sharename       Type      Comment
	---------       ----      -------
	IPC$            IPC       IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------

1.samba服務的登陸和檢視

[root@localhost ~]# smbpasswd -a student  //為smb新增使用者student(該使用者必須是真實存在的,能id student 出來的使用者)
New SMB password:  //設定使用者登陸smb服務的密碼
Retype new SMB password:
Added user student.
[root@localhost ~]# 
[root@localhost ~]# pdbedit -L   //列出可以登陸samba服務的使用者
student:1000:Student User
[root@localhost ~]# cd /home/student/
[root@localhost student]# touch file{1..10}
[root@localhost student]# ls
file1  file10  file2  file3  file4  file5  file6  file7  file8  file9
[root@localhost ~]# getsebool -a | grep samba  //檢視smb的selinux狀態
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
[root@localhost ~]# setsebool -P samba_enable_home_dirs on  //開啟家目錄功能
[root@localhost student]# smbclient -L //172.25.254.110 -U student //登陸本地使用者,系統拒絕檢視家目錄。
Enter student's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

	Sharename       Type      Comment
	---------       ----      -------
	IPC$            IPC       IPC Service (Samba Server Version 4.1.1)
	student         Disk      Home Directories
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
[root@localhost ~]# smbclient //172.25.254.110/student -U student //登陸檢視家命令內容
Enter student's password: 
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                   D        0  Mon Nov 12 21:42:58 2018
  ..                                  D        0  Thu Jul 10 18:19:09 2014
  .bash_logout                        H       18  Wed Jan 29 07:45:18 2014
  .bash_profile                       H      193  Wed Jan 29 07:45:18 2014
  .bashrc                             H      231  Wed Jan 29 07:45:18 2014
  .ssh                               DH        0  Thu Jul 10 18:19:10 2014
  .config                            DH        0  Thu Jul 10 19:06:53 2014
  file1                               N        0  Mon Nov 12 21:42:58 2018
  file2                               N        0  Mon Nov 12 21:42:58 2018
  file3                               N        0  Mon Nov 12 21:42:58 2018
  file4                               N        0  Mon Nov 12 21:42:58 2018
  file5                               N        0  Mon Nov 12 21:42:58 2018
  file6                               N        0  Mon Nov 12 21:42:58 2018
  file7                               N        0  Mon Nov 12 21:42:58 2018
  file8                               N        0  Mon Nov 12 21:42:58 2018
  file9                               N        0  Mon Nov 12 21:42:58 2018

二、smb服務的使用者新增和刪除

pdbedit -L 檢視使用者列表
smbpasswd -a westos //新增使用者
pdbedit -x westos //刪除使用者

[root@localhost ~]# pdbedit -L
student:1000:Student User
[root@localhost ~]# useradd westos
[root@localhost ~]# smbpasswd -a westos
New SMB password:
Retype new SMB password:
Added user westos.
[root@localhost ~]# pdbedit -L
student:1000:Student User
westos:1001:
[root@localhost ~]# pdbedit -x westos
[root@localhost ~]# pdbedit -L
student:1000:Student User

三、組名的修改和黑名單的建立

1.組名的修改
在配置檔案中修改
vim /etc/samba/smb.conf
將原來的
89 workgroup = MYGROUP
修改為:
89 workgroup = westos

[root@localhost ~]# systemctl restart smb.service       //重啟服務

[root@localhost ~]# smbclient   -L //172.25.254.110   -U student
Enter student's password: 
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]

	Sharename       Type      Comment
	---------       ----      -------
	IPC$            IPC       IPC Service (Samba Server Version 4.1.1)
	student         Disk      Home Directories
Domain=[WESTOS] OS=[Unix] Server=[Samba 4.1.1]

	Server               Comment
	---------            -------

	Workgroup            Master
	---------            -------
[root@localhost ~]# 

2.samba黑白名單的建立

[root@localhost ~]#  rpm -qc samba-common   //查詢配置檔案
[root@localhost ~]#  vim /etc/samba/smb.conf
89         workgroup = WESTOS   

98         hosts deny = 172.25.254.10  //新增這一行,禁止ip是172.25.245.10這臺主機進行訪問;這個時候可以用兩臺主機(客戶端)去測試;
#(黑白名單任意新增一個,每次只能新增一個)     hosts allow = 172.25.254.10 //新增這一行,只允許ip為172.25.254.10這臺主機機進行訪問登陸,其他客戶拒絕登陸;
[root@localhost ~]# systemctl restart smb.service  //重啟服務

四、samba的自動掛載

1.臨時掛載:

 [root@localhost ~]# mount  //172.25.254.110/student /mnt/ -o       username=student,password=123
 [root@localhost ~]# touch file{1..3} ##在客戶端新建檔案
 [root@localhost ~]# ls ##同步到服務端 

2.開機自動掛載

  [root@localhost ~]# vim /etc/fstab 
  //172.25.254.205/student  /mnt cifs        defaults,username=student,password=123
  [root@localhost ~]#  mount -a   ##載入檔案/etc/fstab中的內容
  [root@localhost ~]#  df   ##掛載成功
  Filesystem               1K-blocks    Used Available Use% Mounted on
  /dev/vda1                 10473900 3182952   7290948  31% /
  devtmpfs                    469344       0    469344   0% /dev
 tmpfs                       484932     140    484792   1% /dev/shm
 tmpfs                       484932   12808    472124   3% /run
 tmpfs                       484932       0    484932   0% /sys/fs/cgroup
 /dev/mapper/vg0-vo          483670    2339    451840   1% /home
//172.25.254.110/student  10473900 3158308   7315592  31% /mnt

上述方法有一個缺點是如果檔案內容修改錯誤會影響開機啟動,於是推薦下述掛載策略

[root@localhost ~]#  vim /etc/rc.d/rc.local
mount -t cifs //172.25.254.110/student /mnt -o username=student,password=123
[root@localhost ~]#  chmod +x /etc/rc.d/rc.local ##增加可執行許可權
[root@localhost ~]#   reboot 

五、samba的許可權設定

[root@server mnt]# vim /etc/samba/smb.conf
       [hello]
        comment=westos dir
        path = /westos   //共享目錄地址的絕對路徑
        browseable = yes  //是否允許瀏覽:browseable=no(不允許)不用重啟,即改生效;
        writeable = yes   //是否可寫: 需要重啟;
        write list = +student  //組使用者可寫 ;+ 或者 @ 都可以

[root@server mnt]# systemctl restart smb.service      //重啟服務
[root@server mnt]# chmod 777 /westos      //改變許可權
[root@server mnt]# usermod -G student westos     //讓westos為student使用者的組

//客戶端測試:

[root@client ~]# mount //172.25.254.110/hello /mnt -o username=westos,password=westos //westos使用者掛載,測試
[root@client ~]# cd /mnt
[root@client mnt]# touch file4 //成功建立file4檔案
[root@client mnt]# ll 
-rw-r--r-- 1    1001    1001 0 Jun  2 02:43 file4   //建立成功,這裡1001是westos使用者的id,因為客戶端主機沒有westos使用者;

六、多使用者掛載

客戶端設定:

[root@client ~]# yum install cifs-utils.x86_64 -y 
[root@client ~]# vim /root/smbpass  //編輯檔案,檔案,引數指定:指定使用者名稱和密碼
         username=student
         password=student
[root@client ~]# mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //172.25.254.247/DIR /mnt
//掛載,其中,credentials=/root/smbpass檔案指定的使用者名稱、密碼,sec=ntlmssp 認證方式(因為下載的samba是4.1的,所有認證方式是ntlmssp;查詢方式rpm -ql | grep samba), multiuser為多使用者掛載
[root@client ~]# useradd test  //新增一個不存在的使用者
[root@client ~]# su - test  //切換到此使用者環境下
[test@client ~]$ cd /mnt
[test@client mnt]$ ls
ls: reading directory .: Permission denied  //切換到test使用者,訪問拒絕,保證了安全性
[test@client ~]$ cifscreds add -u westos 172.25.254.247  //命令通過samba使用者認證,看到目錄下的內容
You already have stashed credentials for 172.25.254.247 (172.25.254.247)
If you want to update them use:
    cifscreds update
[test@client ~]$ cifscreds add -u westos 172.25.254.247
Password: 
[test@client ~]$ ls /mnt
file  file1  file3

七、匿名使用者的登陸

[root@server ~]# vim /etc/samba/smb.conf
 126   map to guest=bad user ##這個配置的意思是將所有samba系統主機所不能正確識別的使用者都對映成guest使用者,這樣其他主機訪問目錄時就不再需要使用者名稱和密碼了 
 328   guest ok=yes    ##匿名使用者可以登入
  [root@server ~]# systemctl restart smb.servic

測試:

[root@client ~]# smbclient //172.25.254.110/DIR 
Enter root's password: 
Anonymous login successful
Domain=[HELLO] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls
  .                                    D        0  Mon Jun  4 06:34:13 2018
  ..                                   D        0  Mon Jun  4 04:28:21 2018
  hello                                N        0  Mon Jun  4 05:42:48 2018
  file1                                N        0  Mon Jun  4 06:42:48 2018

相關文章