1. 程式人生 > >Linux:Samba檔案共享伺服器搭建與訪問

Linux:Samba檔案共享伺服器搭建與訪問

本文連結: https://blog.csdn.net/xietansheng/article/details/83932033

Samba 是 Linux 和 Unix 系統上實現 SMB協議 的一款免費軟體,能在 Windows、Linux、Mac 系統上訪問 Linux 系統上的的共享檔案。

相關網站:

1. Samba 服務端(Ubuntu)

1.1 使用 apt-get 命令安裝 Samba:

sudo apt-get update
sudo apt-get install samba

安裝過程中如果某項依賴無法安裝或需要指定的版本,可以先逐個安裝依賴後再安裝 samba。

1.2 建立 Samba 訪問賬戶

先建立 Samba使用者,後面配置共享資料夾時需要使用。

/*
 * 建立一個Linux系統使用者,不需要指定密碼,該使用者用於新增到 Samba 中
 * 也可以不建立,直接使用已存在的Linux系統使用者。
 */
sudo useradd user01

/*
 * 新增一個名稱為 user01 的 Samba使用者,回車後設置該Samba使用者的密碼,
 * 該密碼是Samba使用者的獨立密碼,與對應的Linux系統使用者密碼不同。
 * 
 * 注意:
 * 這裡新增的 Samba使用者名稱 “user01” 必須是已存在的當前Linux系統使用者名稱,即 /etc/passwd 檔案中存在的使用者名稱,
 * 也可以通過 sudo useradd user01 新建一個使用者,不需要指定密碼,則該使用者將只能從遠端訪問,不能從本機登入。 
 */
sudo smbpasswd -a user01

smbpasswd 使用者操作常用命令:

smbpasswd -a username           // 增加使用者
smbpasswd -d username           // 凍結使用者,凍結後不能在登入了
smbpasswd -e username           // 恢復使用者,解凍後解凍
smbpasswd -n username           // 把使用者的密碼設定成空
smbpasswd -x username           // 刪除使用者

1.3 建立 共享資料夾

共享資料夾必須保證訪問的使用者(Samba使用者名稱對應的Linux系統使用者)擁有讀寫許可權。

sudo mkdir /home/使用者名稱/ShareDemo          // 建立一個用於共享的資料夾
sudo chomd 777 /home/使用者名稱/ShareDemo      // 設定該資料夾的許可權使其讓所有使用者可讀可寫可執行

1.4 配置 共享資料夾

Samba的基礎配置檔案: /etc/samba/smb.conf

// 先備份預設配置,防止誤刪或誤改
// 如果沒有備份,又被誤刪,也可以嘗試執行 “sudo cp /usr/share/samba/smb.conf /etc/samba/” 恢復
sudo cp /etc/samba/smb.conf /etc/samba/smb.conf_backup

// 開啟 Samba 的 smb 配置檔案
sudo gedit /etc/samba/smb.conf

把以下內容新增到smb.conf配置檔案的尾部(需要共享多個資料夾,可配置多個)

[ShareDemo]
    comment = Linux Shared Folder
    path = /home/使用者名稱/ShareDemo
    valid users = user01
    public = no
    read only = no
    create mask = 0700
    directory mask = 0700
    available = yes
    browseable = yes
    display charset = UTF-8
    unix charset = UTF-8
    dos charset = cp936

部分欄位說明:

  • [ShareDemo]: 共享名稱(共享資料夾的名稱)
  • comment: 描述
  • path: 共享資料夾的路徑
  • valid users: 可訪問的使用者,多個使用者用,隔開(使用上面步驟建立的 Samba使用者名稱)
  • public: 訪問是否不需要密碼
  • read only: 是否只讀
  • create mask: 檔案許可權設定
  • directory mask: 檔案許可權設定
  • available: 是否有效
  • browseable: 是否可瀏覽,no表示隱藏,需要通過 IP+共享名稱 進行訪問
  • display charset、unix charset、dos charset: 這三個是為了防止出現中文目錄亂碼的情況

其他配置參考:samba.orgubuntu/samba

1.5 Samba 服務的啟動和停止

配置完 smb.conf 後,重啟 Samba 服務:

// 重啟服務
sudo service smbd restart

// Samba 服務重啟後,可以使用下面命令檢查 smb.conf 配置檔案是否有語法錯誤
testparm

其他服務管理命令:

sudo service smbd start             // 啟動
sudo service smbd stop              // 關閉 Samba 伺服器:
sudo service smbd restart           // 重新啟動 Samba 伺服器:
sudo service smbd status            // 檢視 Samba 服務狀態
ps -aux | grep smbd                 // 檢視 samba 是否正在執行

2. 訪問 SMB 共享資料夾

假設 Samba 伺服器的 IP 地址為192.168.0.100,共享資料夾的名稱為ShareDemo

2.1 Windows 連線 SMB 共享資料夾

  • Windows鍵 + R,在開啟的執行輸入框中輸入: \\192.168.0.100\\192.168.0.100\ShareDemo,確定;
  • 輸入 samba 配置的 使用者名稱 和 密碼,確定;
  • 在列出的共享資料夾列表中選擇要訪問的資料夾。

2.2 Linux 掛載 SMB 共享資料夾

(1) 使用 mount 命令把指定的 SMB共享資料夾 掛載到本地檔案系統的一個資料夾

// 先建立一個用於掛載的空資料夾
sudo mkdir /mnt/ShareDemo

// 掛載操作
sudo mount -t smbfs -o username=使用者名稱,password=密碼 //192.168.0.100/ShareDemo /mnt/ShareDemo

// 有的系統已經不能識別 smbfs 檔案系統,用 cifs 代替 smbfs(個人感覺此方法成功概率較高)
sudo mount -t cifs -o username=使用者名稱,password=密碼 //192.168.0.100/ShareDemo /mnt/ShareDemo

// 掛載之後,使用 umount 命令可以解除安裝
sudo umount /mnt/ShareDemo

(2) 使用 smbclient 命令訪問指定的 SMB共享資料夾

// 如果沒有安裝 smbclient 客戶端,需要先安裝
sudo apt-get install smbclient

// 列出所有共享資料夾
smbclient -L //192.168.0.100/ShareDemo -U 使用者名稱

// 登入 SMB服務端,回車後輸入密碼,登入成功,然後用相關命令操作(get下載檔案,用put上傳檔案, help檢視支援的命令)
smbclient //192.168.0.100/ShareDemo -U 使用者名稱

// 也可以使用者名稱和密碼一起輸入(用%分隔),直接登入成功,然後進行相關命令操作
smbclient //192.168.0.100/ShareDemo -U 使用者名稱%密碼

// 也可以一句話登入成功後,直接執行命令,然後自動退出
smbclient //192.168.0.100/ShareDemo -U 使用者名稱%密碼 -c "put <filename>"               // 上傳檔案
smbclient //192.168.0.100/ShareDemo -U 使用者名稱%密碼 -c "get <filename> [localname]"   // 下載檔案

2.3 MAC 連線 SMB 共享資料夾

  • Finder右鍵 -> 連線伺服器…;
  • 伺服器地址輸入: smb://192.168.0.100smb://192.168.0.100/ShareDemo
  • 選擇“註冊使用者”,輸入 samba 配置的 使用者名稱 和 密碼,點選“連線”;
  • 在列出的共享資料夾列表中選擇要訪問的資料夾。