Samba是在Linux和UNIX系統(tǒng)上實(shí)現(xiàn)SMB協(xié)議的一個(gè)免費(fèi)軟件裳食,由服務(wù)器及客戶端程序構(gòu)成幕与。SMB(Server Messages Block疗琉,信息服務(wù)塊)是一種在局域網(wǎng)上共享文件和打印機(jī)的一種通信協(xié)議雁竞,它為局域網(wǎng)內(nèi)的不同計(jì)算機(jī)之間提供文件及打印機(jī)等資源的共享服務(wù)簿寂。SMB協(xié)議是客戶機(jī)/服務(wù)器型協(xié)議漾抬,客戶機(jī)通過該協(xié)議可以訪問服務(wù)器上的共享文件系統(tǒng)、打印機(jī)及其他資源常遂。通過設(shè)置“NetBIOS over TCP/IP”使得Samba不但能與局域網(wǎng)絡(luò)主機(jī)分享資源纳令,還能與全世界的電腦分享資源。
Samba最大的功能就是可以用于Linux與windows系統(tǒng)直接的文件共享和打印共享,Samba既可以用于windows與Linux之間的文件共享平绩,也可以用于Linux與Linux之間的資源共享圈匆。
Samba由兩個(gè)主要程序組成,它們是smbd和nmbd捏雌。這兩個(gè)守護(hù)進(jìn)程在服務(wù)器啟動(dòng)到停止期間持續(xù)運(yùn)行跃赚,功能各異。Smbd和nmbd使用的全部配置信息全都保存在smb.conf文件中腹忽。Smb.conf向smbd和nmbd兩個(gè)守護(hù)進(jìn)程說明輸出什么以便共享来累,共享輸出給誰及如何進(jìn)行輸出。
Samba提供了基于CIFS的四個(gè)服務(wù):文件和打印服務(wù)窘奏、授權(quán)與被授權(quán)嘹锁、名稱解析、瀏覽服務(wù)着裹。前兩項(xiàng)服務(wù)由smbd提供领猾,后兩項(xiàng)服務(wù)則由nmbd提供。 簡(jiǎn)單地說骇扇,smbd進(jìn)程的作用是處理到來的SMB軟件包摔竿,為使用該軟件包的資源與Linux進(jìn)行協(xié)商,nmbd進(jìn)程使主機(jī)(或工作站)能瀏覽Linux服務(wù)器少孝。
目錄
- 一继低、安裝環(huán)境
- 二、環(huán)境準(zhǔn)備
- 三稍走、搭建步驟
- 四袁翁、配置文件說明
- 五、常用命令總結(jié)
- 六婿脸、遇到的問題
- 七粱胜、參考
一、安裝環(huán)境
操作系統(tǒng):CentOS 7
二狐树、環(huán)境準(zhǔn)備
1焙压、使用yum下載并安裝samba服務(wù)
# yum -y install samba*
三、搭建步驟
1抑钟、啟動(dòng)samba服務(wù)涯曲,并查看服務(wù)狀態(tài)
# systemctl start smb nmb
# ps -aux | grep -E 'smb|nmb'
2、檢查端口是否已開放在塔,主要關(guān)注139幻件,445端口
# netstat -tunlp | grep -E 'smbd|nmbd'
3、創(chuàng)建samba文件夾(即samba放文件的目錄)
# mkdir /home/samba_file
4心俗、創(chuàng)建用戶文件夾
# cd /home/samba_file
# mkdir jsb zhb
5、創(chuàng)建系統(tǒng)組和用戶
這里先用一個(gè)簡(jiǎn)單例子作講解,后期會(huì)另起一篇專門講samba權(quán)限控制的文章來詳細(xì)講解samba的權(quán)限管理
需求:weicw用戶是技術(shù)部成員城榛,zhongxf是綜合部成員揪利,現(xiàn)在要求是,weicw能訪問到技術(shù)部的文件夾狠持,而不能訪問綜合部的文件夾疟位,zhongxf能訪問綜合部的文件夾,但不能訪問技術(shù)部的文件夾喘垂,即部門成員只能訪問所屬部門的文件夾甜刻,不能訪問其它部門的文件夾
# groupadd jsb
# groupadd zhb
# useradd -s /sbin/nologin jsb
# useradd -s /sbin/nologin zhb
# useradd -g jsb -s /sbin/nologin weicw
# useradd -g zhb -s /sbin/nologin zhongxf
6、創(chuàng)建samba用戶
# smbpasswd -a weicw
# smbpasswd -a zhongxf
這里分享一個(gè)一次性創(chuàng)建用戶和samba用戶的命令:
# useradd -MN 用戶名 -s /sbin/nologin && echo 密碼 | passwd --stdin 用戶名 && usermod -aG 權(quán)限分組 用戶名 && echo -e "密碼\n密碼" | smbpasswd -a -s 用戶名;
例:
# useradd -MN weicw -s /sbin/nologin && echo 000000 | passwd --stdin weicw && usermod -aG jsb weicw && echo -e "000000\n000000" | smbpasswd -a -s weicw
7正勒、更改目錄屬性
# chown jsb.jsb jsb/
# chown zhb.zhb zhb/
# chmod -R 777 jsb/
# chmod -R 777 zhb/
8得院、修改配置文件
# vim /etc/samba/smb.conf
我的配置文件如下(讀者可根據(jù)需要修改配置文件)
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[技術(shù)部]
# 共享文件目錄描述
comment = Shared
# 共享文件目錄
Directories
path = /home/samba_file/jsb/
# 是否允許guest訪問
public = no
guest ok = no
# 指定管理用戶
admin users = jsb
# 可訪問的用戶組(用@+組名)、用戶(用戶名)
valid users = @jsb
# 是否瀏覽權(quán)限
browseable = yes
# 是否可寫權(quán)限
writable = yes
# 文件權(quán)限設(shè)置
create mask = 0777
directory mask = 0777
force directory mode = 0777
force create mode = 0777
[綜合部]
comment = Shared Directories
path = /home/samba_file/zhb/
public = no
guest ok = no
admin users = zhb
valid users = @zhb
browseable = yes
writable = yes
create mask = 0777
directory mask = 0777
force directory mode = 0777
force create mode = 0777
9章贞、驗(yàn)證
在桌面計(jì)算機(jī)輸入samba所在地址如:\192.168.15.218
輸入剛剛創(chuàng)建的用戶名和密碼祥绞,這里測(cè)試zhongxf用戶,weicw用戶測(cè)試方式一致
訪問綜合部文件夾并上傳一個(gè)文件
訪問技術(shù)部文件夾出現(xiàn)拒絕訪問
四鸭限、配置文件說明
全局參數(shù) [global]
config file = /usr/local/samba/lib/smb.conf.%m
說明:config file可以讓你使用另一個(gè)配置文件來覆蓋缺省的配置文件蜕径。如果文件 不存在,則該項(xiàng)無效败京。這個(gè)參數(shù)很有用兜喻,可以使得samba配置更靈活,可以讓一臺(tái)samba服務(wù)器模擬多臺(tái)不同配置的服務(wù)器赡麦。比如朴皆,你想讓PC1(主機(jī)名)這臺(tái)電腦在訪問Samba Server時(shí)使用它自己的配置文件,那么先在/etc/samba/host/下為PC1配置一個(gè)名為smb.conf.pc1的文件隧甚,然后在smb.conf中加入:config file=/etc/samba/host/smb.conf.%m车荔。這樣當(dāng)PC1請(qǐng)求連接Samba Server時(shí),smb.conf.%m就被替換成smb.conf.pc1戚扳。這樣忧便,對(duì)于PC1來說,它所使用的Samba服務(wù)就是由smb.conf.pc1定義的帽借,而其他機(jī)器訪問Samba Server則還是應(yīng)用smb.conf珠增。
workgroup = WORKGROUP
說明:設(shè)定 Samba Server 所要加入的工作組或者域。
server string = Samba Server Version %v
說明:設(shè)定 Samba Server 的注釋砍艾,可以是任何字符串蒂教,也可以不填。宏%v表示顯示Samba的版本號(hào)脆荷。
netbios name = smbserver
說明:設(shè)置Samba Server的NetBIOS名稱凝垛。如果不填懊悯,則默認(rèn)會(huì)使用該服務(wù)器的DNS名稱的第一部分。netbios name和workgroup名字不要設(shè)置成一樣了梦皮。
interfaces = lo eth0 192.168.12.2/24 192.168.13.2/24
說明:設(shè)置Samba Server監(jiān)聽哪些網(wǎng)卡炭分,可以寫網(wǎng)卡名,也可以寫該網(wǎng)卡的IP地址剑肯。
hosts allow = 127. 192.168.1. 192.168.10.1
說明:表示允許連接到Samba Server的客戶端捧毛,多個(gè)參數(shù)以空格隔開∪猛可以用一個(gè)IP表示呀忧,也可以用一個(gè)網(wǎng)段表示。hosts deny 與hosts allow 剛好相反溃睹。
例如:
# 表示容許來自172.17.2.*.*的主機(jī)連接而账,但排除172.17.2.50
hosts allow=172.17.2.EXCEPT172.17.2.50
# 表示容許來自172.17.2.0/255.255.0.0子網(wǎng)中的所有主機(jī)連接
hosts allow=172.17.2.0/255.255.0.0
# 表示容許來自M1和M2兩臺(tái)計(jì)算機(jī)連接
hosts allow=M1,M2
# 表示容許來自SC域的所有計(jì)算機(jī)連接
hosts allow=@SC
max connections = 0
說明:max connections用來指定連接Samba Server的最大連接數(shù)目丸凭。如果超出連接數(shù)目福扬,則新的連接請(qǐng)求將被拒絕。0表示不限制惜犀。
deadtime = 0
說明:deadtime用來設(shè)置斷掉一個(gè)沒有打開任何文件的連接的時(shí)間铛碑。單位是分鐘,0代表Samba Server不自動(dòng)切斷任何連接虽界。
time server = yes/no
說明:time server用來設(shè)置讓nmdb成為windows客戶端的時(shí)間服務(wù)器汽烦。
log file = /var/log/samba/log.%m
說明:設(shè)置Samba Server日志文件的存儲(chǔ)位置以及日志文件名稱。在文件名后加個(gè)宏%m(主機(jī)名)莉御,表示對(duì)每臺(tái)訪問Samba Server的機(jī)器都單獨(dú)記錄一個(gè)日志文件撇吞。如果pc1、pc2訪問過Samba Server礁叔,就會(huì)在/var/log/samba目錄下留下log.pc1和log.pc2兩個(gè)日志文件牍颈。
max log size = 50
說明:設(shè)置Samba Server日志文件的最大容量,單位為kB琅关,0代表不限制煮岁。
security = user
說明:設(shè)置用戶訪問Samba Server的驗(yàn)證方式,一共有四種驗(yàn)證方式涣易。
share:用戶訪問Samba Server不需要提供用戶名和口令, 安全性能較低画机。
user:Samba Server共享目錄只能被授權(quán)的用戶訪問,由Samba Server負(fù)責(zé)檢查賬號(hào)和密碼的正確性。賬號(hào)和密碼要在本Samba Server中建立新症。
server:依靠其他Windows NT/2000或Samba Server來驗(yàn)證用戶的賬號(hào)和密碼,是一種代理驗(yàn)證步氏。此種安全模式下,系統(tǒng)管理員可以把所有的Windows用戶和口令集中到一個(gè)NT系統(tǒng)上,使用Windows NT進(jìn)行Samba認(rèn)證, 遠(yuǎn)程服務(wù)器可以自動(dòng)認(rèn)證全部用戶和口令,如果認(rèn)證失敗,Samba將使用用戶級(jí)安全模式作為替代的方式。
domain:域安全級(jí)別,使用主域控制器(PDC)來完成認(rèn)證徒爹。
passdb backend = tdbsam
說明:passdb backend就是用戶后臺(tái)的意思荚醒。目前有三種后臺(tái):smbpasswd芋类、tdbsam和ldapsam。sam應(yīng)該是security account manager(安全賬戶管理)的簡(jiǎn)寫界阁。
smbpasswd:該方式是使用smb自己的工具smbpasswd來給系統(tǒng)用戶(真實(shí)
用戶或者虛擬用戶)設(shè)置一個(gè)Samba密碼梗肝,客戶端就用這個(gè)密碼來訪問Samba的資源。smbpasswd文件默認(rèn)在/etc/samba目錄下铺董,不過有時(shí)候要手工建立該文件。
tdbsam:該方式則是使用一個(gè)數(shù)據(jù)庫文件來建立用戶數(shù)據(jù)庫禀晓。數(shù)據(jù)庫文件叫passdb.tdb精续,默認(rèn)在/etc/samba目錄下。passdb.tdb用戶數(shù)據(jù)庫可以使用smbpasswd –a來建立Samba用戶粹懒,不過要建立的Samba用戶必須先是系統(tǒng)用戶重付。我們也可以使用pdbedit命令來建立Samba賬戶。pdbedit命令的參數(shù)很多凫乖,我們列出幾個(gè)主要的确垫。
pdbedit –a username:新建Samba賬戶。
pdbedit –x username:刪除Samba賬戶帽芽。
pdbedit –L:列出Samba用戶列表删掀,讀取passdb.tdb數(shù)據(jù)庫文件。
pdbedit –Lv:列出Samba用戶列表的詳細(xì)信息导街。
pdbedit –c “[D]” –u username:暫停該Samba用戶的賬號(hào)披泪。
pdbedit –c “[]” –u username:恢復(fù)該Samba用戶的賬號(hào)。
ldapsam:該方式則是基于LDAP的賬戶管理方式來驗(yàn)證用戶搬瑰。首先要建立LDAP服務(wù)款票,然后設(shè)置“passdb backend = ldapsam:ldap://LDAP Server”
encrypt passwords = yes/no
說明:是否將認(rèn)證密碼加密。因?yàn)楝F(xiàn)在windows操作系統(tǒng)都是使用加密密碼泽论,所以一般要開啟此項(xiàng)艾少。不過配置文件默認(rèn)已開啟。
smb passwd file = /etc/samba/smbpasswd
說明:用來定義samba用戶的密碼文件翼悴。smbpasswd文件如果沒有那就要手工新建缚够。
username map = /etc/samba/smbusers
說明:用來定義用戶名映射,比如可以將root換成administrator抄瓦、admin等潮瓶。不過要事先在smbusers文件中定義好。比如:root = administrator admin钙姊,這樣就可以用administrator或admin這兩個(gè)用戶來代替root登陸Samba Server毯辅,更貼近windows用戶的習(xí)慣。
guest account = nobody
說明:用來設(shè)置guest用戶名煞额。
socket options = TCP_NODELAY SO_RCVBUF=8192 SO_SNDBUF=8192
說明:用來設(shè)置服務(wù)器和客戶端之間會(huì)話的Socket選項(xiàng)思恐,可以優(yōu)化傳輸速度沾谜。
domain master = yes/no
說明:設(shè)置Samba服務(wù)器是否要成為網(wǎng)域主瀏覽器,網(wǎng)域主瀏覽器可以管理跨子網(wǎng)域的瀏覽服務(wù)胀莹。
local master = yes/no
說明:local master用來指定Samba Server是否試圖成為本地網(wǎng)域主瀏覽器基跑。如果設(shè)為no,則永遠(yuǎn)不會(huì)成為本地網(wǎng)域主瀏覽器描焰。但是即使設(shè)置為yes媳否,也不等于該Samba Server就能成為主瀏覽器,還需要參加選舉荆秦。
preferred master = yes/no
說明:設(shè)置Samba Server一開機(jī)就強(qiáng)迫進(jìn)行主瀏覽器選舉篱竭,可以提高Samba Server成為本地網(wǎng)域主瀏覽器的機(jī)會(huì)。如果該參數(shù)指定為yes時(shí)步绸,最好把domain master也指定為yes掺逼。使用該參數(shù)時(shí)要注意:如果在本Samba Server所在的子網(wǎng)有其他的機(jī)器(不論是windows NT還是其他Samba Server)也指定為首要主瀏覽器時(shí),那么這些機(jī)器將會(huì)因?yàn)闋?zhēng)奪主瀏覽器而在網(wǎng)絡(luò)上大發(fā)廣播瓤介,影響網(wǎng)絡(luò)性能吕喘。如果同一個(gè)區(qū)域內(nèi)有多臺(tái)Samba Server,將上面三個(gè)參數(shù)設(shè)定在一臺(tái)即可刑桑。
os level = 200
說明:設(shè)置samba服務(wù)器的os level氯质。該參數(shù)決定Samba Server是否有機(jī)會(huì)成為本地網(wǎng)域的主瀏覽器。os level從0到255祠斧,winNT的os level是32病梢,win95/98的os level是1。Windows 2000的os level是64梁肿。如果設(shè)置為0蜓陌,則意味著Samba Server將失去瀏覽選擇。如果想讓Samba Server成為PDC吩蔑,那么將它的os level值設(shè)大些钮热。
domain logons = yes/no
說明:設(shè)置Samba Server是否要做為本地域控制器。主域控制器和備份域控制器都需要開啟此項(xiàng)烛芬。
logon . = %u.bat
說明:當(dāng)使用者用windows客戶端登陸隧期,那么Samba將提供一個(gè)登陸檔。如果設(shè)置成%u.bat赘娄,那么就要為每個(gè)用戶提供一個(gè)登陸檔仆潮。如果人比較多,那就比較麻煩遣臼⌒灾茫可以設(shè)置成一個(gè)具體的文件名,比如start.bat揍堰,那么用戶登陸后都會(huì)去執(zhí)行start.bat鹏浅,而不用為每個(gè)用戶設(shè)定一個(gè)登陸檔了嗅义。這個(gè)文件要放置在[netlogon]的path設(shè)置的目錄路徑下。
wins support = yes/no
說明:設(shè)置samba服務(wù)器是否提供wins服務(wù)隐砸。
wins server = wins服務(wù)器IP地址
說明:設(shè)置Samba Server是否使用別的wins服務(wù)器提供wins服務(wù)之碗。
wins proxy = yes/no
說明:設(shè)置Samba Server是否開啟wins代理服務(wù)。
dns proxy = yes/no
說明:設(shè)置Samba Server是否開啟dns代理服務(wù)季希。
load printers = yes/no
說明:設(shè)置是否在啟動(dòng)Samba時(shí)就共享打印機(jī)褪那。
printcap name = cups
說明:設(shè)置共享打印機(jī)的配置文件。
printing = cups
說明:設(shè)置Samba共享打印機(jī)的類型∈剿現(xiàn)在支持的打印系統(tǒng)有:bsd, sysv, plp, lprng, aix, hpux, qnx
共享參數(shù) [共享名]:
comment = 任意字符串
說明:comment是對(duì)該共享的描述武通,可以是任意字符串。
path = 共享目錄路徑
說明:path用來指定共享目錄的路徑珊搀。可以用%u尾菇、%m這樣的宏來代替路徑里的unix用戶和客戶機(jī)的Netbios名境析,用宏表示主要用于[homes]共享域。例如:如果我們不打算用home段做為客戶的共享派诬,而是在/home/share/下為每個(gè)Linux用戶以他的用戶名建個(gè)目錄劳淆,作為他的共享目錄,這樣path就可以寫成:path = /home/share/%u; 默赂。用戶在連接到這共享時(shí)具體的路徑會(huì)被他的用戶名代替沛鸵,要注意這個(gè)用戶名路徑一定要存在,否則缆八,客戶機(jī)在訪問時(shí)會(huì)找不到網(wǎng)絡(luò)路徑曲掰。同樣,如果我們不是以用戶來劃分目錄奈辰,而是以客戶機(jī)來劃分目錄栏妖,為網(wǎng)絡(luò)上每臺(tái)可以訪問samba的機(jī)器都各自建個(gè)以它的netbios名的路徑,作為不同機(jī)器的共享資源奖恰,就可以這樣寫:path = /home/share/%m 吊趾。
browseable = yes/no
說明:browseable用來指定該共享是否可以瀏覽。
writable = yes/no
說明:writable用來指定該共享路徑是否可寫瑟啃。
available = yes/no
說明:available用來指定該共享資源是否可用论泛。
admin users = 該共享的管理者
說明:admin users用來指定該共享的管理員(對(duì)該共享具有完全控制權(quán)限)。在samba 3.0中蛹屿,如果用戶驗(yàn)證方式設(shè)置成“security=share”時(shí)屁奏,此項(xiàng)無效。
例如:admin users =bobyuan错负,jane(多個(gè)用戶中間用逗號(hào)隔開)了袁。
valid users = 允許訪問該共享的用戶
說明:valid users用來指定允許訪問該共享資源的用戶朗恳。
例如:valid users = bobyuan,@bob载绿,@tech(多個(gè)用戶或者組中間用逗號(hào)隔開粥诫,如果要加入一個(gè)組就用“@+組名”表示。)
invalid users = 禁止訪問該共享的用戶
說明:invalid users用來指定不允許訪問該共享資源的用戶崭庸。
例如:invalid users = root怀浆,@bob(多個(gè)用戶或者組中間用逗號(hào)隔開。)
write list = 允許寫入該共享的用戶
說明:write list用來指定可以在該共享下寫入文件的用戶怕享。
例如:write list = bobyuan执赡,@bob
public = yes/no
說明:public用來指定該共享是否允許guest賬戶訪問。
guest ok = yes/no
說明:意義同“public”函筋。
五沙合、常用命令總結(jié)
當(dāng)?shù)卿浟薃用戶,需要退出登錄時(shí)需要在cmd中執(zhí)行以下語句清空登錄列表
net use * /del /y
# 創(chuàng)建用戶
# smbpasswd -a username
# 刪除用戶
# smbpasswd -x username
# 禁用用戶
# smbpasswd -d username
# 啟用用戶
# smbpasswd -e username
# 列出所有用戶
# pdbedit -L
# 列出所有用戶詳細(xì)信息
# pdbedit -LV
# 列出用戶george的詳細(xì)信息
# pdbedit -LV george
六跌帐、遇到的問題
1首懈、訪問地址時(shí)提示拒絕訪問
1、檢查selinux谨敛、防火墻是否關(guān)閉究履,或者137,138,139和445端口是否有開放
2、檢查目錄權(quán)限是否正確
2脸狸、當(dāng)我們要進(jìn)入不同的samba目錄最仑,如:進(jìn)入shared共享文件夾,但是這些目錄都有自己的密碼設(shè)置時(shí)炊甲,如果我們?cè)邳c(diǎn)擊這個(gè)目錄時(shí)輸入訪問該目錄的用戶名和密碼時(shí)泥彤,會(huì)提示“不允許一個(gè)用戶使用一個(gè)以上用戶名與服務(wù)器或共享資源的多重連接。中斷與此服務(wù)器或共享資源的所有連接卿啡,然后再試一次全景。”出現(xiàn)此問題是windows自身的限制牵囤,通常我們會(huì)注銷當(dāng)前windows用戶爸黄,然后再重新登陸samba來訪問其他目錄。
1揭鳞、打開cmd命令行炕贵,輸入
net use * /del /y
然后點(diǎn)擊其他目錄輸入該目錄具有訪問權(quán)限的用戶名和密碼即可正常訪問了