• smb服務
  • windows共享看不見盤符
  • 自動掛載
  • 共享samba用户賬號的家目錄(默認)
  • 創建samba賬號
  • 更改samba用户賬號共享的目錄
  • 不同用户配置不同配置文件


smb服務

1、 SMB:Server Message Block服務器消息塊,IBM發佈,最早是DOS網絡文件共享協議
2、 Cifs:common internet file system,微軟基於SMB發佈
3、 SAMBA:1991年Andrew Tridgell,實現windows和UNIX相通
4、 SAMBA的功能:
  • 共享文件和打印,實現在線編輯
  • 實現登錄SAMBA用户的身份認證
  • 可以進行NetBIOS名稱解析
  • 外圍設備共享
5、 計算機網絡管理模式:
  • 工作組WORKGROUP:計算機對等關係,帳號信息各自管理
  • 域DOMAIN:C/S結構,帳號信息集中管理,DC,AD
6、 相關包:
  - Samba 提供smb服務
  - Samba-client 客户端軟件
  - samba-common 通用軟件
  - cifs-utils smb客户端工具
  - samba-winbind 和AD相關
7、 相關服務進程:
  - smbd 提供smb(cifs)服務 TCP:139,445
  - nmbd NetBIOS名稱解析 UDP:137,138
8、 主配置文件:/etc/samba/smb.conf
  - 幫助參看:man smb.conf
9、 語法檢查: testparm [-v] [/etc/samba/smb.conf]
10、客户端工具:smbclient,mount.cifs

windows共享看不見盤符

通過命令cmd ; net share  查看   #C:\Windows\System32 找到cmd.exe右鍵以管理員運行
C:\Users\29256>net share
共享名       資源                            註解

\-------------------------------------------------------------------------------
C$           C:\                             默認共享
E$           E:\                             默認共享
F$           F:\                             默認共享
IPC$                                         遠程 IPC
print$       C:\WINDOWS\system32\spool\drivers
                                             打印機驅動程序
ADMIN$       C:\WINDOWS                      遠程管理
sharetools   E:\sharetools
命令成功完成。
C:\WINDOWS\system32>net share sharetools /del
sharetools 已經刪除。

如圖

smbios解析_bc


smbios解析_#samba_02

C:\WINDOWS\system32>net user dhy centos /add
命令成功完成。
[root@centos7:~]# locate cifs.ko
/usr/lib/modules/3.10.0-862.el7.x86_64/kernel/fs/cifs/cifs.ko.xz

[root@centos7:~]# yum install samba-client
[root@centos7:~]# rpm -ql samba-client
/usr/bin/cifsdd
/usr/bin/dbwrap_tool
/usr/bin/findsmb
/usr/bin/mvxattr
/usr/bin/nmblookup
/usr/bin/oLschema2ldif
/usr/bin/regdiff
/usr/bin/regpatch
/usr/bin/regshell
/usr/bin/regtree
/usr/bin/rpcclient
/usr/bin/samba-regedit
/usr/bin/sharesec
/usr/bin/smbcacls
/usr/bin/smbclient
\**省略**
[root@centos7:~]# smbclient -L 192.168.31.1 -U dhy%centos

    Sharename       Type      Comment
    ---------       ----      -------
    ADMIN$          Disk      遠程管理
    C$              Disk      默認共享
    E$              Disk      默認共享
    F$              Disk      默認共享
    IPC$            IPC       遠程 IPC
    print$          Disk      打印機驅動程序
    sharewin        Disk      
Reconnecting with SMB1 for workgroup listing.
Connection to 192.168.31.1 failed (Error NT_STATUS_RESOURCE_NAME_NOT_FOUND)
Failed to connect with SMB1 -- no workgroup available

UNC(Universal Naming Convention)通用命名規則,也稱通用命名規範
//192.168.31.1/sharewin     linux
\\172.18.118.99\sharewin     windows
[root@centos7:~]# smbclient  //192.168.31.1/sharewin -U dhy%centos
Try "help" to get a list of possible commands.
smb: \> help
[root@centos7:app]# mount -o username=dhy,password=centos //192.168.31.1/sharewin /app/smb/
//192.168.31.1/sharewin  299G   54G  246G  18% /app/smb  #掛載windows共享的文件

[root@centos7:app]# vim /etc/fstab
//192.168.31.1/winshare  /app/smb    cifs  username=dhy,password=centos 0 0
或者
//192.168.31.1/winshare  /app/smb    cifs  credentials=/etc/smb.txt  0   0
[root@centos7:app]#cat > /etc/smb.txt
username=dhy
password=centos
[root@centos7:app]# mount -a  #掛載失敗時需要裝包
[root@centos7:app]# yum install cifs-utils  #mount.cifs
[root@centos7:app]#chmod 600 /etc/smb.txt

[root@cos7 ~ ]#smbclient -L 192.168.31.1 -U dhy%centos
Connection to 192.168.31.1 failed (Error NT_STATUS_IO_TIMEOUT)

由於從新安裝了一個虛擬機,結果在僅主機模式下,windows(192.168.31.1即vmnet1)可以ping通linux,而linux ping不通windows,解決方法如圖

smbios解析_smbios解析_03

自動掛載

[root@cos7 ~ ]#vim /etc/auto.master 
 /- /etc/auto.dhy 
 [root@cos7 ~ ]#vim /etc/auto.dhy 
 /app/smb -fstype=cifs,username=dhy,pass=centos ://192.168.31.1/winshare

共享samba用户賬號的家目錄(默認)

兩個linux,一個當客户端,一個當samba服務器,windows當客户端

[root@cos17 ~ ]#yum install samba -y   #安裝服務包
[root@cos17 ~ ]#rpm -ql samba
/usr/lib/systemd/system/nmb.service  #提供名稱解析為ip,若共享用ip,此服務可以不啓用
/usr/lib/systemd/system/smb.service  #提供共享服務
/usr/sbin/nmbd    # netbios名解析支持,如windows計算機名解析為ip,可以通過wins,lmhost,廣播
/usr/sbin/smbd    # samba共享
**省略*8
#windows10如下
C:\Users\29256>ping acer-zhang    #通過廣播找到此計算機名的ip
正在 Ping Acer-Zhang [fe80::f1fb:c301:6a94:9a%8] 具有 32 字節的數據:
來自 fe80::f1fb:c301:6a94:9a%8 的回覆: 時間<1ms
來自 fe80::f1fb:c301:6a94:9a%8 的回覆: 時間<1ms
來自 fe80::f1fb:c301:6a94:9a%8 的回覆: 時間<1ms
來自 fe80::f1fb:c301:6a94:9a%8 的回覆: 時間<1ms
netbios=計算機名+字符 00 20  #00代表服務
C:\Users\29256>nbtstat -c
以太網:
節點 IP 址址: [172.18.118.99] 範圍 ID: []
    緩存中沒有名稱

smbios解析_smbios解析_04

[root@cos17 ~ ]#ll /etc/samba
total 20
-rw-r--r--. 1 root root    20 Apr 13 23:34 lmhosts  #類似hosts文件
-rw-r--r--. 1 root root   706 Apr 13 23:34 smb.conf
-rw-r--r--. 1 root root 11327 Apr 13 23:34 smb.conf.example
#windows開始用FQDN來代替netbios,類似hosts文件
[root@cos17 ~ ]#rpm -qf /etc/samba/smb.conf
samba-common-4.7.1-6.el7.noarch
[root@cos17 ~ ]#mkdir /data/smb1 -p
[root@cos17 ~ ]#mkdir /data/smb2 -p
[root@cos17 ~ ]#systemctl start smb
[root@cos17 ~ ]#ss -ntlp   #139  ,445端口
[root@cos17 ~ ]#systemctl start nmb 
[root@cos17 ~ ]#ss -nulp   #137  138端口

創建samba賬號

創建samba賬號,依賴linux賬號
[root@cos17 ~ ]#useradd -s /sbin/nologin smb1   #系統賬號
[root@cos17 ~ ]#smbpasswd -a smb1      由系統賬號變為samba賬號,改密碼不需要-a選項
New SMB password:
Retype new SMB password:
Added user smb1.
[root@cos17 ~ ]#pdbedit -L
smb1:1001:
[root@cos17 ~ ]#useradd -s /sbin/nologin smb2
[root@cos17 ~ ]#smbpasswd -a smb1
New SMB password:
Retype new SMB password:
[root@cos17 ~ ]#useradd -s /sbin/nologin smb3
[root@cos17 ~ ]#smbpasswd -a smb3
New SMB password:
Retype new SMB password:
Added user smb3.
[root@cos17 ~ ]#ll /var/lib/samba/private/passdb.tdb 
-rw------- 1 root root 421888 Aug 19 21:49 /var/lib/samba/private/passdb.tdb
[root@cos17 ~ ]#smbpasswd -x smb3
Deleted user smb3.
[root@cos17 ~ ]#iptables -F #清空防火牆策略
windows10中win鍵+r鍵 輸入 \192.168.31.17 如圖 ,2個圖片

smbios解析_smbios解析_05

smbios解析_smbios解析_06

windows連接

windows10中win鍵+r鍵 輸入 \192.168.31.17\smb2 如圖

smbios解析_centos_07

smbios解析_smbios解析_08


由於samba服務只運行一個客户端登錄一個用户,故而先刪除smb1用户,再登錄smb2用户即可,具體如下:

C:\Users\29256>net use
會記錄新的網絡連接。

狀態       本地        遠程                      網絡

-------------------------------------------------------------------------------
OK                     \\192.168.31.17\IPC$      Microsoft Windows Network
命令成功完成。
C:\Users\29256>net use \\192.168.31.17\IPC$ /del
\\192.168.31.17\IPC$ 已經刪除。

linux客户端連接

[root@cos7 ~ ]#smbclient -L 192.168.31.17
Enter SAMBA\root's password: 
Anonymous login successful

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    IPC$            IPC       IPC Service (Samba 4.7.1)
Reconnecting with SMB1 for workgroup listing.
Anonymous login successful

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

    Workgroup            Master
    ---------            -------
    SAMBA                COS17
    WORKGROUP            DESKTOP-977TN2L
[root@cos7 ~ ]#smbclient -L 192.168.31.17 -U smb1%centos

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    IPC$            IPC       IPC Service (Samba 4.7.1)
    smb1            Disk      Home Directories
Reconnecting with SMB1 for workgroup listing.

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

    Workgroup            Master
    ---------            -------
    SAMBA                COS17
    WORKGROUP            DESKTOP-977TN2L
[root@cos7 ~ ]#smbclient //192.168.31.17/smb1 -U smb1%centos
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Sun Aug 19 21:47:04 2018
  ..                                  D        0  Sun Aug 19 21:49:46 2018
  .mozilla                           DH        0  Sun Aug 19 23:14:23 2018
  .bash_logout                        H       18  Wed Apr 11 08:53:01 2018
  .bash_profile                       H      193  Wed Apr 11 08:53:01 2018
  .bashrc                             H      231  Wed Apr 11 08:53:01 2018

[root@cos7 samba ]#ll
total 20
-rw-r--r--. 1 root root    20 Apr 13 23:34 lmhosts
-rw-r--r--. 1 root root   706 Apr 13 23:34 smb.conf   #配置文件,centos7此文件有詳細説明
-rw-r--r--. 1 root root 11327 Apr 13 23:34 smb.conf.example #配置文件詳細説明
[root@cos17 samba ]#pwd
/etc/samba
[root@cos17 samba ]#vim smb.conf #ini格式的文件
[global]
        workgroup = SAMBA
        security = user         #用户名驗證
                            \#netbios name = cos17 可以ping cos17
                            \#hosts allow = 172. 192.168.31.7 
                            \#log file = /var/log/samba/log.%m
                            \#log level = 2  參考man smb.conf
                            \#max log size = 50
                            \#參考smb.conf.example文件
        passdb backend = tdbsam #存放用户名密碼的數據庫文件

        printing = cups         #打印服務,打印機共享
        printcap name = cups    
        load printers = yes
        cups options = raw

[homes]                           #家目錄共享,不想共享,可以註釋掉此幾行
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600        #此配置文件可參考smb.conf.example


[root@cos17 samba ]#smbclient -L 192.168.31.1 -U dhy%centos  #windows
Failed to connect with SMB1 -- no workgroup available   #工作組,邏輯上的概念

更改samba用户賬號共享的目錄

[root@cos17 samba ]#vim smb.conf.example 
;       [public]                   #最後幾行,自定義共享設置
;       comment = Public Stuff     #註釋信息
;       path = /home/samba         #共享路徑
;       public = yes               #是否共享,yes匿名用户也可以登錄
;       writable = no              #是否可寫
;       printable = no
;       write list = +staff        #哪些用户可以寫

[root@cos17 data ]#mkdir smb1dir
[root@cos17 samba ]#vim smb.conf
[share1]
path=/data/smb1dir
writable = yes
public = yes  
write list=smb1,smb3   #write list=smb3,+sales;smb3用户,sales組中成員可以訪問
#browsable=no  #表示不可以瀏覽,即隱藏效果
[root@cos7 ~ ]#smbclient //192.168.31.17/share1
Enter SAMBA\root's password: 
Anonymous login successful
tree connect failed: NT_STATUS_ACCESS_DENIED  #writable = no的錯誤提示
[root@cos7 ~ ]#smbclient -L 192.168.31.17
Enter SAMBA\root's password: 
Anonymous login successful

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers     #windows中$符號表示隱藏共享
    share1          Disk      
    IPC$            IPC       IPC Service (Samba 4.7.1)

不同用户配置不同配置文件

[root@cos17 samba ]#vim /etc/samba/smb.conf
[global]
        workgroup = SAMBA
        security = user
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        config file = /etc/samba/conf.d/%u    #添加此行
[root@cos17 samba ]#mkdir conf.d
[root@cos17 samba ]#cd conf.d

[root@cos17 samba ]#vim smb1
[share1]
comment=test dir1
path=/data/smb1dir111
[root@cos17 samba ]#cd conf.d
[root@cos17 samba ]#mkdir /data/smb1dir111
[root@cos17 samba ]#touch test1.txt

[root@cos17 samba ]#vim smb2
[share1]
comment=test dir1
path=/data/smb1dir111
writable=yes          #可寫,同時注意系統文件系統權限
[root@cos17 samba ]#chmod 777 /data/smb1dir111
[root@cos7 ~ ]#smbclient //192.168.31.17/share1 -U smb1%centos