2008年11月20日 星期四

透過 Samba 伺服器分享目錄及印表機

透過 Samba 伺服器分享目錄及印表機
透過Samba server 可以讓你的Unix 與windows 系統 透過『網路上的芳鄰』,來分享資源,互傳資料,真的很方便, 最近是因為之前workstation 上接了一台SCSI的CDwriter 掛了, 透過Samba 真的很方便又經濟。

Linux 上Samba 伺服器的設定
* Linux IP : 192.168.1.10 , hostname : linux10
* Windows IP : 192.168.1.31, hostname : pc31
* 工作群組: CADhome
* 分享目錄, Linux10:/usr/local/cadhome
* User : subby

1. Modify /etc/lmhosts
%vi /etc/lmhosts
127.0.0.1 localhost
192.168.1.10 linux10
192.168.1.31 pc31

2. Samba 的設定--修改 smb.conf 設定檔
接著請在 /etc/samba/smb.conf 設定檔中, 如下修改:
[global]
Client code page = 950 ç可以看見中文!
Workgroup = CADhome ç 須與PC的工作群組相同
Security = user ç 必須設定samba user
Encrypt passwords = yes
Smb passwd file = /etc/samba/smbpasswd ç samba user password

[cadhome ] 以下是參考原先 /tmp 分享目錄設定值, 所自行加上的內容
comment = Share Dir 此分享目錄的註解說明
path = /usr/local/cadhome 指定分享的目錄為 /usr/local/cadhome
readonly = no 不具有"唯讀"屬性,表示可寫入此目錄,此行設定亦可寫為"writable = yes"
public = yes 指定公開此目錄


分享唯讀的目錄:
如果您希望分享的目錄只開放讓使用者讀取, 但不能寫入, 則請編輯 /etc/samba/smb.conf 設定檔, 並如下修改:
. . .
[download]
comment = Readonly Dir
path = /download
readonly = yes ← 將唯讀屬性設定為 "yes", 此行設定亦可寫為 "writable = no"
public = yes
. . .

3. 測試 smb.conf 的語法
%testparm
Load smb config files from /etc/samba/smb.conf
Processing section “[cadhome]”
4. 啟動 Samba 伺服器
存檔後, 請執行以下指令, 重新啟動 Samba 伺服器, 即可使用分享的目錄:
[root@smb samba]# /etc/rc.d/init.d/smb start ←使用"restart"參數,重新啟動Samba伺服器

啟動 Samba 伺服器或重新載入設定檔後, 即可看到分享的目錄:

5. 開始設定 User Password
% smbpasswd –a subby ← add samba user
Notes: 此user 要與你PC 所用的username 一樣.

6. 確認分享目錄的權限
分享可讀寫的目錄, 使用者存取 Samba 分享資源的權限, 由以下兩者共同決定:
1. 該檔案或目錄在 Linux 中的權限。
2. 該檔案或目錄在 Samba 設定檔中的設定值。

因此若想分享可供所有使用者讀、寫的目錄, 則必須在 Linux 下先開啟所有使用者對該目錄的讀、寫權限, 並在 Samba 伺服器的設定檔中, 將其設定為可讀寫。例如筆者現有 /upload 目錄, 想將之分享出來, 可依照下列步驟操作。

確認分享目錄的權限
請在修改設定檔之前, 先確認一般使用者對此目錄具有讀取、寫入及執行的權限:
[root@smb /]# ls - l
總計 168
. . .
drwxr-xrwx 2 root root 4096 2007-08-01 01 17:12 cadhome
一般使用者對此目錄的權限
. . .

Windows 查尋『網路上的芳鄰』:
7.設定使用者有不同權限的群組
除了限制可以讓所有使用者讀取或寫入以外, 有時某個目錄可能需要設定有些使用者可以寫入, 而其他使用者只有讀取權限。
要達到此需求並不難, 只要搭配 Linux 的群組權限及檔案權限即可做到。例如筆者想要分享 Samba 分享 secret 目錄, 並限制只有 wyw、ywwang、candy、tony 四人可進入, 其中 wyw 與 ywwang 具讀寫權限, candy 與 tony 僅有唯讀權限。

此時需如下新增兩個群組:
[root@smb ~]# groupadd flagadmin 新增一個名為 flagadmin 的群組
[root@smb ~]# groupadd flaguser 新增一個名為 flaguser 的群組

筆者將設定 flagadmin 為管理群組, 在此群組中的使用者可以讀寫 secret目錄, 而 flaguser 群組的使用者則只能讀取 secret 目錄。所以接著如下為各個使用者設定群組:
[root@smb ~]# usermod -G flagadmin wyw 將 wyw 加入 flagadmin 群組
[root@smb ~]# usermod -G flagadmin ywwang 將 ywwang 加入 flagadmin 群組
[root@smb ~]# usermod -G flaguser candy 將 candy 加入 flaguser 群組
[root@smb ~]# usermod -G flaguser tony 將 tony 加入 flaguser 群組

然後新增 secret 目錄並設定權限:
[root@smb ~]# mkdir /var/secret 建立 /var/secret 目錄
[root@smb ~]# chgrp flagadmin /var/secret / 設定此目錄的群組為 flagadmin
[root@smb ~]# chmod 2775 /var/secret ← 設定 flagadmin 群組可讀寫此目錄, 權限最
前面的 "2" 表示設定 sgid 權限, 所有新增
的檔案將繼承此目錄的群組, 如此才能讀寫其他人建立的檔案
最後於 /etc/samba/smb.conf 新增 secret 目錄的分享設定:
. . .
[secret]
comment = secretspace
path = /var/secret
public = no
guest ok = no
forcecreatemode = 0775 設定所有新建檔案的權限為 775
validusers = @flagadmin , @flaguser 設定只有 flagadmin 與 flaguser 群組才可以進入此目錄
writelist = @flagadmin 設定只有 flagadmin 群組才可以寫入此目錄
readlist = @flaguser 設定 flaguser 群組只有唯讀權限
. .
完成後, 執行 /etc/rc.d/init.d/smb restart ; /etc/rc.d/init.d/nmb start 重新啟動 Samba, 使新設定生效, 如此 secret 目錄便可以依照不同使用者而給予不同的權限了。

8.分享印表機
要設定透過 Samba 分享 Linux 主機上的印表機非常簡單, 與分享目錄的方式相同。請先在 Linux 主機上安裝好印表機, 接著在 /etc/samba/smb.conf 檔中加入以下內容 (存檔後需重新啟動 Samba):
[LaserJet5] 印表機顯示的名稱
path = /var/spool/samba 印表機的佇列, 一般指定此路徑即可
readonly = no 是否只能唯讀
guestok = yes 允許匿名存取
printable = yes 是否可列印
printername = hplj5 此為您在安裝印表機時所設定的印表機名稱

Windows 上的設定
* Linux 的 /etc/samba/smb.conf file 中, 設定的工作群組, 必須與你的Windows內的工作群組相同.
* 登入Windows 時, Login username 與password, 一定要使用smbpasswd檔案中有的username/password 相同.

呵呵, 這樣就OK了, 只要以透過『網路上的芳鄰』來連線及可共享資源.

沒有留言: