2011年7月1日 星期五

Ubuntu - Samba - 安裝與設定實作

一、smb.conf 設定 (sudo vi /etc/samba/smb.conf)
    1. 參考網站:


    2. 設定原則 (我的設定)
  • 原則 (1) : 用戶端需要輸入正確的帳號、密碼後,才能登入 Samba 伺服器。
  • 原則 (2) : 建立 2 個 Linux 使用者,分別 [tim]、[lcy],Linux 密碼分別為 [tim]、[lcy];而 Samba 密碼分別為 [mit]、[ycl]。
  • 原則 (3) : 建立一公用目錄 (/mnt/HDD30G/public),且 share name 為 [ public],讓 [tim,lcy]用戶皆可存取 (write/read)。
  • 原則 (4) : 使用者在登入後, 只能瀏覽自己的家目錄&公用目錄

    3. 設定參數 (我的設定)
    【 global】 設定
  •  Samba 伺服器的工作群組:workgroup = WORKGROUP
  • 用戶端登入成功後,會顯示「KSLAMP server (Samba, ubuntu)」文字, KSLAMP是我的 Ubuntu主機名稱:server string = %h server (Samba, ubuntu)  ==>[%h]它是一個變數,並且暫存 Ubuntu主機名稱。

  •  限定某網段的 IP 可登入 Samba 伺服器:
          <1> interfaces = 192.168.1.0/24 eth0
          <2> bind interfaces only = yes
  •  用戶端需要輸入正確的帳號、密碼後,才能登入 Samba 伺服器:
           <1> security = user
           <2> encrypt passwords = Yes ==>密碼要加密
           <3> passdb backend = tdbsam ==>密碼資料庫格式


    【 Domains】 設定 :NA (因為只有在內部網路的電腦可使用 Samba, 所以在此不用設定)
    【 Printing】 設定 :NA
    【 Misc】 設定
  • usershare allow guests = yes

    【 Share Definitions】 設定 <<重點!>>
  •  使用者在登入後, 只能瀏覽&寫入自己的家目錄
           [homes]
           comment = Home Directories
           path = /home/%S ==>[%S]它是一個變數,今天用戶[tim]想要存取自己的家目錄,他在Windows命令列輸入"\Samba伺服器IP\tim",輸入密碼認證後,[homes]被取代[tim],並且 [path=/home/tim], [valid users=tim]。
           browseable = no ==>只能瀏覽自己的家目錄
           read only = no ==>可以寫入自己的家目錄
           create mask = 0664 ==>建立檔案的權限為 664
           directory mask = 0664 ==>建立目錄的權限為 664
           valid users = %S

  •  使用者在登入後, 可以瀏覽&寫入公用目錄 [public]
           [public]
           comment = Share to all
           path = /mnt/HDD30G/public
           browseable = yes ==>可以瀏覽公用目錄
           read only = no ==>可以寫入公用目錄 [public]
           create mask = 0664
           directory mask = 0664
           valid users = sysadmin,tim,lcy
           admin users = sysadmin ==>sysadmin為系統帳號名稱
  •    
    4. 儲存 smb.conf 設定檔後,最好測試一下 smb.conf 設定檔是否正確:testparm


    5. 啟用 smb.conf 設定:sudo /etc/init.d/smbd restart


二、建立公用目錄 (/mnt/HDD30G/public)

    1. sudo mkdir /mnt/HDD30G/public
    2. chgrp users /mnt/HDD30G/public ==>開放公用目錄給 users群組
    3. chmod 775 /mnt/HDD30G/public ==>設定公用目錄權限 775
    4. chmod 775 /mnt/HDD30G/public/*.* ==>設定公用目錄內所有檔案的權限 775


三、加入使用者:[tim]、[lcy]
    1. sudo adduser tim ==>adduser 指令除了加入使用者 [tim] 外,還會自動新增一個家目錄 (/home/tim)
    2. adduser tim users ==>將已存在使用者加入已存在群組 users.
    3. sudo useradd -G users tim ==>useradd 指令與 adduser 指令不同,它不會自動新增一個家目錄。
    4. groups tim ==>查詢使用者 [tim]屬於哪些群組
    5. sudo vi /etc/passwd ==>確認剛剛加入的使用者是否已成為 Linux 使用者。


四、自我測試
    1. smbclient -L //192.168.x.x (ENTER) password (不輸入直接按ENTER) ==>匿名登入
    2. smbclient -L //192.168.x.x -U tim (ENTER) password (輸入密碼後,按ENTER) ==>使用者 [tim] 登入測試
    3. 若出現以下畫面,則表示使用者 [tim] 在登入後, 可以瀏覽自己的家目錄&公用目錄




五、若沒有出現上述畫面時,該如何做呢? 您必須先檢查 Samba帳戶資訊,為何要檢查?不是已經建立使用者 [tim], 並已經確認他是 Linux 帳戶了嗎....,沒錯,Samba帳戶與 Linux 帳戶各自儲存於不同地方:Linux 帳戶是儲存在 /etc/passwd, 而 Samba帳戶是儲存在資料庫中,還記得 smb.conf 參數_passdb backend = tdbsam--> 簡言之,使用者要進入 Samba 伺服器,則他必須是 Linux 使用者,而且他也必須是 Samba使用者之一。

>> 新增/查詢 Samba 帳戶命令 (pdbedit), 修改 Samba 使用者密碼命令 : smbpasswd

>> sudo pdbedit -L or sudo pdbedit -Lvw ==>查看 Samba 帳戶資訊
>> sudo pdbedit -a -u tim ==>新增 Samba 帳戶--[tim]


~Done~

    沒有留言: