from: http://mrtg2.tnc.edu.tw/~knoppix/samba/
Linux與Windows溝通的橋樑--samba
作者:kawsing(2004/10/20 週三)
臺南縣教育網(wǎng)路中心
2004 (C) written by kawsing
版本:Debian
內(nèi)容
前言:
samab是甚麼:
samba的常用功能:
安裝samba:
samba的相關(guān)檔案與常用指令
規(guī)劃samba主機
關(guān)於samba的設(shè)定
Linux主機使用者權(quán)限與samba主機使用者權(quán)限的關(guān)係
設(shè)定與啟動samba
web圖形介面設(shè)定--SwAT
samab是甚麼:
第一次聽到samba這個名詞的人可能都不會想到甚麼網(wǎng)路服務(wù),誤以為是在說舞蹈,但他其實就是個網(wǎng)路服務(wù),並肩負(fù)起Linux與Windows間溝通的橋樑,由於使用SMB(Server Message Block)這樣的檔案系統(tǒng),所以就用SAMBA(包含SMB三個字元)來命名。
有了samba這個服務(wù),無論你要從Linux平臺來存取Windows的分享,或從Windows來存取Linux的分享,只要透過samba就可輕易達(dá)成,當(dāng)然,samba所能做到的還不只如此,像是印表機的分享,WINS Server,管理Windows網(wǎng)域(PDC)等,也都能透過samba做到。
所以,samba的計畫有一句話說:Samba, Opening Windows to a Wider World!,正是在說明samab這個網(wǎng)路伺服器的。
samba的常用功能:
分享檔案、印表機、裝置(CD-ROM...)
可以提供使用者登入 SAMBA 主機時的身份認(rèn)證,以提供不同身份者權(quán)限管理,使用資源限制及個別資料等
Windows 網(wǎng)路上的主機名稱解析 (WINS Server)
替代NT/2000來管理Windows網(wǎng)域(PDC)
安裝samba:
安裝一點也不難,而且SAMBA這個套件在各主要 distribution上面都有提供,也都大同小異,但你需要依據(jù)你的distribution的套件管理系統(tǒng)作安裝,這裡介紹的是的是Debain的系統(tǒng),所以就用apt-get輕輕鬆鬆就能安裝完成,當(dāng)然,你也可以使用tarball原始碼安裝,這樣就能適用於各個distribution。
samba的相關(guān)檔案與常用指令
設(shè)定檔
smb.conf
lmhosts
smbpasswd
SERVER端指令:
smbd nmbd
testparm
smbpasswd
CLIENT端指令:
smbclient
smbmount
smbtree
smbstatus
規(guī)劃samba主機
1.安裝Linux主機時,/home 最好獨立出一個 partition ,硬碟空間設(shè)大一些,並啟動該partition的quota磁碟配額限制
2.SAMBA若要做為印表機伺服器,那就把印表機可以直接連接在 Linux主機的列印埠 (LPT1),並安裝成為本地端的印表機以提供分享
3.雖然SAMBA具有跨路由的能力,但建議僅作為區(qū)域網(wǎng)路(LAN)分享,不要開放給Internet
4.除了smb.conf本身的存取設(shè)定外,最好也規(guī)範(fàn)防火牆(如iptables)的設(shè)定,提供進(jìn)一步的安全維護(hù)
關(guān)於samba的設(shè)定
(這裡以Debain系統(tǒng)套件安裝後的samba為主,使用其他distrobution的位置可能不同)
在啟動samba服務(wù)之前,我們必須先規(guī)劃好要samba主機的用途,是純粹分享,還是有限制的分享,或者還要拿來作為整個網(wǎng)域密碼與帳號管理等等,依據(jù)需要來設(shè)定你的smb.conf
smb.conf設(shè)定檔的基本主要分兩大部份--[global]及 [share](分享設(shè)定),『 # 』與『 ; 』都是註解
[global] SAMBA 主機的主要設(shè)定內(nèi)容:
workgroup->工作群組名稱:同一個區(qū)域網(wǎng)路內(nèi),要相同的 workgroup
netbios name ->主機名稱:就是 netbios 的名字!簡單講就是出現(xiàn)在網(wǎng)路芳鄰上的主機名稱,如果你沒有設(shè)定 netbios name 的話,預(yù)設(shè)會以 HOSTNAME 來替代!
server string->主機的說明
security->重要,用來規(guī)定 SAMBA 主機的安全登入項目,有底下幾種:
share 分享模式,沒有設(shè)定帳號與密碼也能登入
user 使用者認(rèn)證模式,設(shè)定主機的密碼檔作為登入的驗證檔案,這與底下的smb passwd file 有關(guān)
domain 就是讓您的 SAMBA 作為 PDC
log file->登錄檔放置的目錄
hosts allow->服務(wù)範(fàn)圍設(shè)定
samba3.x之後,字元編碼的設(shè)定是以下三個項目,由於要能顯示中文,所以設(shè)為big5
unix charset = big5
display charset = big5
dos charset = big5
smb passwd file->指定samba使用者密碼檔位置
[share] SAMBA主機的分享設(shè)定,針對每個分享的目錄或者是裝置進(jìn)行權(quán)限方面的規(guī)定
[ShareName]
comment = custome share file
path = /home/public
allow hosts = host(subnet)
deny hosts = host(subnet)
writable = yes|no
user = user(@group)
valid users = user(@group)
invalid users = user(@group)
read list = user(@group)
write list = user(@group)
admin list = user(@group)
public = yes|no
hide dot files = yes|no
create mode = 0755
directory mode = 0755
sync always = yes|no
short preserve case = yes|no
preserve case = yes|no
case sensitive = yes|no
mangle case = yes|no
default case = upper|lower
force user = grind
wide links = yes|no
max connections = 100
delete readonly = yes|no
各種項目簡易說明:
其中[]的ShareName指定共享名,就是網(wǎng)路芳鄰面看見的的名字。
comment 對此分享的說明
path指定共享的路徑,可以使用samba變數(shù)。比如指定path=/home/%m,這樣如果一臺機器的NETBIOS名字是machine1,進(jìn)入ShareName這個共享的時候就是進(jìn)入/home/machine1目錄
allow hosts和deny hosts和前面的global的hosts allow相同。
writeable指定了這個目錄是否可寫,或用readonly = no來設(shè)置可寫。
user設(shè)置所有可能使用該共享資源的用戶,也可以用@group代表group這個群組,不同的項目之間用空格或者逗號隔開。
valid users指定能夠使用該共享資源的使用者和群組。
invalid users與上面的設(shè)置相反。
read list指定只能讀取該共享資源的使用者和群組。
write list指定能讀寫該共享資源的使用者和群組。
admin list指定能管理該共享資源(包括讀寫和權(quán)限賦予(chmod)等)的使用者和群組。
public指定該共享資源是否開放給任何人,等同於guest ok項目,guest ok = yes和public = yes是一樣的。
create mode指定新建立的文件的屬性,如0644。
directory mode指定新建立的目錄的屬性,如0755。
sync always指定對該共享資源是否進(jìn)行同步操作。
short preserve case不管文件名大小寫。
preserve case保持大小寫。
case sensitive是否對大小寫敏感,一般選no,不然可能引起錯誤,所以這項目通常不設(shè)。
mangle case混合大小寫。
default case預(yù)設(shè)文件名是全部大寫還是小寫。
force user強制把建立文件的設(shè)定給誰。如果我有一個目錄,讓guest可以寫,那麼 guest就可以刪除,如果我用force user= kawsing強制指定建立文件的擁有者,同時create mode = 0755,這樣guest就不能刪除了。
wide links指明是否允許共享資源的符號連結(jié),比如共享資源link到共享資源外的文件或者目錄是否可用。
max connections指定此分享同時連線的數(shù)目。
delete readonly指明能否刪除共享資源已經(jīng)被定義為唯讀的文件。
除了自訂分享名稱外,還有給個比較特殊的分享,分別是:
家目錄的分享
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S ;%S:取代目前的設(shè)定項目值,所謂的『設(shè)定項目值』就是在 [ ] 裡面的內(nèi)容
create mode = 0664
directory mode = 0775
CDROM裝置的分享由[cdrom]相關(guān)設(shè)置提供
[cdrom]
comment = samaba server cdrom
path = /mnt/cdrom
public = yes
browseable = yes
root preexec = /bin/mount -t iso9660 /dev/cdrom /mnt/cdrom ;進(jìn)入此分享設(shè)定前,會以root身份掛載光碟
root postexec = /bin/umount /mnt/cdrom ;離開此分享設(shè)定,會以root身份卸載光碟
印表機的分享是經(jīng)由 [printers] 相關(guān)的設(shè)定來提供
[printers]
comment = All Printers
printable = yes
path = /var/spool/samba
browseable = no
guest ok = yes
public = yes
read only = yes
writable = no
關(guān)於samba的變數(shù)
%S = 當(dāng)前服務(wù)名(如果有的話)
%P = 當(dāng)前服務(wù)的根目錄(如果有的話)
%u = 當(dāng)前服務(wù)的使用者(如果有的話)
%g = 當(dāng)前使用者在的群組
%U = 當(dāng)前使用的使用者
%G = 當(dāng)前使用的使用者的群組
%H = 當(dāng)前服務(wù)的使用者的Home目錄
%v = Samba版本
%h = samba的主機名
%m = client端的NETBIOS名稱
%L = samba主機的NETBIOS名稱
%M = client端的主機名(hostname)
%N = NIS服務(wù)器名稱
%p = NIS服務(wù)的Home目錄
%R = 採用的協(xié)議等級(值可以是CORE, COREPLUS, LANMAN1, LANMAN2,NT1)
%d = 當(dāng)前服務(wù)進(jìn)程process的ID
%a = client端的結(jié)構(gòu)(只能識別幾項:Samba,WfWg,WinNT,Win95)
%I = client端的IP
%T = 日期和時間
設(shè)定與啟動samba
不管你的samba設(shè)定為那個等級,設(shè)定之前先有一個分享的規(guī)劃,如何分享,分享的權(quán)限設(shè)定等
cp smb.conf smb.conf.bak(建立一備份檔,設(shè)錯時可還原)
最簡易的設(shè)定--share等級的分享
需認(rèn)證使用者的user等級分享
把samba作為PDC
最簡易的設(shè)定--share等級的分享
分享規(guī)劃:
分享tmp(path = /tmp)與public(path = /var/samba)設(shè)定給所有人,但public設(shè)定為「唯讀」
mkdir /var/samba
chmod 777 samba
cd /etc/samba
vi smb.conf
重要設(shè)定如下:
[global]
guest account = nobody ;定義訪客身份為nobody
invalid users = root ;不允許root身份使用
security = share
workgroup = WORKGROUP
netbios name = samba
server string = %h server (Samba %v)
unix charset = big5
display charset = big5
dos charset = big5
.........................
.........................
[tmp]
comment = Temporary file space
path = /tmp
read only = No
guest ok = Yes
[public]
comment = ReadOnly share files
path = /var/samba
read only = yes
public = yes
.........................................
.................................
.................
testparm->測試你的設(shè)定是否有誤
/etc/init.d/samba start->啟動samba
client端登入使用
需認(rèn)證使用者的user等級分享
分享規(guī)劃:
分享家目錄,CDROM裝置,但須認(rèn)證使用者方能使用
cp smb.conf smb.conf.share
vi smb.conf
重要設(shè)定項目
security = user ;改成user等級
smb passwd file = /etc/samba/smbpasswd ;指定密碼檔位置
encrypt passwords = true
....................................
................................
.....................
[homes] comment = Home Directories
browseable = no
valid users = %S ; 以使用者名稱取代設(shè)定項目
read only = no
create mask = 0644
directory mask = 0755
[cdrom]
comment = Samba server‘s CD-ROM
writable = no
locking = no
path = /cdrom
public = yes
root preexec = /bin/mount -t iso9660 /dev/cdrom /cdrom ;當(dāng)client端進(jìn)入,就會自動掛載光碟
root postexec = /bin/umount /cdrom ;當(dāng)client端離開後,就卸載光碟
...................................
...........................
smbpasswd -a knoppix ;替knoppix這使用者設(shè)定samba主機的使用密碼
完成上述動作,你可以發(fā)現(xiàn)在/etc/samba裡頭有一個smbpasswd的檔案,裡頭的密碼已編碼過,注意權(quán)限是否為600
/etc/init.d/samba restart
client端登入使用
把samba作為PDC
當(dāng)你要管理的網(wǎng)域比較大,使用者多,流動性大,為方便管理,讓samba提供整個網(wǎng)域的帳號與密碼的驗證工作,這時候,你可以使用samba擔(dān)任PDC的工作,進(jìn)行統(tǒng)一控管
分享規(guī)劃
以samba任網(wǎng)域PDC,當(dāng)使用者在其他 PC 登入 PDC 的身份認(rèn)證時,PDC 會依據(jù)netlogon配置給這位登入者相關(guān)的網(wǎng)路資源, 自動給予網(wǎng)路磁碟機,來使用分享的資源
預(yù)計分享的資源:家目錄、public、tmp、cdrom
mkdir /home/samba
mkdir /home/samba/netlogon
mkdir /home/samba/profiles
cd /home/samba/netlogon
cp smb.conf smb.conf.user
vi smb.conf
重要設(shè)定項目
; invalid users = root #把這行註解起來,因為後面需用到root
security = user
workgroup = smbdomain #這裡把網(wǎng)域改成smbdomain
os level = 64 #SAMBA 機器的管理等級,設(shè)高一點
preferred master = yes
domain master = yes
local master = yes
domain logons = yes
logon script = login.bat ;使用者登入後會執(zhí)行的批次檔,放置的位置就在下面[netlogon]的path
logon path = \\%L\profiles\%U ;指定個人設(shè)定值存放的位置
wins support = yes
dns proxy = no
time server = yes
.................................................
......................................
.........................
[netlogon] ;重要設(shè)定項目,samba作為PDC需要有此設(shè)定
comment = Network Logon Service
path = /home/samba/netlogon
writable = no
write list = knoppix root
follow symlinks = yes
guest ok = yes
[profiles]
path = /home/samba/profiles
read only = no
create mask = 0600
directory mask = 0700
browseable = no
.........................................
...............................
cd /home/samba/netlogon #切換到此目錄下,製作windoows用批次執(zhí)行檔
vi login.tmp
---------------------------------------------
net time \\samba /set /yes
net use H: \\samba\homes
net use P: \\samba\public
net use T: \\samba\tmp
net use X: \\samba\cdrom
---------------------------------------------
cat -A login.tmp | tr ‘$‘ ‘\r‘ > login.bat
cat -A login.bat
加入machine account(主機的 NetBIOS名稱)與 user account
PDC 會去搜尋每部 PC要登入PDC的 machine account ,所以,在 /etc/passwd 與 /etc/sabma/smbpasswd 裡面需要同時具有machine account 的帳號,另,root 這個帳號需要加入 smbpasswd(在您的網(wǎng)域當(dāng)中有 Windows 2000 或者是 Windows XP 的作業(yè)系統(tǒng) 時就需要加入 /etc/samba/smbpasswd )
groupadd machines #建立一個machine account用的群組
useradd -g machines -d /dev/null -s /bin/false winxp$ #加入一個machine account到/etc/passwd,不需要給他家目錄與 Shell
smbpasswd -a -m winxp$ #-m 的參數(shù),這個參數(shù)代表後面接的為 Machine account而不是User account
smbpasswd -a knoppix
smbpasswd -a root
/etc/init.d/samba restart
windows加入PDC的設(shè)定(XP系統(tǒng)為例)
Linux主機使用者權(quán)限與samba主機使用者權(quán)限的關(guān)係
初使用samba的人員,常常會把samba的權(quán)限設(shè)定與Linux本身的權(quán)限設(shè)定搞混,所以常常會覺得分享的資源權(quán)限並非如自己所預(yù)期的,怎說呢?我們舉一個例子來獎,會比較清楚
例如,我今天分享了一個public資源設(shè)定出去,讓別人可以寫入,所以設(shè)定writable = yes path =/home/samba/public,這樣似乎是正確的,但透過網(wǎng)路芳鄰,無論如何就是無法寫入,可是我samba的設(shè)定明明正確阿,這可能就是你的linux權(quán)限設(shè)定問題,如果/home/samba/public這個目錄在Linux中的權(quán)限是755,擁有者是root,試問,其他人如何寫入呢?所以,在Linux下,該目錄的屬性就必須更改
所以,真正控制權(quán)限的,仍是Linux主機本身,samba只是提供你透過網(wǎng)芳連入的介面,作前提性的權(quán)限設(shè)定,搞清楚兩者的權(quán)限設(shè)定,就能輕鬆愉快的分享你的資源了