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