由於計算機很少作為獨立系統工作,因此作為系統管理員或工程師,您應該知道如何設置和維護具有多種類型服務器的網絡。

在本文和本系列的下一篇文章中,我們將介紹設置的要點 SambaNFS 分別具有 Windows/Linux 和 Linux 客戶端的服務器。

RHCE:設置 Samba 文件共享 – 第 6 部分

如果您被要求在可能會找到不同操作系統和設備類型的公司或企業環境中設置文件服務器,本文肯定會派上用場。

由於您可以在 Internet 上閱讀有關 Samba 和 NFS 的背景和技術方面的信息,因此在本文和下一篇文章中,我們將直接切入正題。

第 1 步:安裝 Samba 服務器

我們當前的測試環境包括兩個 RHEL 7 boxes 和一個 Windows 8 機器,按順序:

1. Samba / NFS server [box1 (RHEL 7): 192.168.0.18], 
2. Samba client #1 [box2 (RHEL 7): 192.168.0.20]
3. Samba client #2 [Windows 8 machine: 192.168.0.106]
Samba 的測試設置
Samba 的測試設置

box1,安裝以下軟件包:

# yum update && yum install samba samba-client samba-common

box2

# yum update && yum install samba samba-client samba-common cifs-utils

安裝完成後,我們就可以配置我們的共享了。

步驟 2:通過 Samba 設置文件共享

原因之一 Samba 之所以如此重要是因為它提供文件和打印服務 SMB/CIFS 客戶端,這導致這些客戶端將服務器視為 Windows 系統(我必須承認,在寫這個主題時我會有點情緒化,因為這是我幾年前作為新 Linux 系統管理員的第一次設置)。

添加系統用戶並設置權限和所有權

為了允許群組協作,我們將創建一個名為 finance 兩個用戶(user1user2) 使用 useradd 命令和一個目錄 /financebox1.

我們還將將此目錄的組所有者更改為 finance 並將其權限設置為 0770 (所有者和組所有者的讀取、寫入和執行權限):

# groupadd finance
# useradd user1
# useradd user2
# usermod -a -G finance user1
# usermod -a -G finance user2
# mkdir /finance
# chmod 0770 /finance
# chgrp finance /finance

第 3 步:​ 配置 SELinux 和 Firewalld

準備配置 /finance 作為 Samba 共享,我們需要禁用 SELinux 或設置適當的 boolean 和安全上下文值如下(否則,SELinux 將阻止客戶端訪問共享):

# setsebool -P samba_export_all_ro=1 samba_export_all_rw=1
# getsebool –a | grep samba_export
# semanage fcontext –at samba_share_t "/finance(/.*)?"
# restorecon /finance

此外,我們必須確保 firewalld 允許 Samba 流量。

# firewall-cmd --permanent --add-service=samba
# firewall-cmd --reload

第 4 步:配置 Samba 共享

現在是時候深入研究配置文件了 /etc/samba/smb.conf 並為我們的分享添加部分:我們想要 finance 能夠瀏覽內容 /finance並保存 / 在其中創建文件或子目錄(默認情況下,它們的權限位設置為 0770finance 將成為他們的群組所有者):

配置文件

[finance]
comment=Directory for collaboration of the company's finance team
browsable=yes
path=/finance
public=no
valid [email protected]
write [email protected]
writeable=yes
create mask=0770
Force create mode=0770
force group=finance

保存文件,然後使用 testparm. 如果有任何錯誤,以下命令的輸出將指示您需要修復的內容。 否則,它將顯示對您的 Samba 服務器配置的評論:

測試 Samba 配置
測試 Samba 配置

如果您想添加另一個向公眾開放的共享(意味著無需任何身份驗證),請在 /etc/samba/smb.conf 並在新共享的名稱下複製上面的部分,僅更改 public=nopublic=yes 並且不包括有效用戶和寫入列表指令。

第 5 步:添加 Samba 用戶

接下來,您將需要添加 user1user2 作為 Samba 用戶。 為此,您將使用 smbpasswd,它與 Samba 的內部數據庫交互。 系統將提示您輸入稍後用於連接到共享的密碼:

# smbpasswd -a user1
# smbpasswd -a user2

最後,重啟 Samba,使服務在啟動時啟動,並確保共享對網絡客戶端實際可用:

# systemctl start smb
# systemctl enable smb
# smbclient -L localhost –U user1
# smbclient -L localhost –U user2
驗證 Samba 共享
驗證 Samba 共享

至此,Samba 文件服務器已正確安裝和配置。 現在是時候在我們的 RHEL 7Windows 8 客戶。

第 6 步:在 Linux 中掛載 Samba 共享

首先,確保可以從此客戶端訪問 Samba 共享:

# smbclient –L 192.168.0.18 -U user2
在 Linux 上掛載 Samba 共享
在 Linux 上掛載 Samba 共享

(對 user1 重複上述命令)

與任何其他存儲介質一樣,您可以在需要時掛載(然後卸載)此網絡共享:

# mount //192.168.0.18/finance /media/samba -o username=user1
Mount Samba 網絡共享
Mount Samba 網絡共享

(在哪裡 /media/samba 是現有目錄)

或永久地,通過添加以下條目 /etc/fstab

fstab

//192.168.0.18/finance /media/samba cifs credentials=/media/samba/.smbcredentials,defaults 0 0

隱藏文件在哪裡 /media/samba/.smbcredentials (其權限和所有權已設置為 600root:root,分別)包含兩行,指示允許使用共享的帳戶的用戶名和密碼:

.smbcredentials

username=user1
password=PasswordForUser1

最後,讓我們在裡面創建一個文件 /finance 並檢查權限和所有權:

# touch /media/samba/FileCreatedInRHELClient.txt
在 Samba 共享中創建文件
在 Samba 共享中創建文件

如您所見,該文件是使用 0770 和所有權設置為 user1:finance.

第 7 步:在 Windows 中掛載 Samba 共享

要在 Windows 中掛載 Samba 共享,請轉到 My PC 並選擇 Computer, 然後 Map 網絡驅動器。 接下來,為要映射的驅動器分配一個字母並使用不同的憑據檢查連接(下面的屏幕截圖是西班牙語,我的母語):

在 Windows 中掛載 Samba 共享
在 Windows 中掛載 Samba 共享

最後,讓我們創建一個文件並檢查權限和所有權:

在 Windows Samba 共享上創建文件
在 Windows Samba 共享上創建文件
# ls -l /finance

這次文件屬於 user2 因為這是我們用來從 Windows 客戶端連接的帳戶。

概括

在本文中,我們不僅解釋瞭如何設置 Samba 服務器和兩個客戶端使用不同的操作系統,還要了解如何在服務器上配置 firewalld 和 SELinux 以允許所需的組協作功能。

最後但同樣重要的是,讓我推薦在線閱讀 smb.conf 的手冊頁 探索可能比本文中描述的場景更適合您的情況的其他配置指令。

與往常一樣,如果您有任何意見或建議,請隨時使用下面的表格發表評論。