動作

Ob2d samba

出自 Itsmw

OB2D相關文件簡介
Ob2d sqz ob2d sqz系列文件
LinuxDataTrans B2D 主機轉移至 OB2D
APM 網頁與資料庫伺服器
Ob2d https 建立加密網頁通道
MailServer 郵件伺服器
OpenWebmail ob2d之網頁郵局
RSync 遠端備份
Ob2d drbl ob2d上安裝企鵝龍
Ob2d samba ob2d上的網路芳鄰
OB2D VPN ob2d上建立虛擬通道
OB2D Iptables 防火牆概說
OB2D NAT 用 OB2D 架 NAT 主機
Link Control 防火牆連線控管

簡介

  • 在 OB2D 上建置網路芳鄰伺服器
  • 本範例建置原則
  1. OB2D 預設採用 utf-8 編碼
  2. 使用者必須使用帳號密碼登入
  3. 登入後, 會有一個共用資料區, 與個人資料區。如同其名, 共用資料區, 是所有使用者皆具讀寫權的一個資料夾, 不過它具有「不同 user 建置的檔案, 不可互刪」功能。
  4. 共同資料區會有資源回收筒及檔案存取記錄功能

因應e化教室網路架構建議

校內網路建議書
  • 若在 e 化教室,要利用網芳存取出版社光碟之 iso 映象檔,那麼會造成大量網路傳輸需求,因此學校網路架構必須要小改一下才行,以下是建議圖。



安裝

安裝指令

  • root@ob2d:~# apt-get update
  • root@ob2d:~# apt-get install samba


安裝選項之建議

  • 群組/網域:workgroup
    Windows 預設的群組名稱為 workgroup
  • 使用密碼加密檔:
  • 要修改 smb.conf 以使用 DHCP 取得 WINS 設定嗎?
  • 您想如何執行 Samba ? 背景服務
  • 要建立 samba 密碼資料庫 /var/lib/samba/passdb.tdb 嗎?
    samba 3.0預設密碼庫已改為 passdb.tdb


修改 /etc/samba/smb.conf

  • 找到 [global] 區塊, 並確認以下設定
netbios name = ob2d
server string = %h server
security = user
invalid users = root
syslog = 3
  • 說明
    1. security = user :使用者必須要有帳密才可登入,與 「map to guest = bad user」意思相反,所以這兩者只有擇一設定
    2. 若加上 map to guest = bad user 這個參數,可以讓使用者不必登入便可看到共用資料區, 不過這樣會有資安風險
  • 若是 ob2d/ubuntu ,預設採 utf-8 編碼時,必須在 [global] 區塊加以下參數,這樣 Windows XP/7 才可以看到中文檔名。
display charset = UTF8
dos charset = cp950
unix charset = UTF8


  • 找到 [homes] , 並確認以下設定
[homes]
   browseable = no
   writable = yes
  • 說明
    本處設定意旨:每個 user 登入後,就只能看到並寫入自己的資料夾,無法瀏覽其他帳號。若配合下面 share 的設定,也僅會多出 share 共用資料夾供其使用。


  • 加上共用資料區 [SHARE] , 至最下方
[SHARE]
   comment = Share files
   public = yes
   browseable = yes
   locking = no
   path=/var/samba
   writable=yes
   create mask = 0644
   directory mask = 0755
   # 載入 檔案存取記錄及資源回收筒 模組
   vfs object = audit recycle
   # 在將檔案移入 資源回收筒 時,要建立相對應的目錄結構
   recycle: keeptree = yes
   # 資源回收筒 之相對路徑。後面的 %u 則為使用者帳號。
   recycle: repository = Recycle/%u
   # 不進行 資源回收 的檔案類型
   recycle: exclude = .tmp|.temp|.o|.obj
   # 若有相同檔案名稱時,則加以編號識別
   recycle: versions = yes
  • 說明1
    create mask = 0644 (預設值)
    使用者建立檔案時, 自動賦予別人可看不可刪 (644) 權限, 當然必須搭配 /var/samba 之 1777權限
  • 說明2
    directory mask = 0755 (預設值)
    使用者建立資料夾時, 自動賦予 0755 權限, 別人也可以看到自己寫入的檔案
  • 說明3
    [SHARE] ,就是資料夾名稱,可以用中文命名。以本範例來說,Windows XP在網芳要直接連接此資料夾的做法如下:「 \\ob2d\share
  • 說明4
    vfs object = audit 代表啟動稽核模組,系統會把該資料夾底下檔案存取的時間點與身份記錄在 syslog 內,當然必須配合 syslog 的設定值大於 3 才可以。
  • 說明5
    在 SHARE 資料夾內建立 "資源回收筒(Recycle Bin)" 時,若有檔案被使用刪除,Samba 會在 /var/samba 底下自動建立 Recycle 資料夾,並把檔案丟進去。但這個自動建立的資料夾,卻可只限第一個登入之 user 所有(資料夾權限),因此造成其他 user 無法取用 Recycle 功能。因此,建議網管,一開始便事先建立此一資料夾,並 chmod 為 1777。



其他設定

開機啟動

  • root@ob2d:~# ntsysv
    找到 samba , 前面加上「*」


資料夾 /var/samba 處理

  • root@ob2d:~# cd /var/samba
  • root@ob2d:/var/samba# mkdir Recycle
  • root@ob2d:/var/samba# cd /var
  • root@ob2d:/var# chmod -R 1777 samba
    把 /var/samba 及底下之 Recycle 資料夾改成特殊權限 1777 , 便可令不同使用者彼此不可以互刪對方的檔案
  • 建議共用資料區內各處室資料夾要事先建好, 並設成 1777(下面有詳細說明)
  • root@ob2d:~#


Samba帳號管理

  • 使用 pdbedit 管理帳號
    使用時機:此帳號是在 samba server 安裝後才經由 adduser 手動建立
  1. 此帳號在 Linux 上必須是存在的, 否則請先用 adduser 新增
  2. 新增帳號
    root@ob2d:~# pdbedit -au username
  3. 刪除帳號
    root@ob2d:~# pdbedit -xu username
  4. 列出帳號
    root@ob2d:~# pdbedit -L
  • 使用 smbpasswd 指令修改密碼
    • 使用時機:
    1. Samba server初建時已大量自動匯入, 但密碼因不明原因無法登入時
    2. 曾用 pdbedit新增過,但有修改密碼的需求時
    • 使用方法
      root@ob2d:~# smbpasswd username
  • 大量建帳號
    筆者已寫好一個適合 OB2D 使用的大量建帳號(含刪除)之 shell script 檔案位置在
    http://myip.tw/download/lna.tar.gz
    請自行下載, 使用說明在 readme.txt 之內。


利用 Openwebmail 讓使用者自行修改 SAMBA 密碼

  • 安裝 OpenWebmail 的方法, 請參考筆者另文:Ob2d_openwebmail
  • 修改 /usr/lib/cgi-bin/openwebmail/etc/defaults/auth_unix.conf
change_smbpasswd          yes


共用資料區補充說明

 共用資料區內各人員處室之資料夾必須事先建立, 並設好 1777 權限。因為 directory mask 無法設成 1777 (那是 root 權限),因此 directory mask 設成 777 或 1777,系統皆當成 777 ,使用者登入後,在 share 資料夾所新增的資料夾都會互刪檔案的困擾,設成 755 ,別人連檔案都無法複製進入,因此才會有上述之建議。


共用資料區檔案變更記錄

若要追蹤使用者對共同資料的所有行為,請先注意以下事項

  1. 個別使用者,使用自己的帳號密碼登入
  2. smb.conf 內的 syslog 參數必須 >= 3;例 syslog=3
  3. [SHARE] 分享區的設定,必須再加 vfs object = audit


使用者存取行為追踨,只要去查詢/var/log/syslog即可。以下,筆者把使用者從登入、檔案存取,直至中斷連線的過程列舉如下:

Oct 16 11:00:03 dns smbd[3850]: [2009/10/16 11:00:03, 1] smbd/service.c:make
_connection_snum(642)
Oct 16 11:00:03 dns smbd[3850]:   yh-m800 (220.130.230.77) connect to service SHARE initially 
as user yh (uid=1003, gid=1003) (pid 3850)
Oct 16 11:00:03 dns smbd_audit[3850]: connect to service SHARE by user yh
Oct 16 11:00:03 dns smbd_audit[3850]: opendir ./
Oct 16 11:00:03 dns smbd_audit[3850]: opendir .
Oct 16 11:00:04 dns smbd_audit[3850]: open . (fd 27)
Oct 16 11:00:04 dns smbd_audit[3850]: close fd 27
Oct 16 11:00:08 dns smbd_audit[3850]: opendir .
Oct 16 11:00:08 dns smbd_audit[3850]: opendir ./
Oct 16 11:00:08 dns smbd_audit[3850]: opendir .
Oct 16 11:00:08 dns smbd_audit[3850]: opendir ./
Oct 16 11:00:08 dns smbd_audit[3850]: [2009/10/16 11:00:08, 0] smbd/service.c:make_connection(799)
Oct 16 11:00:08 dns smbd_audit[3850]:   yh-m800 (220.130.230.77) couldn't find service desktop.in
Oct 16 11:00:09 dns smbd_audit[3850]: opendir .
Oct 16 11:00:09 dns smbd_audit[3850]: opendir ./
Oct 16 11:00:09 dns smbd_audit[3850]: opendir .
Oct 16 11:00:09 dns smbd_audit[3850]: opendir ./
Oct 16 11:00:09 dns smbd_audit[3850]: [2009/10/16 11:00:09, 0] smbd/service.c:make_connection(799)
Oct 16 11:00:09 dns smbd_audit[3850]:   yh-m800 (220.130.230.77) couldn't find service desktop.in
Oct 16 11:00:09 dns smbd_audit[3850]: opendir ./
Oct 16 11:00:09 dns smbd_audit[3850]: [2009/10/16 11:00:09, 0] smbd/service.c:make_connection(799)
Oct 16 11:00:09 dns smbd_audit[3850]:   yh-m800 (220.130.230.77) couldn't find service shar
Oct 16 11:00:09 dns smbd_audit[3850]: opendir ./
Oct 16 11:00:09 dns smbd_audit[3850]: opendir ./
Oct 16 11:00:10 dns smbd_audit[3850]: unlink Next stop unit2               Worksheet.docx
Oct 16 11:00:10 dns smbd_audit[3850]: opendir .
Oct 16 11:00:10 dns smbd_audit[3850]: unlink Next stop unit2               Worksheet.doc
Oct 16 11:00:10 dns smbd_audit[3850]: opendir .
Oct 16 11:00:11 dns smbd_audit[3850]: opendir .
Oct 16 11:00:37 dns smbd_audit[3850]: opendir .
Oct 16 11:00:37 dns smbd_audit[3850]: open year2009封面.odt (fd 27) for writing
Oct 16 11:00:37 dns smbd_audit[3850]: fchmod_acl year2009封面.odt mode 0x1e4 failed: Operation not supported
Oct 16 11:00:48 dns smbd_audit[3850]: close fd 27
Oct 16 11:00:48 dns smbd_audit[3850]: opendir ./
Oct 16 11:00:48 dns smbd_audit[3850]: open year2009封面.odt (fd 27)
Oct 16 11:00:49 dns smbd_audit[3850]: close fd 27
Oct 16 11:00:58 dns smbd_audit[3850]: [2009/10/16 11:00:58, 1] smbd/service.c:close_cnum(835)
Oct 16 11:00:58 dns smbd_audit[3850]:   yh-m800 (220.130.230.77) closed connection to service SHARE
Oct 16 11:00:58 dns smbd_audit[3850]: disconnected
  • 註:本方法 b2d server 也適用



Windows XP 連線

 若依上述設定(未指定 netbios name)時, 系統會以 hostname 為預設的 netbios name, 因此 windows xp 要找到本台 samba server , 除了可以透過工作群組外, 建議直接在網址列輸入 \\ip address 來登入 SAMBA 主機比較好,若使用 \\netbios_name 常常會有一些怪現象發生。

直接登出

 在 Windows XP, 在網芳已登入的狀態下, 要使用另一個帳號登入時, 必須把整台電腦登出才行,極不方便。不過,其實也可以不必那麼麻煩,只要下指令 net use * /delete 便可自網芳登出。

  • 使用 dos 視窗,下指令 net use * /delete
    會出現「...繼續執行會中斷連線。要繼續執行這項操作嗎?」→「Y」
  • 若要直接登出,不再詢問,只要再加 /yes 即可
    net use * /delete /yes
    建議把它寫成 bat 檔,放在桌面供老師使用。


開機自動載入某一磁碟代號

 開機自動掛載至某磁碟機,需要以下步驟:

  • 建立一個自動掛載批次檔(bat),內容如下
@echo off
net use z: \\ob2d\share "密碼" /user:"帳號"
  • 把這個 bat 檔,丟至 Windows XP 上的啟動區:「開始」/「所有程式」/「啟動」


如何解除被記憶住的網芳密碼

「控制台」/「使用者帳戶」--> 找到剛登入的那個帳戶-->左上角「管理我的網路密碼」
找到網芳主機 --> 刪除

本文小檔案

__NORICHEDITOR__

題名: Title::Ob2d Samba
作者: Creator::itsmw作者群
主題/關鍵詞: Subject::Samba, 網路芳鄰, NetBios
簡述: Description::利用 OB2D 建置具有檔案分享的網路芳鄰伺服器
出版者: Publisher::台南縣教網中心 itsmw 計畫
其他參與者: Contributor::itsmw作者群
日期: Date::2009-9-25
文件類型: Type::08伺服器軟體
資料格式: Format::text/html
文件識別代號: Identifier::http://myip.tw/itsmw/index.php?title=Ob2d_samba
來源: Source::http://myip.tw/itsmw/index.php?title=Ob2d_samba
語言: Language::zh-TW
相關資源: Relation::http://myip.tw/b2ddoc/LinuxBase/
文件涵蓋範圍: Coverage::Linux平台
版權規範: Rights::GNU Free Documentation License 1.2