【博文推薦】RHEL6.5下部署samba企業級文件服務器實戰
本博文出自51CTO博客Y.weisheng博主,有任何問題請進入博主頁面互動討論! 博文地址:http://yuan2.blog.51cto.com/446689/1588085 |
1. 實驗需求:
1) 使用RPM包安裝samba服務
2) 實現匿名訪問,驗證可以讀寫文件、目錄
3) 實現指定用戶的訪問
4) 實現指定用戶的訪問,并為用戶賦予不同的權限
5) 實現用戶的別名訪問,并測試權限
6) 實現對特定的訪問地址進行限制
7) 實現訪問windows系統中的共享資源
2. 實驗環境:
Linux服務器系統版本:Red Hat Enterprise Linux 6.5 IP:192.168.10.3
Windows客戶機系統版本:Windows 7 Ultimate x64 IP:192.168.10.2
Samba軟件版本:samba-3.6.9
3. 實驗步驟:
基本安裝操作
A. 掛載系統光盤并安裝samba
要安裝samba服務需要從rpm軟件包安裝,rpm安裝包一般放在系統光盤中的Packages目錄中,我們首先用mount命令看一下是否掛載了光盤到系統中
如果沒有掛載,將光盤手動掛載到系統的mnt目錄下
查看光盤已經被掛載
在Packages目錄下找到samba服務的軟件包并安裝
B. 查看samba配置文件
安裝好samba之后我們要想服務器能夠按照我們的意愿工作就要去修改配置文件了
可以用rpm -qc來查看一個已經安裝軟件的文檔安裝位置
發現并沒有顯示conf配置文件,但根據經驗一般conf配置文件都會放在/etc目錄下,查找/etc/samba/目錄,找到主配置文件smb.conf
[root@localhost~]# more /etc/samba/smb.conf 查看文件里面的內容,發現內容很長,并且有很多#號的注釋
我們為了看起來方便,可以過濾掉所有帶#號的行,并把過濾過后的文件內容保存為另外一個文件smb.con:
- [root@localhost ~]# grep -v"#" /etc/samba/smb.conf > /etc/samba/smb.con
查看發現已經有了smb.con文件,建議原來以.conf結尾的配置文件也不要刪除,可以給它改個名字做個備份,以防將來配置出錯還可以把它繼續拿來修改
- [root@localhost ~]# cd /etc/samba #切換到samba目錄
- [root@localhost samba]# mv smb.confsmb.conf.back #將conf文件備份
- [root@localhost samba]# mv smb.consmb.conf #將smb.con改名為smb.conf
實現匿名訪問,驗證可以讀寫文件、目錄
- [root@localhostsamba]# vi smb.conf #打開主配置文件
- [global]
- workgroup = MYGROUP
- server string = Samba Server Version %v
- ; netbios name = MYSERVER
- ; interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
- ; hosts allow = 127. 192.168.12. 192.168.13.
- log file = /var/log/samba/log.%m
- max log size = 50
- security = share
- passdb backend = tdbsam
以上為[global]全局模式的配置內容,其他保持默認即可,我們關心的是如果要實現匿名訪問,只需要修改 security 使安全級別為share(默認的為user)
下面是對share共享目錄進行配置,在配置文件的末尾插入以下行
- [share] #指定目錄的共享名稱
- path= /opt/share #指定共享share這個目錄
- public= yes #public=guest ok,設為yes允許匿名用戶訪問
- browseable= yes #讓匿名用戶可以看到共享內容
- writable= yes #設置可以有寫入的權限
- createmask = 0644 #設置新建文件的權限,表示屬主具有讀寫權限,其他人都只有只讀權限(rw-r--r--)
- directory mask = 0755 #設置新建目錄的權限,表示屬主具有讀寫執行權限,其他人沒有寫入權限(rwxr-xr-x)
A. 修改后的腳本:
- [root@localhostsamba]# mkdir /opt/share #創建share共享目錄
- [root@localhostsamba]# chmod 777 /opt/share #修改權限為777
- [root@localhostsamba]# service smb start #啟動samba服務
- [root@localhostsamba]# netstat -ant #查看網絡端口狀態
139和445兩個samba服務的端口正在被監聽,samba服務是正常的,下面就可以去客戶機上測試了。測試之前,必須把防火墻和selinux關掉
- [root@localhost samba]# service iptables stop
- iptables:將鏈設置為政策ACCEPT:filter [確定]
- iptables:清除防火墻規則: [確定]
- iptables:正在卸載模塊: [確定]
- [root@localhost samba]# setenforce 0
B. 效果驗證:
在客戶機上測試能否ping通服務器
在【開始】菜單的搜索框中輸入\\192.168.10.3,可以看到名為share的共享文件夾
進入文件夾,可以新建文件和文件夾,文件里可以寫入任何內容,文件夾下也能夠再新建文件,和配置文件里的設置是一樣的,匿名訪問成功。
回到服務器,我們查看共享文件夾下匿名用戶訪問時新建的文件,發現屬主和屬組都是nobody,新建的文件權限是644,文件夾的權限是755
nobody是一個系統賬號,匿名訪問新建的就會顯示為nobody
#p#
實現指定用戶的訪問
因為是要指定用戶進行訪問了,所以[global]全局模式里面只需要修改 security
使默認安全級別為user
security = user
下面是根據具體的共享目錄進行配置,在配置文件的末尾插入以下行,新建一個test 的目錄的共享配置,不讓他匿名訪問,只有指定用戶才能訪問
- [test] #指定目錄的共享名稱
- path= /opt/test #指定共享test目錄
- browseable= yes #設置可以看到共享內容
- writable= yes #設置可以有寫入的權限
- createmask = 0644 #設置新建文件的權限,表示屬主具有讀寫權限,其他人都只有只讀權限(rw-r--r--)
- directory mask = 0755 #設置新建文件夾的權限,表示屬主具有讀寫執行權限,其他人沒有寫入權限(rwxr-xr-x)
系統當中的用戶當然也可以訪問共享目錄,但是我們這里希望用samba自己的賬戶來訪問,新建兩個用于samba的賬戶不設置他們的密碼,這樣他們可以作為samba用戶使用但是不能夠登陸系統
- [root@localhost samba]# useradd jery #創建賬戶jery和jene
- [root@localhost samba]# useradd jene
- [root@localhost samba]# smbpasswd -ajery #設置賬戶為samba用戶并設置密碼
- New SMB password:
- Retype new SMB password:
- Added user jery.
- [root@localhost samba]# smbpasswd -ajene
- New SMB password:
- Retype new SMB password:
- Added user jene.
- [root@localhost samba]#
- [root@localhost samba]# pdbedit -L #查看新建的samba賬戶信息
- jery:500:
- jene:501:
- [root@localhost samba]# mkdir /opt/test #創建共享目錄test
- [root@localhost samba]# chmod 777/opt/test #修改權限為777
- [root@localhost samba]# service smbrestart #重啟samba服務,這里也可以使用reload,但是reload是重新加載配置并不會和客戶機徹底斷開連接,這里為了測試用了restart
- 關閉 SMB 服務: [確定]
- 啟動 SMB 服務: [確定]
A. 修改后的腳本
B. 效果驗證
測試之前先要在客戶機上清除之前的連接否則會因為緩存而直接進入共享目錄
在【開始】菜單的搜索框中輸入\\192.168.10.3\test,跳出對話框,輸入jery的賬號和密碼
jery這個用戶可以登陸并且對test共享目錄可以進行讀寫操作
在共享目錄里面新建了一個名為jery的文件,回到服務器查看這個文件的權限,顯示為jery
#p#
實現指定用戶的訪問,并為用戶賦予不同的權限
接著為了測試訪問的用戶的不同權限,在[test]配置中加入以下兩行
- valid users =jery, jene #允許這兩個用戶可以訪問
- write list =jene #只允許jene這個用戶可以寫入
A. 修改后的腳本
B. 效果驗證
[root@localhostsamba]# service smb restart #重啟服務
關閉SMB 服務: [確定]
啟動SMB 服務: [確定]
客戶機上net use * /d清除連接
這次以jery登陸,測試寫入文件
這個時候明明我們設置了只有jene可以寫入為什么用jery登陸進去的時候還是可以寫入文件呢?我們回到服務器上檢查配置文件
所以要使配置生效就必須刪除writable = yes這一行配置
[root@localhostsamba]# service smb restart #重啟服務
關閉SMB 服務: [確定]
啟動SMB 服務: [確定]
清除連接(net use * /d),還是以jery 的身份登陸,發現創建文件的時候被拒絕
回到服務器,寫入一行內容到test文件中:
[root@localhostsamba]# echo "this is test" > /opt/test/test.txt
客戶機上已經有名為test的文件了,當打開這個文件,為它加上一行內容時被拒絕
退出jery,清除連接,再用jene登陸,jene寫入文件和文件夾成功。
#p#
實現用戶的別名訪問,并測試權限
samba目錄下有一個smbusers的文件,這個文件就是設置別名的
[root@localhostsamba]# vi smbusers
打開這個文件,在文件的末尾加上一行 jene = t01 t02 t03 相當于給jene起了三個別名,將后面三個的用戶名都映射到jene,密碼不變,實際登陸的賬號還是jene
接著在主配置文件的[global]中添加:username map = /etc/samba/smbusers配置映射關聯,用戶名就指向了smbusers這個文件中設置的內容
A. 修改后的腳本
B. 效果驗證
[root@localhostsamba]# service smb restart #重啟服務
關閉SMB 服務: [確定]
啟動SMB 服務: [確定]
客戶機清除連接(net use * /d)
用t01賬號登陸 \\192.168.10.3
看到多了一個名為jene的共享文件夾,是因為全局配置中有[homes]家目錄的配置,誰登陸就會把自己的家目錄共享,因為t01映射的還是jene賬號,所以jene登陸時也會看到自己的家目錄也被共享了,在家目錄的共享文件夾中是可以進行任何操作的
在test文件夾中新建一個名為iamt01的文件,回到服務器查看這個文件的屬性,屬主和屬組是jene證明登陸的還是jene,t02和t03登陸也是這樣,這里就不多做測試了
#p#
實現對特定的訪問地址進行限制
若要拒絕誰訪問,只需要在主配置文件的[test]中添加一行:hosts deny = 192.168.10. 10.0.0. #192.168.10.表示192.168.10.0這個網段,讓這個網段的所以主機都不可以訪問,這里設置拒絕兩個網段192.168.10.0和10.0.0.0
A. 修改后的腳本
B. 效果驗證
[root@localhostsamba]# service smb restart #重啟服務
關閉SMB 服務: [確定]
啟動SMB 服務: [確定]
客戶機清除連接(net use * /d)
這次使用t02這個賬號來訪問,可以訪問其他共享文件夾但是因為客戶機ip地址為192.168.10.2,在test共享文件夾拒絕訪問的網段里面所以當打開test文件夾時提示了拒絕訪問
實現訪問windows系統中的共享資源
我們在客戶機(win7系統)上共享了一個名為LAMP的文件夾
[root@localhost samba]# smbclient -L192.168.10.2 #列出客戶機中的共享資源
[root@localhost samba]# mount.cifs//192.168.10.2/LAMP /tmp/ #如果想要訪問這個LAMP文件夾,可以將LAMP掛載到服務器的tmp目錄下
[root@localhost ~]# df -hT #查看掛載情況,已掛載
查看掛載后的tmp目錄下的內容,LAMP里面都是tar壓縮包
[root@localhost samba]# cp/tmp/apr-1.4.6.tar.gz ~ #將其中一個壓縮文件拷貝到根目錄下(根目錄可以是/root也可以直接寫成~)
[root@localhostsamba]# umount /tmp #把掛載的LAMP從tmp目錄下卸載掉
卸載之后查看tmp目錄顯示了原來tmp目錄下的文件和目錄
4.實驗總結:
1) samba服務在Linux的系統中實現了微軟的SMB/CIFS 網絡協議,在部署windows、Linux混合平臺的企業環境時,能夠很好的解決不同系統之間的文件互訪問題,使文件共享變得更加容易,是非常強大的功能。
2) samba服務提供了幾種很實用的訪問共享權限,也提供了服務器客戶端的訪問控制,在修改配置文件時一定要注意各個權限的配置是否沖突或者遺漏,平時可多做權限方面的測試。