Linux——搭建Samba(CIFS)伺服器

王智剛發表於2021-11-17

一、Samba的基本概念

Samba服務:是提供基於Linux和Windows的共享檔案服務,服務端和客戶端都可以是Linux或Windows作業系統。可以基於特定的使用者訪問,功能比NFS更強大。

Samba與ftp和nfs的區別:

  • ftp:基於Linux和Windows共享檔案的服務,但是不安全,因為ftp可以匿名訪問,匿名使用者可以獲取讀寫許可權,所以不常用
  • nfs:只能做Linux的共享檔案服務,服務端和客戶端都只能是Linux作業系統

samba的服務名、對應埠號及作用:

  • smbd:139 提供檔案的共享訪問
  • nmbd:445 提供基於域名的訪問

二、Samba服務搭建步驟:

目標:搭建一個基於Linux的samba服務,共享給Windows和Linux的客戶端去訪問

(一)、安裝Samba之前Server端和Client端都需要準備:主機名、網路、yum源

1、更改主機名:

[root@localhost ~]# hostnamectl set-hostname $主機名
[root@localhost ~]# bash	#環境變數過載

2、配置網路

(1)虛擬交換機、網路介面卡選擇僅主機模式,並且配置為192.168.100.0網段;

(2)編輯網路配置檔案:

[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改:	BOOTPROTO=static	#改為靜態IP地址
	ONBOOT=yes		#改為開機自啟
	IPADDR=192.168.100.10
	PREFIX=24  或者  NETMASK=255.255.255.0

(3)重啟網路服務:

[root@localhost ~]# systemctl restart network

3、配置yum源

(1)先在VMware裡面把系統映象檔案連線到虛擬機器的光碟機上;

(2)掛載光碟機裡的映象:

[root@localhost ~]# mount /dev/cdrom /media

(3)修改yum源配置檔案:

[root@localhost ~]# vim /etc/yum.repos.d/local.repo
	[rhel]
	name=rhel
	baseurl=file:///media
	enabled=1
	gpgcheck=0

(4)清空yum源快取資訊:

[root@localhost ~]# yum clean all

(5)檢索當前yum源資訊:

[root@localhost ~]# yum repolist

(二)、Server端配置步驟:

1、安裝Samba的所有包

[root@server ~]# yum -y install samba*

2、建立Samba的共享資料夾和標記檔案並且修改許可權

[root@server ~]# mkdir -p /opt/samba
[root@server samba]# touch flag
[root@server samba]# ls
flag
[root@server samba]# chmod -R o+w /opt/samba

3、檢視Samba配置目錄

  • smb.conf -> Samba的主配置檔案
  • smb.conf.exampl -> Samba的示例檔案
[root@server samba]# cd /etc/samba/
[root@server samba]# ls
lmhosts  smb.conf  smb.conf.example

4、開啟Samba的示例檔案

[root@server samba]# vim /etc/samba/smb.conf.example

克隆會話進行下面selinux的配置

[root@server samba]# setsebool -P samba_domain_controller on
[root@server samba]# setsebool -P samba_enable_home_dirs on
[root@server samba]# chcon -t samba_share_t /opt/samba/	#Samba的共享目錄
[root@server samba]# setsebool -P samba_export_all_rw on

5、編輯Samba的主配置檔案

[root@server opt]# vim /etc/samba/smb.conf

加入:

[common]
	comment =common directories	對共享目錄的註釋、說明資訊
	path = /opt/samba		#Samba的共享目錄
	interfaces = 192.168.100.10/24	#提供服務的主機地址
	hosts allow = 192.168.100.	#允許訪問的主機或者網段
	browseable = yes		該共享目錄對客戶機是否可見
	valid users = luna,tom,jeccy	#可訪問的使用者名稱
	write list = luna		是否具有可寫許可權
點選檢視主配置檔案詳情
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        workgroup = SAMBA
        security = user
        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
        browseable = No
[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = root
        create mask = 0664
        directory mask = 0775
[common]
        comment =common directories
        path = /opt/samba
        interfaces = 192.168.100.10/24
        hosts allow = 192.168.100.
        browseable = yes
        valid users = luna,tom
        write list = luna

smb.conf檔案的配置內容的含義:

[global]:全域性設定
[homes]:使用者目錄共享設定
[printers]:印表機共享設定
[common]:自定義名稱的共享目錄設定

workgroup:所在工作組名稱
security:安全級別,可用值為:share、user、server、domain
passwd backend:設定共享賬戶檔案的型別

注意:Samba服務設定的讀取、寫入許可權,優先順序要低於檔案系統中設定的許可權

6、檢測Samba配置檔案格式是否正確

[root@server ~]# testparm
[root@server ~]#

7、建立Samba使用者(前提:必須是系統存在的使用者)

[root@server ~]# useradd luna	#先建立系統使用者
[root@server ~]# useradd tom
[root@server ~]# passwd luna	#設定系統使用者密碼
[root@server ~]# passwd tom
[root@server ~]# smbpasswd -a luna	#再建立為Samba使用者,同時設定samba密碼
[root@server ~]# smbpasswd -a tom

8、檢視所有Samba使用者

[root@server ~]#pdbedit –L

9、啟動samba服務並設定為開機自啟

[root@server ~]#systemctl restart smb
[root@server ~]#systemctl restart nmb
[root@server ~]#systemctl enable smb
[root@server ~]#systemctl enable nmb

10、檢視埠(139,445)啟動情況(如果命令不可用,需要安裝net-tools包)

[root@server ~]#netstat -pant

11、關閉防火牆

[root@server ~]#systemctl stop firewalld
[root@server ~]#systemctl disable firewalld

(三)、Client端配置步驟:

1、Windows作Client:

CIFS特點:windows會自動記錄上次訪問的使用者,所以第一次訪問的使用者,下一次仍舊預設使用該使用者訪問。

解決使用者切換的方法:
進入cmd,輸入net use * /del命令,等待若干分鐘後,即可切換其他使用者登入Samba伺服器。

2、Linux作Client:

1)單使用者訪問:

方法一:使用Samba的Linux客戶端軟體訪問

[root@client ~]yum -y install samba-client
[root@client ~]smbclient -U tom //192.168.100.10/common
smb: \> mkdir abc	#測試tom寫許可權
smb: \> ls
smb: \>

方法二:使用掛載方式訪問

[root@client ~]mount -t cifs -o username=tom,password=000000 //192.168.100.10/common /mnt
				#-t格式:以cifs格式掛載(Samba預設的檔案系統型別),-o選項:samba使用者名稱和密碼
[root@client ~]cd /mnt
[root@client mnt]ls
[root@client mnt]touch abc	#測試tom寫許可權
touch: cannot touch ‘abc’: Permission denied

2)多使用者訪問:

[root@client ~]yum -y install samba-client cifs-utils
[root@client ~]mkdir -p /mnt/multi
[root@client ~]vim /etc/fstab
於末行新增://192.168.100.10/common	/mnt/multi      cifs    username=tom,password=000000,multiuser,sec=ntlmssp      0  0
[root@client ~]mount -a		#先使用tom獲取common的讀許可權,注意:如果這步做掉了,後面的luna就獲取不到common內容
[root@client ~]cd /mnt/multi
[root@client multi]ls
[root@client multi]touch abc	#測試tom寫許可權
touch: cannot touch ‘abc’: Permission denied
[root@client ~]su - luna
[luna@client ~]cifscreds add -u luna server	#使用luna登入並臨時獲取寫許可權
[luna@client ~]cd /mnt/multi
[luna@client multi]touch abc
[luna@client multi]ls
abc

相關文章