Samba是在Linux和UNIX系統(tǒng)上實現(xiàn)SMB協(xié)議的一個免費軟件,由服務(wù)器及客戶端程序構(gòu)成。SMB(Server Messages Block,信息服務(wù)塊)是一種在局域網(wǎng)上共享文件和打印機的一種通信協(xié)議,它為局域網(wǎng)內(nèi)的不同計算機之間提供文件及打印機等資源的共享服務(wù)。SMB協(xié)議是客戶機/服務(wù)器型協(xié)議,客戶機通過該協(xié)議可以訪問服務(wù)器上的共享文件系統(tǒng)、打印機及其他資源。通過設(shè)置“NetBIOS over TCP/IP”使得Samba不但能與局域網(wǎng)絡(luò)主機分享資源,還能與全世界的電腦分享資源。
samba服務(wù)器的安裝和配置
1.安裝samba(rpm包安裝)
首先,檢查一下系統(tǒng)中有沒有安裝samba的RPM包。輸入rpm -qa|grep samba沒有顯示,則表示samba沒有安裝。
輸入yum install samba-3.5.10-125.el6.i686.rpm安裝samba
samba安裝完成!
2.samba相關(guān)配置文件
?。ㄟ@部分內(nèi)容來自鳥哥的私房菜)
與samba服務(wù)器相關(guān)的配置文件有:
/etc/samba/smb.conf
這是samba的主要配置文件,基本上僅有這個文件,而且這個配置文件本身的說明非常詳細。主要的設(shè)置包括服務(wù)器全局設(shè)置,如工作組、NetBIOS名稱和密碼等級,以及共享目錄的相關(guān)設(shè)置,如實際目錄、共享資源名稱和權(quán)限等兩大部分。
/etc/samba/lmhosts
早期的 NetBIOS name 需額外設(shè)定,因此需要這個 lmhosts 的 NetBIOS name 對應(yīng)的 IP 檔。 事實上它有點像是 /etc/hosts 的功能!只不過這個 lmhosts 對應(yīng)的主機名是 NetBIOS name 喔!不要跟 /etc/hosts 搞混了!目前 Samba 預設(shè)會去使用你的本機名稱 (hostname) 作為你的 NetBIOS name,因此這個檔案不設(shè)定也無所謂。
/etc/sysconfig/samba
提供啟動 smbd, nmbd 時,你還想要加入的相關(guān)服務(wù)參數(shù)。
/etc/samba/smbusers
由于 Windows 與 Linux 在管理員與訪客的賬號名稱不一致,例如: administrator (windows) 及 root(linux), 為了對應(yīng)這兩者之間的賬號關(guān)系,可使用這個檔案來設(shè)定
/var/lib/samba/private/{passdb.tdb,secrets.tdb}
管理 Samba 的用戶賬號/密碼時,會用到的數(shù)據(jù)庫檔案;
/usr/share/doc/samba-《版本》
這個目錄包含了 SAMBA 的所有相關(guān)的技術(shù)手冊喔!也就是說,當你安裝好了 SAMBA 之后,你的系統(tǒng)里面就已經(jīng)含有相當豐富而完整的 SAMBA 使用手冊了!值得高興吧! ^_^,所以,趕緊自行參考喔!
至于常用的腳本文件案方面,若分為服務(wù)器與客戶端功能,則主要有底下這幾個數(shù)據(jù):
/usr/sbin/{smbd,nmbd}:服務(wù)器功能,就是最重要的權(quán)限管理 (smbd) 以及 NetBIOS name 查詢 (nmbd) 兩個重要的服務(wù)程序;
/usr/bin/{tdbdump,tdbtool}:服務(wù)器功能,在 Samba 3.0
以后的版本中,用戶的賬號與密碼參數(shù)已經(jīng)轉(zhuǎn)為使用數(shù)據(jù)庫了!Samba 使用的數(shù)據(jù)庫名稱為 TDB (Trivial DataBase)。
既然是使用數(shù)據(jù)庫,當然要使用數(shù)據(jù)庫的控制指令來處理啰。tdbdump 可以察看數(shù)據(jù)庫的內(nèi)容,tdbtool 則可以進入數(shù)據(jù)庫操作接口直接手動修改帳密參數(shù)。不過,你得要安裝 tdb-tools 這個軟件才行;
/usr/bin/smbstatus:服務(wù)器功能,可以列出目前 Samba 的聯(lián)機狀況, 包括每一條 Samba 聯(lián)機的 PID, 分享的資源,使用的用戶來源等等,讓你輕松管理 Samba 啦;
/usr/bin/{smbpasswd,pdbedit}:服務(wù)器功能,在管理 Samba 的用戶賬號密碼時, 早期是使用 smbpasswd 這個指令,不過因為后來使用 TDB 數(shù)據(jù)庫了,因此建議使用新的 pdbedit 指令來管理用戶數(shù)據(jù);
/usr/bin/testparm:服務(wù)器功能,這個指令主要在檢驗配置文件 smb.conf 的語法正確與否,當你編輯過 smb.conf
時,請務(wù)必使用這個指令來檢查一次,避免因為打字錯誤引起的困擾??!
/sbin/mount.cifs:客戶端功能,在 Windows 上面我們可以設(shè)定『網(wǎng)絡(luò)驅(qū)動器機』來連接到自己的主機上面。在 Linux 上面,我們則是透過 mount (mount.cifs) 來將遠程主機分享的檔案與目錄掛載到自己的 Linux 主機上面哪!
/usr/bin/smbclient:客戶端功能,當你的 Linux主機想要藉由『網(wǎng)絡(luò)上的芳鄰』的功能來查看別臺計算機所分享出來的目錄與裝置時,就可以使用 smbclient來查看啦!這個指令也可以使用在自己的 SAMBA 主機上面,用來查看是否設(shè)定成功哩!
/usr/bin/nmblookup:客戶端功能,有點類似 nslookup 啦!重點在查出 NetBIOS name 就是了
/usr/bin/smbtree:客戶端功能,這玩意就有點像 Windows
系統(tǒng)的網(wǎng)絡(luò)上的芳鄰顯示的結(jié)果,可以顯示類似『靠近我的計算機』之類的數(shù)據(jù), 能夠查到工作組與計算機名稱的樹狀目錄分布圖!
3.啟動samba服務(wù)器
samba有兩個主要的進程smbd和nmbd。smbd進程提供了文件和打印服務(wù),而nmbd則提供了NetBIOS名稱服務(wù)和瀏覽支持,幫助SMB客戶定位服務(wù)器,處理所有基于UDP的協(xié)議。
samba的兩個服務(wù)smbd和nmbd都是stand alone服務(wù),直接輸入
service smb start
service nmb start
即可啟動服務(wù),設(shè)置開機啟動也很簡單,輸入
chkconfig smb on
chkconfig nmb on
即可設(shè)置開機啟動。
我們來檢查一下啟動和開機啟動是否設(shè)置成功
輸入 chkconfig --list |grep mb
可見開啟自動啟動已經(jīng)設(shè)置成功了。
輸入service nmb status; service smb status
可見服務(wù)已經(jīng)啟動了。
4.例子1:一個不需要密碼的共享
1.配置smb.conf文件
前面已經(jīng)說過,samba服務(wù)器最主要的配置文件其實只有一個,就是/etc/samba/samba.conf,這個配置文件可以分為兩個部分,一個部分是全局參數(shù),一部分是共享資源相關(guān)參數(shù)。
#1.全局部分參數(shù)設(shè)置:
?。踘lobal]
#與主機名相關(guān)的設(shè)置
workgroup = zkhouse 《==工作組名稱
netbios name = zkserver 《==主機名稱,跟hostname不是一個概念,在同一個組中,netbios name必須唯一
serverstring = this is a test samba server 《==說明性文字,內(nèi)容無關(guān)緊要
#與登錄文件有關(guān)的設(shè)置
log file = /var/log/samba/log.%m 《==日志文件的存儲文件名,%m代表的是client端Internet主機名,就是hostname
max log size = 50 《==日志文件最大的大小為50Kb
#與密碼相關(guān)的設(shè)置
security = share 《==表示不需要密碼,可設(shè)置的值為share、user和server
passdb backend = tdbsam
#打印機加載方式
load printer = no 《==不加載打印機
-----------------------------------------------------------
#2.共享資源設(shè)置方面:將舊的注釋掉,加入新的
#先取消[homes]、[printers]的項目,添加[temp]項目如下
?。踭emp] 《==共享資源名稱
comment = Temporary file space 《==簡單的解釋,內(nèi)容無關(guān)緊要
path = /tmp 《==實際的共享目錄
writable = yes 《==設(shè)置為可寫入
browseable = yes 《==可以被所有用戶瀏覽到資源名稱,
guest ok = yes 《==可以讓用戶隨意登錄1234567891011121314151617181920212223
這個文件有一些默認值,不用修改。
2.用testparm檢查smb.conf配置文件語法設(shè)置的正確性
輸入testparm檢查smb.conf是否有錯誤
上圖第五行顯示,loaded service file OK.說明配置文件沒有問題。
檢查完畢后,輸入service smb restart和service nmb restart重啟samba服務(wù)。
3.本機測試
假設(shè)用本機作為客戶端來測試,我們可以在本機上通過smbclient來處理,首先我們在命令行輸入:
smbclient
如果系統(tǒng)安裝了smbclient軟件包,那么會列出smbclient命令的使用方法,如果沒有安裝,則會報錯,找不到命令,那么需要安裝smbclient軟件包,然后重試。
搭建本地yum源,輸入yum install samba-client-3.5.10-125.el6.i686.rpm安裝smbclient軟件包。
安裝完成后,再次輸入smbclient測試
?。踨oot@www ~]# smbclient -L [//主機或IP] [-U 使用者賬號]
選項與參數(shù):
-L :僅查閱后面接的主機所提供分享的目錄資源;
-U :以后面接的這個賬號來嘗試取得該主機的可使用資源1234
輸入smbclient -L //127.0.0.1
然后,我們把分享的目錄掛載到某一個目錄下,輸入mount -t cifs //127.0.0.1 /home/test,然后跳到這個目錄查看文件。
注意:我們進入test,身份會被壓縮成為nobody,而不再是root用戶了。
我么還可以在這個掛載點,創(chuàng)建文件
跳到我們共享的目錄看一下,創(chuàng)建的文件是否存在
cd /tmp;ls
可見這個文件確實存在,而且對這個共享目錄,任何人可讀可寫。
最后,我們把這個掛載卸掉`umount /home/test
windows下測試
windows下測試非常簡單,打開資源管理器,在地址欄輸入\192.168.191.3(即服務(wù)器IP地址),就可以看到共享的目錄。
打開目錄,可以對里面的內(nèi)容進行讀寫
4.例子2:一個需要密碼才可以登錄的共享
假設(shè)有3個學生需要共享一個homework目錄,我們可以這樣操作。
1.首先建立3個學生用戶stu1,stu2,stu3,同屬于stu用戶組,設(shè)置用戶密碼。
2.在根目錄下建立homework目錄
3.將剛剛建立的三個用戶添加到samba用戶中(smbpasswd -a USER姓名)
4.查看一下已經(jīng)存在的samba用戶(pdbedit -L)
可以看到,現(xiàn)在有3個samba賬號。
5.修改samba配置文件(vim /etc/samba/smb.conf)
#1.全局部分參數(shù)設(shè)置:
?。踘lobal]
#與主機名相關(guān)的設(shè)置
workgroup = zkhouse
netbios name = zkserver
serverstring = this is a test samba server
#與登錄文件有關(guān)的設(shè)置
log file = /var/log/samba/log.%m
max log size = 50
#與密碼相關(guān)的設(shè)置
security = user 《==表示需要密碼,可設(shè)置的值為share、user和server
passdb backend = tdbsam
#打印機加載方式
load printer = no 《==不加載打印機
-----------------------------------------------------------
#2.共享資源設(shè)置方面:將舊的注釋掉,加入新的
#先取消[homes]、[printers]等項目,添加[homework]項目如下
?。踙omework]
comment = students‘ homework
path = /homework
browseable = yes
writable = yes
write list = @stu
123456789101112131415161718192021222324
6.重啟samba服務(wù)
service smb restart;service nmb restart
7.windows客戶端測試
按win+R,輸入\192.168.191.3(服務(wù)器IP地址)
彈出登錄界面,輸入用戶和密碼,我們以stu1的身份登錄。
可以看到共享的文件夾
此時,我么可以瀏覽,打開文件夾里面的文件,也可以將文件拷貝出去,但是不能修改文件,不能添加文件。
這是新建文件時彈出的提示。
原因很簡單,就是權(quán)限不夠,因為我們在創(chuàng)建homework目錄的時候,使用的是root用戶,所以homework目錄的所有者和所有組均是root,stu用戶組的用戶沒有write權(quán)限,因此不能修改、新建homework里面的文件。
我們將homework所有組改為stu,并賦予write權(quán)限。
現(xiàn)在共享目錄應(yīng)該可以修改、新建文件了。
9.我們再來添加不同用戶的home目錄
修改配置文件smb.conf,把[home]項目的注釋取消掉
?。踙omes]
comment = Home Directories
browseable = no
writable = yes
; valid users = %S
; valid users = MYDOMAIN\%S
; create mode = 0664
; directory mode = 0775
123456789
重啟samba服務(wù),然后按win+R,輸入\192.168.191.3,即可看見共享的文件夾多了一個stu1。在這個文件夾里面可以修改、新建文件。
5.關(guān)閉SELinux(重要)
在默認情況下,SELinux是開啟的,我們可以通過getenforce查看SELinux的狀態(tài)。
SELINUX幾種狀態(tài)表示:
enforcing:強制模式,代表 SELinux 運行中,且已經(jīng)正確的開始限制 domain/type 了;
permissive:寬容模式:代表 SELinux 運行中,不過僅會有警告信息并不會實際限制 domain/type 的存取。這種模式可以運來作為 SELinux 的 debug 之用;
disabled:關(guān)閉,SELinux 并沒有實際運行。1234
此時,登錄samba服務(wù)器可以看到共享文件夾,但是文件夾是無法訪問的,如下圖
可以使用setenforce指令將SELinux改成寬容模式
重啟samba服務(wù),共享目錄就可以正常訪問。
評論
查看更多