2012年9月3日 星期一

[轉]Samba

內容

[Samba] 為啟動 SMB/CIFS (Server Message Block/Common Internet File System) 網路協定使 Microsoft Windows 機器能透過此一網路協定來存取 [Samba] Server 上所分享的檔案系統資源 (ex. 檔案、印表機...等)。
對於不同作業系統之間如何進行檔案系統資源的分享,簡述如下:
  • 網路上的芳鄰: Microsoft Windows 機器間用來互相分享檔案系統資源 (Windows <--> Windows)
  • [NFS][Unix-Like] 間用來互相分享檔案系統資源的協定 (Unix-Like <--> Unix-Like)
  • [Samba][Unix-Like] 用來分享檔案系統資源給 Windows 機器存取的協定 (CentOS <-- Windows)

實作環境

  • CentOS 5.1 (Linux 2.6.18-53.1.4.el5)
  • samba-3.0.33-3.7.el5
  • Windows XP Professional

安裝及設定

本次實作將分為二個部份說明分別為 Samba Server 與 Samba Client,及 CentOS 如何存取 Windows 所分享的資源。

Samba Server

步驟1.安裝 samba 套件

利用 yum 指令來安裝 samba 套件
 #yum -y install samba                            //安裝 samba 套件

步驟2.修改 samba 設定檔 (smb.conf)

修改 samba 設定檔 (smb.conf) 內容如下
 #vi /etc/samba/smb.conf                          //修改 samba 設定檔
 [global]                                         //通用設定
 netbios name = Weithenn-smb                      //顯示於 Windows 網路芳鄰的電腦名稱
 workgroup = WORKGROUP                            //顯示於 Windows 網路芳鄰的工作群組名稱
 hosts allow = 127. 192.168.1.18                  //僅允許此來源 IP 位址可存取 Samba 資源 (也可設定允許 IP 網段 ex. 192.168.1.0/255.255.255.0)
 hosts deny = ALL                                 //除了上面允許的 IP 之外禁止其它 IP 存取 Samba 資源
 security = user                                  //安全等級為 user,也就是在 Samba 主機上擁有帳號者才可登入
 encrypt passwords = yes                          //是否對密碼部份進行加密
 display charset = utf8                           //Samba 上所顯示的編碼
 unix charset = utf8                              //Linux 上所顯示的編碼
 dos charset = cp950                              //Windows 用戶端的編碼 (可正確顯示中文)
 [home]                                           //分享設定,屆時顯示分享資料夾的名稱
 comment = Weithenn Samba Files Shares            //分享資料夾的註解
 path = /home                                     //分享路徑
 valid users = weithenn,@smbuser                  //允許 weithenn 使用者及 smbuser 群組可以存取此資料夾
 public = yes                                     //允許使用者登入後可看到此分享資料夾
 writable = yes                                   //允許寫入
 create mode = 664                                //建立檔案的權限 (也就是該檔案在 Samba 中所看到的權限為 664)
 directory mode = 775                             //建立資料夾的權限 (也就是該資料夾在 Samba 中所看到的權限為 775)

步驟3.建立 samba 帳號

設定完成後我們可利用 smbpasswd 指令來建立 Samba 帳號及設定 samba 密碼,下列指令為建立名稱 weithenn 的 samba 帳號。
 #smbpasswd -a weithenn                           //建立 samba 使用者帳號 weithenn 
 New SMB password:                                //輸入使用者帳號 weithenn 的 samba 密碼 
 Retype new SMB password:                         //再輸入一次使用者帳號 weithenn 的 samba 密碼 
 Added user weithenn.                             //新增 samba 使用者帳號 weithenn 成功
新增完成後可查看 samba 的使用者帳號密碼檔案,確定該帳號確實已新增且密碼為加密過
 #cat /etc/samba/smbpasswd
 weithenn:0:52867A67D9C33529AAD3B435B51404EE:96FAFEDB623AA395895B19578404B070:[U          ]:LCT-41CAF287:

步驟4.啟動 samba 服務

在啟動 samba 服務以前我們先將 samba 服務 (smb) 設定為若系統重新開機會自動啟動 smb 服務
 #chkconfig smb on
使用 chkconfig 指令來查看 smb 在各 runlevel 下狀態 (也就是 runlevel 在 2、3、4、5 時會啟動 smb 服務)
 #chkconfig --list |grep smb
 smb             0:off   1:off   2:on    3:on    4:on    5:on    6:off
完成上述設定後便可以啟動 smb 服務
 #/etc/rc.d/init.d/smb start
 Starting SMB services:                                     [  OK  ]
 Starting NMB services:                                     [  OK  ]
檢查服務是否啟動成功,其中 Port 139 為 NetBIOS Session Service 服務而 Port 445 為用於 CIFS Protocol
 #netstat -tnl
 Active Internet connections (only servers)
 Proto Recv-Q Send-Q Local Address               Foreign Address             State
 tcp        0      0 0.0.0.0:139                 0.0.0.0:*                   LISTEN
 tcp        0      0 0.0.0.0:445                 0.0.0.0:*                   LISTEN

Samba Client

以下為說明 Samba Client (Windows、CentOS) 如何存取 Samba 分享資源

Windows Client

上述設定步驟完成後 Windows 只要開啟檔案總管在網址欄輸入 \\<samba_server> 即會跳出必須輸入帳號及密碼的驗證視窗,您只要輸入剛才新增的 Samba 使用者帳號及密碼即可存取 Samba 資源,若以剛才上述步驟設定所填入的值如下
  • 檔案總管網址列輸入: \\weithenn-smb\home
    • /etc/samba/smb.conf 中所設定的 netbios name = Weithenn-smb 及 [home]
  • 驗證視窗欄位輸入
    • 使用者帳號: weithenn
    • 使用者密碼: 123456
若使用命令提示字元則輸入如下 (成功後可將內容存成 Batch File 以利快速設定)
 net use w: \\Samba_Server_IP\home                           //將 Samba 資源連接至 W: 網路磁碟機 (需手動輸入驗證資料)
 net use w: \\Samba_Server_IP\home /user:weithenn 123456     //將 Samba 資源連接至 W: 網路磁碟機 (不需手動輸入驗證資料)

CentOS Client

若是 CentOS 欲存取資源時可利用如下指令來掛載 Samba 所分享的資源
 mount.cifs //Samba_Server_IP/home /mnt/home -o                                       //將 Samba 資源掛載至 /mnt/home (需手動輸入驗證資料)
 mount.cifs //Samba_Server_IP/home /mnt/home -o username=weithenn,password=123456     //將 Samba 資源掛載至 /mnt/home (不需手動輸入驗證資料)
若存取資源完畢要卸載時可執行如下指令即可 (記得先離開 /mnt 下哦)
 umount.cifs /mnt/home

CentOS 存取 Windows 分享資源

Samba Server 是用於 Windows 存取 CentOS (SMB) 機器所分享的資源,若 CentOS 欲存取 Windows 所分享的資源呢?以下先說明實作時的相關條件
  • Windows 電腦名稱: Weithenn-XP
    • 分享資料夾名稱: Shares
    • 可存取 Windows 分享資料夾的使用者帳號: weithenn (請確定該使用者帳號存在於 Windows 機器內)
    • 可存取 Windows 分享資料夾的使用者密碼: 123456
  • CentOS 掛載至本地端檔案系統: /mnt/shares
    • CentOS 帳號密碼檔: /home/weithenn/secret.txt
    • 安全性權限設定: chmod 600 secret.txt
了解後我們修改檔案系統設定檔 /etc/fstab
 #vi /etc/fstab
 LABEL=/1                /                       ext3    defaults        1 1
 LABEL=/home1            /home                   ext3    defaults        1 2
 LABEL=/tmp1             /tmp                    ext3    defaults        1 2
 LABEL=/usr1             /usr                    ext3    defaults        1 2
 LABEL=/var1             /var                    ext3    defaults        1 2
 tmpfs                   /dev/shm                tmpfs   defaults        0 0
 devpts                  /dev/pts                devpts  gid=5,mode=620  0 0
 sysfs                   /sys                    sysfs   defaults        0 0
 proc                    /proc                   proc    defaults        0 0
 LABEL=SWAP-sda6         swap                    swap    defaults        0 0
 //Weithenn-XP/Shares    /mnt/shares cifs user,uid=0,rw,suid,credentials=/home/weithenn/secret.txt 0 0   //加入此行
建立存取 Windows 分享資料夾的帳號密碼檔案,請確定該使用者帳號存在於 Windows 機器內
 #vi /home/weithenn/secret.txt
 username=weithenn
 password=123456
設定完成後可使用 mount 指令來更新目前的檔案系統 (也就是讀取 /etc/fstab 更新)
 #mount -a                                                   //讀取 /etc/fstab 更新
 #df -h                                                      //檢查是否成功存取 Windows 資源
 Filesystem            Size  Used Avail Use% Mounted on
 /dev/sda1             9.7G  2.3G  6.9G  25% /
 /dev/sda7             414G  211G  183G  54% /home
 /dev/sda5             4.9G  139M  4.5G   3% /tmp
 /dev/sda3             9.7G  2.3G  6.9G  26% /usr
 /dev/sda2             9.7G  255M  9.0G   3% /var
 tmpfs                 2.0G     0  2.0G   0% /dev/shm
 //Weithenn-XP/Shares  251G  236G   15G  95% /mnt/shares     //存取 Windows 資源成功




Q1.mount error 112 = Host is down?
Error Meaage:
使用 mount.cifs 指令欲存取 Samba Server 資源時卻出現如下錯誤訊息
 mount.cifs //Samba_Server_IP/home /mnt/home -o username=weithenn,password=123456
 mount error 112 = Host is down
 Refer to the mount.cifs(8) manual page (e.g.man mount.cifs)
Ans:
主因為在 Samba Server 設定檔中忘了將此台 Client IP 加入所導致
 #vi /etc/samba/smb.conf                          //修改 samba 設定檔
 hosts allow = 127. 192.168.1.18                  //僅允許此來源 IP 位址可存取 Samba 資源
修改完設定檔之後只要執行 reload 讓 smb 去重新讀取設定檔資料即可 (不用重新啟動 smb 服務)
 #/etc/rc.d/init.d/smb reload
 Reloading smb.conf file:                                   [  OK  ]

沒有留言:

張貼留言