︿
Top

1、前言

在 Microsoft Windows 系統內,我們可以使用 網路上的芳鄰 來查詢進而存取其他電腦分享出來的資源,而在 Unix-Like 系統中則利用 NFS 來分享彼此的資源,那 Windows 與 Unix-Like 系統間要如何分享彼此的資源呢? 答案就是利用 Samba 來達成這個目的了,而 Samba 甚至可成為 PDC 的角色哦 (例如此次實作的 Samba2.2.8a),讓我們來玩一玩 Samba 吧!!



文章目錄

1、前言
2、實作環境
3、安裝及設定
          步驟1.安裝 Samba 套件
          步驟2.修改 Samba 設定檔 (smb.conf)
          步驟3.啟動 Samba 服務
          步驟4.建立 Script (addmachusr.sh)
          步驟5.建立登入 Batch File (logon.bat)
4、參考
5、Me FAQ
          Q1.無法加入 Domain,提供的證件與現有的證件組衝突?
          Q2.無法加入 Domain,指定的使用者不存在?
          Q3.無法加入網域 DNS 對應問題?
          Q4.發生 read_fd_with_timeout client 0.0.0.0 read error Socket is not connected 錯誤訊息?



2、實作環境

  • FreeBSD 4.8-RELEASE
  • Samba2.2.8a 



3、安裝及設定

步驟 1. 安裝 Samba 套件

切換至 Ports Tree 路徑安裝 Samba 套件。
cd /usr/ports/net/samba     //切換到安裝路徑
make install clean          //安裝套件並清除暫存檔案 

安裝過程到一半時出現 Configuration Options 畫面時,此次實作選擇了 syslog、acl、quota、recyle 這四項功能如下:
  • syslog: 執行訊息可記錄 (Log)
  • acl: 可設定檔案權限 ACL (Access Control List)
  • quota: 支援使用者配額設定 (Quota)
  • recyle: 資源回收筒



步驟 2. 修改 Samba 設定檔 (smb.conf)

修改 Samba 設定檔 smb.conf,請複製預設的設定檔案更名後進行修改。
cd /usr/local/etc               //切換到預設檔案路徑
cp smb.conf.default smb.conf    //將預設檔案複製一份為 smb.conf
vi smb.conf                     //修改 Samba 設定檔內容如下

Samba 設定檔 smb.conf 內容大約分為二大部份: 伺服器環境設定 (Global Settings)、使用者環境設定 (Share Definitions)

步驟 2-1. 伺服器環境設定 (Global Settings)

(1) 設定 Samba 的 NT 網域或工作群組
#workgroup = MYGROUP             //預設值
 workgroup = WEITHENN            //修改後 (網域名稱為 weithenn)

(2) 設定 Samba 在網路芳鄰上所看到的伺服器說明文字
#server string = Samba Server    //預設值
 server string = PDC             //修改後 (網域主控台叫 PDC)

(3) 設定試用帳號的名字
#guest account = pcguest         //預設值
 guest account = nobody          //修改後 (設定為 nobody 安全性較高)

(4) Samba 會將每個使用者存取到 Samba 的記錄存成 log.machine 的記錄檔
 log file = /var/log/log.%m      //預設值 (%m 指的就是 machine)
(5)設定 Log 檔最大為多少 Kb
#max log size = 50               //預設值
 max log size = 500              //修改後 (指定 Log 為 500Kb)

(6)設定 Samba 成為 PDC 相關設定
time server = yes                //Samba 同時擔任時間校時
username map = /home/samba/username.map    //內容將 root = administrator
unix password sync = yes         //當使用者密碼改變時自動更新到 Samba 的 smbpasswd
passwd program = /usr/bin/passwd %u
passwd chat = *New*password* %n\n *Retype*new**password* %n\n *password*has*been*changed*
os level = 48                 //作業系統優先權,可設定值由 0 ~ 255 (Windows NT 為 32)
 security = user              //設定系統安全的等級
 security = share            //完全分享、只要有密碼來驗證
 security = user             //利用 Samba 來控管驗證密碼
 security = server 或 domain //利用 NT 來控管驗證密碼
 domain master = yes         //將 Samba 設為網域 (NT網域) 的主控者PDC
 domain logons = yes         //將 Samba 設為登入伺服器 (logon server)
 preferred master = yes      //設定 Samba 為 Primary Domain Controller (PDC) 的角色
 local master = yes          //設定 Samba 為 Local Master Browser (LMB) 的角色
 domain admin group = root @wheel  //Domain Admin 的群組
 logon script = logon.bat    //Logon Script的名稱
 encrypt passwords = yes     //是否將密碼編碼
 add user script = /usr/local/sbin/addmachusr.sh %u  //Join Domain 時 產生 Machine Account
 client code page=950        //在網路芳鄰中能使用中文


步驟 2-2. 使用者環境設定 (Share Definitions)

(1)設定給登入的網域使用者logon script所在的目錄與屬性
 netlogon
 comment = Network Logon Service  //資料夾的說明文字
 path = /home/samba/netlogon      //存放 Logon Script 的路徑 (自行指定)
 guest ok = no                    //若為 yes 則測試帳號可進入,no 為否則須進行身份驗證
 writeable = no                   //是否可寫入 (no 為 read-only)
 share modes = no                 //不是任何人都可使用,需經過任證
 write list = @wheel              //可執行寫入動作清單 (只有 wheel 群組)
 create mode = 664                //建立檔案時所給的權限
 directory mode = 775             //建立目錄時所給的權限

(2)設定 Samba 分享目錄 (例如 公共區)
 public
 comment = Public Stuff           //資料夾的說明文字
 path = /home/samba/public        //存放要分享檔案的路徑 (自行指定)
 writeable = yes                  //是否可寫入
 printable = no                   //是否允許列印
 create mode = 664                //建立檔案時所給的權限
 directory mode = 775             //建立目錄時所給的權限 




步驟 3. 啟動 Samba 服務

在啟動 Samba 服務以前請先測試設定檔 smb.conf 中語法是否正確。
testparm                     //測試看所更改的內容是否符合 Samba 的語法
cd /usr/local/etc/rc.d       //切換路徑
cp samba.sh.sample samba.sh  //複製一份並叫為 samba.sh
/usr/local/etc/rc.d/samba.sh //啟動 Samba 服務
ps ax                        //查看系統的執行序
 /usr/local/sbin/smbd -D      //處理檔案分享和列印分享服務
 /usr/local/sbin/nmbd -D      //處理 wins 名稱解析服務及 NT Browser Service




步驟 4. 建立 Script (addmachusr.sh)

建立 Windows Client 要加入 Samba 所建立網域的 Script (建立電腦帳戶及使用者帳戶於 PDC 中),新增一個群組 MACHINE (自行決定)、及新增帳號 (client 要登入網域的帳號)、client 要如何加入 domain 的步驟及方法 (有些還需要上機碼) 參考網址讓 Win2k pro/svr/xp-pro 登入 Samba 網域
cd /usr/local/sbin    //切換路徑
vi addmachusr.sh      //編輯 addmachusr.sh 內容如下(執行指令並將結果寫入addmach.log)
 #!/bin/sh
 /usr/sbin/pw useradd $1 -w no -c MACHINE -d /dev/null -g 30000 -i 32000,32767  -s /sbin/nologin >> /var/log/addmach.log 2>&1




步驟 5. 建立登入 Batch File (logon.bat)

Samba 建立 PDC 完成後我們可建立 Logon Batch File 讓 Windows Client 登入時會執行相關指定動作 (例如 掛載分享磁碟機)。
NET TIME \\pdc/SET /YES       //與 Samba 伺服器對時
NET USE L: \\pdc\%USERNAME%   //連到自已的家目錄 (網路磁碟機)
NET USE P: \\pdc\public       //連到 Public 的分享磁碟 (網路磁碟機)
REM pause




4、參考




5、Me FAQ

Q1. 無法加入 Domain,提供的證件與現有的證件組衝突?

Error Message:
當加入網域時輸入 domainadmin 的帳號及密碼後出現如下圖錯誤?


Ans:
原因在於此台電腦已經跟 Samba as PDC 那台有連線了,利用 net use 把跟 PDC 的連線給中斷吧,下圖的 PDC 名稱為 dc01。




Q2. 無法加入 Domain,指定的使用者不存在?

Error Message:
當加入網域時輸入domainadmin的帳號及密碼後出現如下圖錯誤?


Ans:
原因可能在於 Samba 帳號名稱重覆了,因為之前加過帳號後來機器重灌要加入網域時便出現上圖的錯誤,把 Samba 帳號砍掉應該就可順利加入網域了
smbpasswd -x backup       //刪除叫 backup 的 Samba 帳號
 Deleted user backup.




Q3. 無法加入網域 DNS 對應問題?

Error Message:
當要加入 Domain 時卻出現如下圖說 DNS 對應有問題?


Ans:
請啟動 NetBIOS 功能,就可順利加入 Domain。




Q4. 發生 read_fd_with_timeout client 0.0.0.0 read error Socket is not connected 錯誤訊息?

Error Message:
服務運作後在 Log 出現如下錯誤訊息?
smbd19813: read_fd_with_timeout: client 0.0.0.0 read error = Socket is not connected.
smbd19813: getpeername failed. Error was Socket is not connected
smbd19813: 2011/07/01 10:53:07.629907, 0 lib/util_sock.c:1432(get_peer_addr_internal)
smbd19813: 2011/07/01 10:53:07.629808, 0 lib/util_sock.c:474(read_fd_with_timeout)

Ans:
找到這篇 Samba - getpeername,socket,write_data error - The FreeBSD Forums 後在 smb.conf 中的 Global Configuration 區段加上 smb ports = 139 後重新啟動 Samba 服務,之後就沒有再出現此錯誤訊息了,至於此參數的意義可以參考 smb.conf - The configuration file for the Samba suite
文章標籤: