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


一、Samba的基本概念

Samba服務:是提供基於Linux和Windows的共享文件服務,服務端和客戶端都可以是Linux或Windows操作系統。並且可以基於特定的用戶訪問,功能比NFS更強大。(cifs格式:Samba默認的文件系統類型)

Samba與ftp和nfs的區別:

  • ftp服務:也是基於Linux和Windows共享文件的服務,但是不安全,因為ftp可以匿名訪問,匿名用戶可以獲取讀寫權限,所以不常用
  • nfs服務:只能做Linux的共享文件服務,服務端和客戶端都只能是Linux操作系統
samba的服務名 對應端口號 作用
smbd 139 提供文件的共享訪問
nmbd 445 提供基於域名的訪問

二、Samba服務搭建步驟:

准備:配置網絡、yum源(client相同)

點擊查看代碼
# 1、更改主機名:
[root@localhost ~]# hostnamectl set-hostname server
[root@localhost ~]# bash
[root@server ~]# 

# 2、配置網絡
# (1)虛擬交換機配置為192.168.100.0網段,網絡適配器選擇僅主機模式;

# (2)編輯網絡配置文件:
[root@server ~]# cd /etc/sysconfig/network-scripts/
[root@server network-scripts]# vim ifcfg-ens33
#需要修改的參數為:
BOOTPROTO=static
ONBOOT=yes
IPADDR=192.168.100.10
PREFIX=24

# (3)重啟網絡服務:
[root@server network-scripts]# systemctl restart network

# 3、配置yum源
# (1)先進入虛擬機設置,把系統鏡像連接到虛擬機的光驅上;

# (2)掛載光驅里的鏡像:
[root@server ~]# mount /dev/cdrom /media/
mount: /dev/sr0 is write-protected, mounting read-only

# (3)修改yum源配置文件:
[root@server ~]# cd /etc/yum.repos.d/
[root@server yum.repos.d]# ls
[root@server yum.repos.d]# vim local.repo
[rhel]
name=rhel
baseurl=file:///media
enabled=1
gpgcheck=0

# (4)清空yum源緩存並檢索yum源
[root@server yum.repos.d]# yum clean all 
[root@server yum.repos.d]# yum repolist

Server端配置步驟:

1、安裝Samba的所有軟件包

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

2、創建共享文件夾及標記文件

[root@server ~]# mkdir /opt/samba
[root@server ~]# cd /opt/samba
[root@server samba]# touch flag
[root@server samba]# ls
flag

3、修改共享目錄的權限

[root@server samba]# chmod -R o+w /opt/samba

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

加入:
[wangzhigang]
	comment = wangzhigang directories	#對共享目錄的注釋、說明信息
	path = /opt/samba		#Samba的共享目錄
	interfaces = 192.168.100.10/24	#提供服務的主機
	hosts allow = 192.168.100.	#允許訪問的主機或者網段
	browseable = yes		#該共享目錄對客戶機是否可見
	valid users = luna,tom	#可訪問的用戶名(只讀)
	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
[wangzhigang]
        comment = wangzhigang 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]:打印機共享設置
[wangzhigang]:自定義名稱的共享目錄設置

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

6、檢測Samba配置文件格式是否正確

[root@server ~]# testparm
# 回車之后顯示出部分內容

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 ~]# firewall-cmd --permanent --add-service=samba
success
[root@server ~]# firewall-cmd --reload
success
[root@server ~]# firewall-cmd --list-all

Client端配置步驟:

1、Windows作Client:

訪問:\192.168.100.10,然后輸入用戶和密碼即可訪問

注意(CIFS特點):windows會自動記錄上次訪問的用戶,所以第一次訪問的用戶,下一次仍舊默認使用該用戶訪問

解決用戶切換的方法:進入cmd,輸入net use * /del命令,等待若干分鍾后,即可切換其他用戶登錄Samba服務器

2、Linux作Client:

1)單用戶訪問:

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

# 安裝客戶端軟件包
[root@client ~]# yum -y install samba-client

# 使用tom訪問
[root@client ~]# smbclient -U tom //192.168.100.10/wangzhigang
Enter tom's password: 
Domain=[SAMBA] OS=[Windows 6.1] Server=[Samba 4.4.4]
smb: \> ls
  .                                   D        0  Sun Dec 19 16:44:58 2021
  ..                                  D        0  Sun Dec 19 14:12:28 2021
  flag                                N        0  Sun Dec 19 14:12:53 2021

# 測試tom寫權限(不可寫)
smb: \> touch abc
touch: command not found
smb: \> ls
smb: \>
smb: \> quit

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

# 以tom用戶掛載到/mnt
[root@client ~]# mount -t cifs -o username=tom,password=123456 //192.168.100.10/wangzhigang /mnt

# 查看是否訪問到,並測試tom寫權限(不可寫)
[root@client ~]# cd /mnt
[root@client mnt]# ls
flag
[root@client mnt]# touch abc
touch: cannot touch ‘abc’: Permission denied
[root@client mnt]# 

2)多用戶訪問:

# 安裝軟件包
[root@client mnt]# yum -y install samba-client cifs-utils

# 取消上面/mnt的掛載
[root@client mnt]# cd ~
[root@client ~]# umount /mnt/
[root@client ~]# cd /mnt/
[root@client mnt]# ls

# 創建/mnt/multi為掛載目錄
[root@client mnt]# mkdir multi
[root@client mnt]# ls
multi

# 編輯永久掛載的配置文件(先使用tom獲取讀權限)
[root@client ~]# vim /etc/fstab
於末行添加://192.168.100.10/wangzhigang	/mnt/multi      cifs    username=tom,password=000000,multiuser,sec=ntlmssp      0  0
[root@client ~]# mount -a

# 查看是否訪問到,並測試tom寫權限(不可寫)
[root@client ~]# cd /mnt/multi
[root@client multi]# ls
flag
[root@client multi]# touch abc
touch: cannot touch ‘abc’: Permission denied

# 創建luna用戶,並切換為luna
[root@client multi]# cd
[root@client ~]# useradd luna
[root@client ~]# su - luna

# 使用luna登錄並臨時獲取寫權限
[luna@client ~]$ cifscreds add -u luna 192.168.100.10	
Password: 

# 查看是否訪問到,並測試寫權限(創建成功即獲取寫權限)
[luna@client ~]$ cd /mnt/multi/
[luna@client multi]$ ls
flag
[luna@client multi]$ touch abc
[luna@client multi]$ ls
abc  flag

聲明:未經許可,不得轉載


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM