內容
對於不同作業系統之間如何進行檔案系統資源的分享,簡述如下:
- 網路上的芳鄰: 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
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
#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 ]