標籤:
如今,無論在家裡或者是辦公場所,不同的電腦之間共用資料夾已不是什麼新鮮事了。在這種趨勢下,現代作業系統通過網路檔案系統的方式使得電腦間資料的交換變得簡單而透明。如果您工作的環境中既有微軟的Windows又有Linux,那麼,一個共用檔案及目錄的方式便是通過一個跨平台網路檔案分享權限設定協議:SMB/CIFS。Windows原生的支援SMB/CIFS,Linux也通過開源的軟體Samba實現了SMB/CIFS協議。
在這篇文章中,我們將展示如何使用Samba共用資料夾。我們使用的Linux平台是Fedora或CentOS。這篇文章分為四部分。首先,我們在Fedora/CentOS環境下安裝Samba。接著,我們討論如何調整SELinux和防火牆配置以允許Samba的檔案分享權限設定。最後我們介紹如何使用Samba來共用資料夾。
步驟1:在Fedora和CentOS上安裝Samba
首先,安裝Samba以及進行一些基本的配置。
檢驗Samba是否已經安裝在您的系統中:
$ rpm -q samba samba-common samba-client
如果上面的命令沒有任何輸出,這意味著Samba並未安裝。這時,應使用下面的命令來安裝Samba。
$ sudo yum install samba samba-common samba-client
接下來,建立一個用於在網路中共用的本地檔案夾。這個檔案夾應該以Samba共用的方式匯出到遠端使用者。在這個指南中,我們會在最上層資料夾‘/‘中建立這個檔案夾,因此,請確保您有相應的許可權。
$ sudo mkdir /shared
如果您想在您的home檔案夾內建立共用資料夾(例如,~/shared),您必須啟用SELinux中Samba的home檔案夾共用選項,具體將在後面提到。
在建立/shared檔案夾後,設定檔案夾許可權以保證其餘使用者可以訪問它。
$ sudo chmod o+rw /shared
如果您不想其他使用者對該檔案夾擁有寫入權限,您需要移除命令中的‘w‘選項。
$ sudo chmod o+r /shared
接下來,建立一個空檔案來測試。這個檔案可以被用來驗證Samba的共用已經被掛載。
$ sudo touch /shared/file1
步驟2:為Samba配置SELinux
接下來,我們需要再次配置SELinux。在Fedora和CentOS發行版中SELinux是預設開啟的。SELinux僅在正確的安全配置下才允許Samba讀取和修改檔案或檔案夾。(例如,加上‘sambasharet‘屬性標籤)。
下面的命令為檔案的配置添加必要的標籤:
$ sudo semanage fcontext -a -t samba_share_t "<directory>(/.*)?"
將替換為我們之前為Samba共用建立的本地檔案夾(例如,/shared):
$ sudo semanage fcontext -a -t samba_share_t "/shared(/.*)?"
我們必須執行restorecon命令來啟用修改的標籤,命令如下:
$ sudo restorecon -R -v /shared
為了通過Samba共用在我們home檔案夾內的檔案夾,我們必須在SELinux中開啟共用home檔案夾的選項,該選項預設被關閉。下面的命令能達到該效果。如果您並未共用您的home檔案夾,那麼您可以跳過該步驟。
$ sudo setsebool -P samba_enable_home_dirs 1
步驟3:為Samba配置防火牆
下面的命令用來開啟防火牆中Samba共用所需的TCP/UDP連接埠。
如果您在使用firewalld(例如,在Fedora和CentOS7下),接下來的命令將會永久的修改Samba相關的防火牆規則。
$ 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服務:
$ sudo service iptables restart
步驟4:更改Samba配置
後面的步驟用來配置Samba以將本地檔案夾匯出為Samba共用資料夾。
使用檔案編輯器開啟Samba設定檔,並將下面的行添加到檔案的末尾。
$ sudo nano /etc/samba/smb.conf [myshare]comment=my shared filespath=/sharedpublic=yeswriteable=yes
上面在括弧內的文本(例如,"myshare")是Samba共用的資源的名字,它被用來從遠程主機存取Samba共用。
建立Samba使用者帳戶,這是掛載和匯出Samba檔案系統所必須的。我們可以使用smbpasswd工具來建立一個Samba使用者。注意,Samba使用者帳戶必須是已有的Linux使用者。如果您嘗試使用smbpasswd添加一個不存在的使用者,它會返回一個錯誤的訊息。
如果您不想使用任何已存在的Linux使用者作為Samba使用者,您可以在您的系統中建立一個新的使用者。為安全起見,設定新使用者的登入指令檔為/sbin/nologin,並且不建立該使用者的home檔案夾。
在這個例子中,我們建立了一個名叫"sambaguest"的使用者,如下:
$ sudo useradd -M -s /sbin/nologin sambaguest$ sudo passwd sambaguest
在建立一個新使用者後,使用smbpasswd命令添加Samba使用者。當這個命令詢問一個密碼時,您可以鍵入一個與其使用者密碼不同的密碼。
$ sudo smbpasswd -a sambaguest
啟用Samba服務,並檢測Samba服務是否在運行。
$ 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的共用內容可以通過在Thunar中通過 smb://<samba-server-IP-address>/myshare 這個地址來訪問。
免費提供最新Linux技術教程書籍,為開源技術愛好者努力做得更多更好:http://www.linuxprobe.com/
如何在Fedora或CentOS上使用Samba共用