2008年1月9日 星期三

Samba-3.0.x File share









我們從 Windows 上面 , 可以點選 "網路上的芳鄰" 來瀏覽別台 Windows 電腦分享出來的檔案和資料夾或列表機 , 那 Linux 上面是不是有什麼服務也可以讓 Windows 用戶端從 "網路上的芳鄰" 來取用 Linux 上分享出來的資源呢 ?


那就是 Samba 伺服器了 .









下面用 Fedora Linux Core 8 來說明其安裝及設定方式 ,
FC8 內建的是 Samba-3.0.26a-6.fc8 這個版本 .


安裝:
  1. 若是在安裝系統時要選擇加入 Samba , 請在套件選擇的頁面 ,
    勾選 "伺服器"  ==>  "Windows 檔案伺服器" .

     
  2. 如果系統已經裝好 , 事後才要加裝 Samba 的話 , 請放入安裝光碟 ,

    執行 :
    mount  /dev/cdrom  /media
    cd  /media/Packages

    rpm  -Uvh  Samba-3.0.26a-6.fc8.i386.rpm
    rpm  -Uvh  Samba-common-3.0.26a-6.fc8.i386.rpm


     
  3. 如果系統可以連上 Internet 的話 , 也可以用 Yum 來安裝

    執行 :
    yum  install  samba  samba-common
    ( Yum 會下載系統合用的最新版本 , 所以版本號可能會有些不同 )



啟動 , 停止 , 重新啟動:

舊版的時候是啟動 Samba , 它會自動幫我們啟動 samba 用的二個服務 ,
這一版則是分開來 , 請執行 :


啟動
service  smb  start
service  nmb  start



停止
service  smb  stop
service  nmb  stop



重新啟動
service  smb  restart
service  nmb  restart
 









設定:


Samba 的主要設定檔為  /etc/samba/smb.conf

下面列出幾個簡單常用的參數 , 其它就得花點時間 , 查查 man 囉 !


設定檔中 , 分為兩大部份 , Global Settings 及 Share Definitions ,
就是整體的設定及分享資料夾的定義 .


# ================ Global Settings =====================


workgroup = mygroup
#  就是 Windows 中的工作群組或 Domain 的意思 .

server string = Samba Server Version %v
#  這台主機的描述 , 就是網路芳鄰中看到的名字 . 最後的 '%v' 是變數 , 其值是 Samba 的版本 .

netbios name = FEDORA8
#  就是 NetBios Name 囉 !  在網路芳鄰中看到的是電腦名字後面 () 的文字 .

hosts allow = 127. 192.168.12. 192.168.13.
#  設定那些 Client 可以連上來 .

dos charset = cp950
#  Client 系統所採用的語言編碼 , cp950 是指 Big5 繁體中文碼 , 目前的 Windows 都是用 Big5 .
#  此參數預設未寫在設定檔內 , 請自行新增在 Global 段落 .

security = user
#  認証採用的方式 , user 就是要使用者認証 , share 就是不用認証 .
    server , domain 則是密碼在別台主機上 .



# ================ Share Definitions =====================

#  以下就是要分享的資料夾的相關設定 , 每個資料夾設定皆以 [分享名稱] 為開頭 ,
#  可分別依據不同須求設定其存取權 .


[Doc Data]   #  分享一個資料夾 , 在網路芳鄰中看到的名稱為 'Doc Data' .
comment = Doc Directories   #  這個資料夾的說明 .
path = /data    #  這個資料夾在系統中的絕對路徑 .
browseable = yes    #  設定是否可瀏覽這個資料夾內容 .
public = yes    #  設定是否看得到這個資料夾 .
writable = yes    #  設定資料夾內是否可執行寫入的動作 .
read only = no    #  設定這個資料夾是否為 "唯讀" .
valid users = user-name    #  設定誰可以進入這個資料夾 .
valid users = @group-name    #  設定哪一個使用者群組可以進入這個資料夾 .
guest ok = yes    #  可用訪客帳號登入


以上各參數不一定要全部都設定 , 也還有更多的參數這裡未列出來 ,
詳細參數說明 , 請問那個男人 .............( man  smb.conf )


註 : 要注意的是 , 就算在 Samba 中設定某一分享資料夾是可寫入 , 但系統中這個資料夾的權限沒有相對開出來的話 , 使用者則還是一樣無法在資料夾中寫入資料 .



================= End ==================================








設定好了以後 , 可以執行 tespparm 這個指令 ,
它會幫我們檢查 smb.conf 檔是否有設定錯誤 , 然後它會顯示我們設定的參數列表 .
可以執行 testparm  -v 這個指令 , 它除了會檢查是否錯誤及列出我們設定的參數 ,
還會把我們沒有設定到 , 但預設會執行的參數一並列出 .








================= User Password =========================


如果設定的 Samba Server 是需要做使用者認証 ,
就是上面參數 security = user , 而不是 security = share .
那就一定要為 Samba 建立起使用者帳號管理 .


Samba 的使用者必為系統使用者 ,
但系統使用者不一定都可使用 Samba .......................................說啥~!?

譬如 : 要讓 user 這個人可以從 Windows 網路芳鄰存取 samba 分享的資料夾 ,
           就必須在 Linux 上先建立 user 帳號 , 然後再建立 user 在 samba 上的帳號 .
           若 user2 只能收 Linux 上的信但不能使用 samba ,
           就只要在 Linux 上建立 user2 帳號即可 .


Samba 2 版以前的帳號管理是用 smbpasswd , 密碼檔為文字檔 , 使用者多的話 , 效率較差 .
Samba 3 版的使用者帳號管理預設是使用後端 tdbsam 資料庫管理機制 .


管理 Samba 使用者是用 pdbedit 這個指令 , 參數满多 ,
下面提列幾個簡單常用的參數 : (詳細使用方式請參考 man pdbedit)


pdbedit  -L                              #  列出使用者列表 .
pdbedit  -Lv                            #  列出詳細的使用者列表 .
pdbedit  -Lw                           #  列出同 smbpasswd 格式的使用者列表 .
pdbedit  -a  user                    #  新增 user 這個帳號 .
pdbedit  -x  user                    #  刪除 user 這個帳號 .
pdbedit  -c  "[D]"  -u  user   #  暫時停用 user 這個帳號 .
pdbedit  -c  "[]"  -u  user      #  恢復使用 user 這個帳號 .


































沒有留言: