# Samba NAS伺服器建構指南 > Samba是易於使用的雲端檔案管理系統,支援 SMB/CIFS 協定,這使得 Windows、Linux 和 macOS 用戶都能夠方便地訪問共享資料夾。 可以配置Samba設定滿足你的需求,包括設定用戶權限、共享協定等 本篇在ubuntu20.04的伺服器上建構Samba Server ## 建構Samba Server 在Server上先創建一個資料夾,未來就拿它當作大家存取的對象吧。 #### 1. 安裝samba軟體 ``` sudo apt update sudo apt install samba ``` #### 2. 更改設定文檔 ``` sudo nano /etc/samba/smb.conf ``` 新增以下程式碼段落控制資料夾名稱與權限,未來登入路徑會是`\\xxx.xxx.xxx.xxx\share_name` ``` [share_name] comment = brief descript path = /path/to/your/folder browseable = yes read only = no guest ok = yes valid users = user1, user2, user3 ``` #### 3. 測試文檔內容,若語法有問題則會報錯 ``` sudo testparm ``` #### 4. 重啟服務 ``` sudo service smbd restart ``` #### 5. 重要!!如果系統有防火牆,請開啟以下port,否則無法運作 ``` sudo ufw allow 137/udp sudo ufw allow 138/udp sudo ufw allow 139/tcp sudo ufw allow 445/tcp ``` ## 如何透過網路連線? 一般而言,Samba系統主要是給<font color='red'>**內網**</font>使用的,如果需要外網連線功能可以過設定router的portforward實現。 ### windows 對client端來說使用window的系統最為方便,連線步驟如下: 1. 以window10為例,到瀏覽檔案找到本機點右鍵,`連線網路磁碟機`  2. 輸入網路位置(Samba Server IP)與設定分享得資料夾名稱  3. 登入使用者的帳號密碼  4. 登入成功! 畫面與操作跟一般的資料夾沒兩樣 ### Linux 使用網路連接伺服器,用`smb://`開頭 ``` smb://xxx.xxx.xxx.xxx/share_dir_name ``` ## Samba的用戶管理 注意: 新增使用者,需已有帳號在server上,且請在ubuntu與samba使用相同密碼 ##### 1. 創建linux使用者 `-M`不建立家目錄,`-s`設定預設shell,`/bin/false`將不為使用者提供交互介面登入 ``` sudo useradd -M $username -s /bin/false sudo useradd --no-create-home --shell /bin/false username 功能同上 ``` 新增後記得設定密碼(與後續密碼一致) ``` sudo passwd $username ``` ##### 2. samba新增使用者,需已有帳號在server上 ``` sudo pdbedit -a -u {username} ``` ``` 新增/修改/刪除 sudo pdbedit -a/-r/-x -u {username} 修改密碼 sudo smbpasswd {username} ``` ##### 3. 修改/etc/samba/smb.conf檔案,確認使用者有在valid users核准名單中, ##### 4. 記得修改conf檔案後需要測試與重啟,詳情請見第一段 ### 其他管理用戶相關指令 列出使用者。`-L`列出所有使用者 ``` sudo pdbedit -L ``` 列出使用者詳細訊息。 ``` sudo pdbedit -Lv username ``` 監看線上使用情形 ``` sudo smbstatus ``` ## 補充 : config檔怎麼寫 /etc/samba/smb.conf檔案的深入說明 下方列出一些比較難懂,或是特別好用的設定檔 ### GLOBAL ``` [global] 設定可以連線的對象 (省略ip部分表示都可以連線) host allow = 127. 192.168.1 192.168.1.111 中文解碼方式也是在這邊設定 ``` ### SHARE DIR ``` [DIR_name] browseable = yes/no ;設定是否在網絡上可看見該共享資源,no將會隱藏共享資源,只有知道共享名稱的用戶才能夠訪問。 write list = user ;設定有寫入權限的使用者 ``` <!-- 測試中功能... ``` write list = @usergroup ; @代表設定有寫入權限的群組 管理者共用一個群組,就可以同時具有寫入權限 ``` --> <!-- # Samba Client怎麼使用 如果是window連到linux server就像前面的說明一樣容易,但如果碰到linux client到linux server就要一點小功夫了,聽我娓娓道來 ``` smbclient -L //192.168.1.111 smbclient -L //192.168.1.111 -U {username} ``` --> <!-- # 未整理 ``` 查看目前啟動情況sudo systemctl status smbd ========================================================= 啟動並設定開機時啟動samba: sudo systemctl start smbd sudo systemctl start nmbd sudo systemctl enable smbd sudo systemctl enable nmbd 如果已經啟動過而想重啟的話,將start改成restart即可: sudo systemctl restart smbd sudo systemctl restart nmbd ``` --> ### 補充 ``` 開機時會自動執行 sudo systemctl enable myservice.service 僅是暫時一次性的啟用 sudo systemctl start myservice.service ```
×
Sign in
Email
Password
Forgot password
or
By clicking below, you agree to our
terms of service
.
Sign in via Facebook
Sign in via Twitter
Sign in via GitHub
Sign in via Dropbox
Sign in with Wallet
Wallet (
)
Connect another wallet
New to HackMD?
Sign up