1. 程式人生 > >Samba簡介與配置(匿名&本地用戶驗證)

Samba簡介與配置(匿名&本地用戶驗證)

語法錯誤 ring stp ane 之間 glob 常用 limit wall

Samba簡介

Samba是在Linux和UNIX系統上實現SMB協議的一個免費軟件,由服務器及客戶端程序構成。

在此之前我們已經了解了NFS,NFS與samba一樣,也是在網絡中實現文件共享的一種實現,但不幸的是,其不支持windows平臺,而本章要提到的samba是能夠在任何支持SMB協議的主機之間共享文件的一種實現,當然也包括windows。

SMB(Server Messages Block,信息服務塊)是一種在局域網上共享文件和打印機的一種通信協議,它為局域網內的不同計算機之間提供文件及打印機等資源的共享服務。

SMB協議是C/S型協議,客戶機通過該協議可以訪問服務器上的共享文件系統、打印機及其他資源。

Samba監聽端口:

  • TCP:相對應的服務是smbd服務,其作用是提供對服務器中文件、打印資源的共享訪問。
    • 139
    • 445
  • UDP:相對應的服務是nmbd服務,其作用是提供基於NetBIOS主機名稱的解析。
    • 137
    • 138

samba進程:

  • nmbd:對應netBIOS
  • smbd:對應cifs協議
  • winbindd+ldap:對應Windows AD活動目錄

samba用戶:

  • 賬戶:都是系統用戶/etc/passwd
  • 密碼:Samba服務自有密碼文件,通過smbpasswd -a USERNAME命令設置
#smbpasswd命令:
    -a Sys_User #添加系統用戶為samba用戶並為其設置密碼
    -d          #禁用用戶帳號
    -e          #啟用用戶帳號
    -x          #刪除用戶帳號

Samba安全級別:

  • user:基於本地的驗證
  • server:由另一臺指定的服務器對用戶身份進行認證
  • domain:由域控進行身份驗證
  • share:匿名訪問(現版本已取消這個安全級別,匿名訪問配置方式發生了改變)

Samba配置文件:

  • /etc/samba/smb.conf
    • [global]:全局配置,此處的設置項對整個samba服務器都有效
    • [homes]:宿主目錄共享設置,此處用來設置Linux用戶的默認共享,對應用戶的宿主目錄。當用戶訪問服務器中與自己用戶名同名的共享目錄時,通過驗證後將會自動映射到該用戶的宿主目錄中
    • [printers]:打印機共享設置

常用配置文件參數:

參數 配置
workgroup 表示設置工作組名稱
server string 表示描述samba服務器
security 表示設置安全級別,其值可為share、user、server、domain
passdb backend 表示設置共享帳戶文件的類型,其值可為tdbsam(tdb數據庫文件)、ldapsam(LDAP目錄認證)、smbpasswd(兼容舊版本samba密碼文件)
comment 表示設置對應共享目錄的註釋,說明信息,即文件共享名
browseable 表示設置共享是否可見
writable 表示設置目錄是否可寫
path 表示共享目錄的路徑
guest ok 表示設置是否所有人均可訪問共享目錄
public 表示設置是否允許匿名用戶訪問
write list 表示設置允許寫的用戶和組,組要用@表示,例如 write list = root,@root
valid users 設置可以訪問的用戶和組,例如 valid users = root,@root
hosts deny 設置拒絕哪臺主機訪問,例如 hosts deny = 192.168.72.1
hosts allow 設置允許哪臺主機訪問,例如 hosts allow = 192.168.72.2
printable 表示設置是否為打印機

可以使用testparm命令測試配置文件是否有語法錯誤,以及顯示最終生效的配置

配置Samba

配置匿名共享

#安裝Samba
[root@lynkser ~]# yum -y install samba

#編輯配置文件
[root@lynkser ~]# vim /etc/samba/smb.conf
        map to guest = Bad User

#創建共享目錄
[root@lynkser ~]# mkdir /share
[root@lynkser ~]# chmod 777 /opt/share/

#添加共享配置
[root@lynkser ~]# vim /etc/samba/smb.conf
[lynk]
        comment = lynk
        path = /opt/share
        browseable = yes
        guest ok = yes
        writable = yes
        public = yes

#檢查下配置有沒有問題
[root@lynkser ~]# testparm /etc/samba/smb.conf
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[lynk]"
Loaded services file OK.
Server role: ROLE_STANDALONE

#啟動服務
[root@lynkser ~]# systemctl start smb 
[root@lynkser ~]# systemctl enable smb

#配置防火墻富規則
[root@lynkser ~]# firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=192.168.26.0/24 service name=samba accept‘ --permanent
success
[root@lynkser ~]# firewall-cmd --reload
success

#關閉SElinux
[root@lynkser ~]# setenforce 0

在客戶端驗證服務

#安裝Samba客戶端
[root@lynk ~]# yum install -y samba-client

#配置防火墻富規則
[root@lynk ~]# firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=192.168.26.129 service name=samba accept‘ --permanent
success
[root@lynk ~]# firewall-cmd --reload
success

#查看共享的資源
[root@lynk ~]# smbclient -L 192.168.26.129 -U "Bad User"
Enter SAMBA\Bad User‘s password: 
OS=[Windows 6.1] Server=[Samba 4.6.2]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    lynk            Disk      lynk
    IPC$            IPC       IPC Service (Samba 4.6.2)
OS=[Windows 6.1] Server=[Samba 4.6.2]

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

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

#掛載Samba服務端共享文件到本地
[root@lynk ~]# mkdir /opt/share
[root@lynk ~]# mount -t cifs //192.168.26.129/lynk /opt/share -o username=‘Bad User‘
[root@lynk ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/sda3               18G  1.4G   17G   8% /
devtmpfs               479M     0  479M   0% /dev
tmpfs                  489M     0  489M   0% /dev/shm
tmpfs                  489M  6.7M  482M   2% /run
tmpfs                  489M     0  489M   0% /sys/fs/cgroup
/dev/sda1              297M  108M  190M  37% /boot
tmpfs                   98M     0   98M   0% /run/user/0
/dev/sr0               3.8G  3.8G     0 100% /cdrom
//192.168.26.129/lynk   18G  1.4G   17G   8% /opt/share

#測試文件權限
[root@lynk ~]# cd /opt/share
[root@lynk share]# touch a
[root@lynk share]# mkdir b
[root@lynk share]# ll
total 0
-rw-r--r--. 1 nobody nobody 0 Jan 14 18:23 a
drwxr-xr-x. 2 nobody nobody 0 Jan 14 18:23 b

配置用戶認證共享

#安裝samba
[root@lynkser ~]# yum -y install samba

#新建samba用戶並設置密碼
[root@lynkser ~]# useradd -M lynksmb
[root@lynkser ~]# smbpasswd -a lynksmb
New SMB password:
Retype new SMB password:
Added user lynksmb.

#將lynksmb映射為share用戶
[root@lynkser ~]# echo ‘lynksmb = share‘ >> /etc/samba/smbusers

#編輯配置文件
[root@lynkser ~]# vim /etc/samba/smb.conf
        username map = /etc/samba/smbusers

#創建共享文件並更改屬主
[root@lynkser ~]# mkdir /opt/share
[root@lynkser ~]# chown -R lynk.lynk /opt/share

#添加一個共享配置
[lynk]
        comment = lynk
        path = /opt/share
        browseable = yes
        guest ok = yes
        writable = yes
        write list = share
        public = yes

#檢查配置文件
[root@lynkser ~]# testparm /etc/samba/smb.conf
Load smb config files from /etc/samba/smb.conf
rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)
Processing section "[homes]"
Processing section "[printers]"
Processing section "[print$]"
Processing section "[lynk]"
Loaded services file OK.
Server role: ROLE_STANDALONE

#啟動服務
[root@lynkser ~]# systemctl start smb 
[root@lynkser ~]# systemctl enable smb

#配置防火墻富規則
[root@lynkser ~]# firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=192.168.26.0/24 service name=samba accept‘ --permanent
success
[root@lynkser ~]# firewall-cmd --reload
success

#關閉SElinux
[root@lynkser ~]# setenforce 0

在客戶端驗證服務

#安裝Samba客戶端
[root@lynk ~]# yum install -y samba-client

#配置防火墻富規則
[root@lynk ~]# firewall-cmd --add-rich-rule ‘rule family=ipv4 source address=192.168.26.129 service name=samba accept‘ --permanent
success
[root@lynk ~]# firewall-cmd --reload
success

#查看共享資源
[root@lynk ~]# smbclient -L 192.168.26.129 -U share
Enter SAMBA\share‘s password: 
Domain=[LYNKSER] OS=[Windows 6.1] Server=[Samba 4.6.2]

    Sharename       Type      Comment
    ---------       ----      -------
    print$          Disk      Printer Drivers
    lynk            Disk      lynk
    IPC$            IPC       IPC Service (Samba 4.6.2)
    lynksmb         Disk      Home Directories
Domain=[LYNKSER] OS=[Windows 6.1] Server=[Samba 4.6.2]

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

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

#掛載Samba服務端共享文件到本地
[root@lynk ~]# mkdir /opt/share
[root@lynk ~]# mount -t cifs //192.168.26.129/lynk /opt/share/ -o username=share,password=wasdjkl
[root@lynk ~]# df -h
Filesystem             Size  Used Avail Use% Mounted on
/dev/sda3               18G  1.4G   17G   8% /
devtmpfs               479M     0  479M   0% /dev
tmpfs                  489M     0  489M   0% /dev/shm
tmpfs                  489M  6.7M  482M   2% /run
tmpfs                  489M     0  489M   0% /sys/fs/cgroup
/dev/sda1              297M  108M  190M  37% /boot
tmpfs                   98M     0   98M   0% /run/user/0
/dev/sr0               3.8G  3.8G     0 100% /cdrom
//192.168.26.129/lynk   18G  1.4G   17G   8% /opt/share

#測試文件權限
[root@lynk ~]# cd /opt/share
[root@lynk share]# touch a
[root@lynk share]# mkdir b

Samba簡介與配置(匿名&本地用戶驗證)