一、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主機名稱。
<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~