You are on page 1of 4

Samba

前言:
當 Linux 逐漸被廣泛運用在 Internet 當成各種伺服器如: Mail, Web, DNS, Firewall 等服務時漸漸會發現與 Linux 交
換檔案都需要依靠 ftp 來上傳下載,極為不便利。 Samba 的服務透過 Windows『網路上的芳鄰』來達成資料與印表
機的分享。 這樣便利的服務讓 Linux 也能成為與 Win NT 一樣穩定的檔案伺服器。

應用範例:
1. 常見的 Linux 主機遠端系統備份
2. 公司內部檔案分享及個人網路硬碟
3. 可將 web 目錄提供出來方便網站資料的更新
4. Linux 印表機分享

一、安裝與測試 SAMBA
  A) SAMBA 原始碼的安裝
首先我們要取得 Samba 的軟體,您可以至 RedHat 的網站下載 RPM 的版本,或是至 Samba 的站台下載自行編譯
的版本。
RPM 的安裝:
rpm -ivh samba-2.2.1.i386.rpm
自行編譯的安裝: (通常 tar.gz 為最新的版本)
tar -zxvf samba-2.2.4.tar.gz
cd samba-2.0.7
./configure --prefix /usr/local/samba-2.0.7
( ./configure 有許多的參數,您考以參考其說明 ./configure --help 依自己的需求加入)
make
make install

  B) 常用檔案介紹
/etc/samba/smb.conf Samba 主要設定檔
/etc/samba/smbuser Samba 用戶與 Window 用戶對應表, 利用 smbadduser 程式來新增可登入的帳號
smbadduser <Linux 用戶名>:<window 用戶名> 如: smbadduser user1:user1
/etc/samba/smbpasswd Samba 用戶(密碼)設定檔, 利用 smbpasswd 程式來更改密碼 如: smbpasswd user1
Smbclient Samba 用戶端的應用程式 (有點像是利用文字模式下的 ftp 進入網路上的芳鄰, 可下載上
傳檔案)
smbclient –L //linux  列出 linux 主機上的分享資源
Nmblookup 查詢 samba(Windows 網路上的芳鄰)網路工具, 可查出所有資源分享的主機及 Master.
查詢主控主機 nmblookup –MT workgroup 或是 –T 來查詢所有電腦
Smbmount 當 Linux 要使用網路上的資源時可將遠端的目錄連接成檔案系統中之次目錄
mount mount -t smbfs -o username=denny,password=1234 //linux/public /mnt/winshare/
Smbstatus 顯示現階段 samba 服務的連線狀態

1 LinuxExp - Samba Server


C)系統上線前的環境設定
1. 先將 windows 網路 IP/名稱設定好, 通訊協定需要 TCP/IP, NetBEUI, 需要能 ping 到所有的網路主機
2. Windows 上的工作群名稱主需要與 Samba 吻合不要使用有空白或符號的工作群組名稱
3. Linux 方面則需要將網路 IP 設定好(如由 DHCP 自動分配 IP 請記住 IP 編號!)

D)Linux 印表機的安裝
在 Linux 上請執行 printtool 來設定 LPRng 的印表機服務
  E)/etc/samba/smb.conf 設定檔
# 一個簡易的 samba 設定檔
[global] SMB 主環境設定
workgroup = workgroup 網路上的芳鄰群組名稱
netbios name = linuxserver 主機名稱 (預設環境與系統名稱相同)
server string = Linux Samba Server 系統的註解
hosts allow = 192.168.1. 127. 所允許使用的網段
log file = /var/log/samba/log.%m 紀錄檔的位置
max log size = 50 紀錄檔限於 50K 內
status = yes 啟用狀態模式 ON

[www_files] 目錄分享設定
comment = This is my homepage 說明目錄的地方
path = /usr/local/apache/htdocs 實際目錄的位置
read only = no 是否唯讀? No 就是可以寫入
public = yes 公開? Yes 就是所有人都可使用

  F)testparm 測試 config file


直接下指令 “testparm” 來測試 smb.conf 設定檔的語法, 如果有發現錯誤則會提出警告,正常的情形會列出資源分
享的清單。
  G)啟動 smbd and nmbd
設完上述的資料後就可以正式開啟 samba 的服務了! (start = 啟動, stop = 暫停, restart = 重新啟動)
手動開啟方式 : /etc/rc.d/init.d/smb start
每次更動 smb.conf 都必須執行 /etc/rc.d/init.d/smb restart 新的設定才會生效‧
如果要設為下次系統開啟時自動啟動請修改 ntsysv 將 smb 打勾即可!
  H)帳號的建立
判斷是否需要為每個用戶在主機建立帳號
如果要建立個人的硬碟空間則需要在主機上建立 account. 如果只需要使用到公開的分享資料夾則不需要(但這又
要依照 samba 認證的方式而訂).
smbadduser smbadduser <Linux 用戶名>:<window 用戶名> 如: smbadduser user1:user1
smbpasswd Smbpasswd user1 設好後更改新密碼
  I)Win2k 與 NT 主機帳號管理
所有 win2000 及 NT 主機必須要在 samba 建立主機帳號才可以加入屬於 samba 所管理的網域‧新版的 2.2.x 已經
有支援自動建立的功能‧ 不需要手動設定 NT 主機帳號,但手動的方式還是可以配合使用‧

2 LinuxExp - Samba Server


add user script = /usr/sbin/adduser -n -g Machine -c Machine -d /dev/null -s /bin/false %m$
手動的方式: (1. 先在 passwd 檔案加入此主機名稱 會有’$’符後在後面, 2. sambpasswd 也要加入主機帳號
1. adduser -g machines -c NTMachine -d /dev/null -s /bin/false -n ntstation$
2. smbpasswd -a -m ntstation$

 J)查看系統啟動 Log 紀錄檔


所有的系統紀錄檔都在 /var/log 的目錄下面, samba 的服務由於有很多紀錄檔所以又有一次目錄 /var/log/samba
log.smbd(紀錄有每次啟動的時間), smbd.log, nmbd.log (主系統訊息), 電腦連線主機名稱.log (每台電腦連線的紀錄)
  K)查看系統分享的資源
smbstatus
  L)Linux 系統用戶端的連結
請參考前面指令介紹 smbclient, mount, smbmount
  M)Windows 系統用戶端的連結
首先登入到 windows 的開機畫面必須使用有效認證的帳號名稱、再由網路上的芳鄰瀏覽(也可利用文字模式 net
view, net use 等指令), 或檔案總管(file://192.168.2.100) 來連結.
C:\>net use h: \\linux\denny
指令執行成功。
C:\>h:
H:\>dir/w
磁碟區 H 中的磁碟是 denny
磁碟區序號: 052E-05F6
目錄: H:\
[.] [..] [新資料夾] mail_server.tif
中國功夫.doc 台北餐廳.doc 許先生資料.doc
4 個檔案 106,076 位元組
3 個目錄 7,291,797,504 位元組可用

Troubleshooting (問題排除)
 如果網路上的芳鄰看不到 主機的 netbios 名稱請等候 48 分鐘. 或是先用尋找電腦的方式來搜尋電腦.
 請以中文字『許信良』『中國功夫』『餐廳』來測試中文相容問題
 中文字的支援
client code page = 950
preserve case = yes
valid chars = 33 35 36 37 38 39 40 41 45 48 49 50 51 52 53 54 55 56 57 64 97:65 98:66 99:67 100:68 101:69 102:70
103:71 104:72 105:73 106:74 107:75 108:76 109:77 110:78 111:79 112:80 113:81 114:82 115:83 116:84 117:85 118:86
119:87 120:88 121:89 122:90 94 95 96 123 125 126 127 255
  印表機的列印
[Printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
群組的使用管理
在目錄分享設定裡可以使用 write list = @group 來設定某群組的使用權限,請參考 vigr 來設定群組‧

3 LinuxExp - Samba Server


二、Windows 環境與 Linux 的整合
A)Linux 和 Windows 上的名稱管理
網路環境最好能利用 wins 或是 DNS 來解析所有在網路芳鄰的電腦名稱(也可加快更新及蒐尋電腦的速度)
B)使用 Windows NT PDC 為帳號認證主機
#security 欄位設為 server
security = server
# 設定 PDC 主機名稱為 password 認證主機
password server = PDCserver

  C)使 SAMBA server 加入 NT 網域


必須在 Windows Server PDC 端加入 Samba Linux Server 名稱 (請參考 NTServer 使用手冊)

  D)設定 SAMBA 為認證 PDC 主機


在 [global] 的最後一段加入, 如有重複要替換掉原有設定!
domain admin group = root
status = yes
share modes = no
security = user
# OS 等級越高表示管理優先權利越上層 win NT 是 34, 所以只要比 34 更高即可替代 NT.
os level = 65
#設定為 local 瀏覽器
local master = yes
# 設定從 subnet 中取得瀏覽表
domain master = yes
# 設定為強制性的主瀏覽器
preferred master = yes
# 提供 Windows9x workstations 來登入
domain logons = yes

三、Linux 檔案權限
  首先您登入時必須要屬於某個網域才能啟用 permission 權限管理‧ 例如, Server A 屬於網域 masterA 的管轄(也就是說
ServerA 的資源分享是在您擁有 masterA 網域上的帳號下才能夠使用)預設的檔案權限基本上受限於 Linux 原始的檔案權限,
再配合上主控者(PDC)上的使用者來管理所要設定的權限‧ 其中的道理是與 Windows NT 網域的管理方式是一樣的‧

NT acl Support
預設的 nt workstation 都會在 PDC 主機上儲存用戶的環境設定 因此 [Profiles] 必須要加入
nt acl support 才能讓此功能啟用
[Profiles]
path = /home/samba/profiles
create mode = 0744
directory mode = 0755
browseable = yes
guest ok = yes
read only = no
writable = yes
nt acl support = yes

4 LinuxExp - Samba Server

You might also like