如何在Fedora或CentOS上使用Samba共享文件夾
如今,無論在家里或者是辦公場所,不同的電腦之間共享文件夾已不是什么新鮮事了。在這種趨勢下,現(xiàn)代操作系統(tǒng)通過網(wǎng)絡(luò)文件系統(tǒng)的方式使得電腦間數(shù)據(jù)的交換變得簡單而透明。如果您工作的環(huán)境中既有微軟的Windows又有Linux,那么,一個共享文件及目錄的方式便是通過一個跨平臺網(wǎng)絡(luò)文件共享協(xié)議:SMB/CIFS。Windows原生的支持SMB/CIFS,Linux也通過開源的軟件Samba實現(xiàn)了SMB/CIFS協(xié)議。
在這篇文章中,我們將展示如何使用Samba共享文件夾。我們使用的Linux平臺是Fedora或CentOS。這篇文章分為四部分。首先,我們在Fedora/CentOS環(huán)境下安裝Samba。接著,我們討論如何調(diào)整SELinux和防火墻配置以允許Samba的文件共享。***我們介紹如何使用Samba來共享文件夾。
步驟1:在Fedora和CentOS上安裝Samba
首先,安裝Samba以及進行一些基本的配置。
檢驗Samba是否已經(jīng)安裝在您的系統(tǒng)中:
$ rpm -q samba samba-common samba-client
如果上面的命令沒有任何輸出,這意味著Samba并未安裝。這時,應(yīng)使用下面的命令來安裝Samba。
$ sudo yum install samba samba-common samba-client
接下來,創(chuàng)建一個用于在網(wǎng)絡(luò)中共享的本地文件夾。這個文件夾應(yīng)該以Samba共享的方式導出到遠程的用戶。在這個指南中,我們會在頂層文件夾'/'中創(chuàng)建這個文件夾,因此,請確保您有相應(yīng)的權(quán)限。
$ sudo mkdir /shared
如果您想在您的home文件夾內(nèi)創(chuàng)建共享文件夾(例如,~/shared),您必須激活SELinux中Samba的home文件夾共享選項,具體將在后面提到。
在創(chuàng)建/shared文件夾后,設(shè)置文件夾權(quán)限以保證其余用戶可以訪問它。
$ sudo chmod o+rw /shared
如果您不想其他用戶對該文件夾擁有寫權(quán)限,您需要移除命令中的'w'選項。
$ sudo chmod o+r /shared
接下來,創(chuàng)建一個空文件來測試。這個文件可以被用來驗證Samba的共享已經(jīng)被掛載。
$ sudo touch /shared/file1
步驟2:為Samba配置SELinux
接下來,我們需要再次配置SELinux。在Fedora和CentOS發(fā)行版中SELinux是默認開啟的。SELinux僅在正確的安全配置下才允許Samba讀取和修改文件或文件夾。(例如,加上'sambasharet'屬性標簽)。
下面的命令為文件的配置添加必要的標簽:
$ sudo semanage fcontext -a -t samba_share_t "<directory>(/.*)?"
將替換為我們之前為Samba共享創(chuàng)建的本地文件夾(例如,/shared):
$ sudo semanage fcontext -a -t samba_share_t "/shared(/.*)?"
我們必須執(zhí)行restorecon命令來激活修改的標簽,命令如下:
$ sudo restorecon -R -v /shared
為了通過Samba共享在我們home文件夾內(nèi)的文件夾,我們必須在SELinux中開啟共享home文件夾的選項,該選項默認被關(guān)閉。下面的命令能達到該效果。如果您并未共享您的home文件夾,那么您可以跳過該步驟。
$ sudo setsebool -P samba_enable_home_dirs 1
步驟3:為Samba配置防火墻
下面的命令用來打開防火墻中Samba共享所需的TCP/UDP端口。
如果您在使用firewalld(例如,在Fedora和CentOS7下),接下來的命令將會***的修改Samba相關(guān)的防火墻規(guī)則。
$ sudo firewall-cmd --permanent --add-service=samba
如果您在防火墻中使用iptables(例如,CentOS6或者更早的版本),可以使用下面的命令來打開Samba必要的向外的端口。
$ sudo vi /etc/sysconfig/iptables
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 445 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 445 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 137 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m udp -p udp --dport 138 -j ACCEPT
-A RH-Firewall-1-INPUT -m state --state NEW -m tcp -p tcp --dport 139 -j ACCEPT
然后重啟iptables服務(wù):
$ sudo service iptables restart
#p#
步驟4:更改Samba配置
后面的步驟用來配置Samba以將本地文件夾導出為Samba共享文件夾。
使用文件編輯器打開Samba配置文件,并將下面的行添加到文件的末尾。
$ sudo nano /etc/samba/smb.conf
[myshare]
comment=my shared files
path=/shared
public=yes
writeable=yes
上面在括號內(nèi)的文本(例如,"myshare")是Samba共享的資源的名字,它被用來從遠程主機存取Samba共享。
創(chuàng)建Samba用戶帳戶,這是掛載和導出Samba文件系統(tǒng)所必須的。我們可以使用smbpasswd工具來創(chuàng)建一個Samba用戶。注意,Samba用戶帳戶必須是已有的Linux用戶。如果您嘗試使用smbpasswd添加一個不存在的用戶,它會返回一個錯誤的消息。
如果您不想使用任何已存在的Linux用戶作為Samba用戶,您可以在您的系統(tǒng)中創(chuàng)建一個新的用戶。為安全起見,設(shè)置新用戶的登錄腳本為/sbin/nologin,并且不創(chuàng)建該用戶的home文件夾。
在這個例子中,我們創(chuàng)建了一個名叫"sambaguest"的用戶,如下:
$ sudo useradd -M -s /sbin/nologin sambaguest
$ sudo passwd sambaguest
在創(chuàng)建一個新用戶后,使用smbpasswd命令添加Samba用戶。當這個命令詢問一個密碼時,您可以鍵入一個與其用戶密碼不同的密碼。
$ sudo smbpasswd -a sambaguest
激活Samba服務(wù),并檢測Samba服務(wù)是否在運行。
$ sudo systemctl enable smb.service
$ sudo systemctl start smb.service
$ sudo systemctl is-active smb
使用下面的命令來查看Samba中共享的文件夾列表。
$ smbclient -U sambaguest -L localhost
接下來是在Thunar文件管理器中訪問Samba共享文件夾以及對file1進行拷貝復制的截圖。注意,Samba的共享內(nèi)容可以通過在Thunar中通過 smb://<samba-server-IP-address>/myshare
這個地址來訪問。
via: http://xmodulo.com/share-directory-samba-fedora-centos.html
作者:Kristophorus Hadiono 譯者:wwy-hust 校對:wxy