推薦一本書samba徹底研究(博碩文化),如果使用samba2.x這本是必備的。
買一本來參考吧?當做看小說有空看一下,對於增進自己的能力有很大的幫助,它不僅是samba也包含了rpm,dhcp,dns,wins等等 ,其實其中書中包含大部份man的翻譯,你可以比較清楚它的意義
Samba的技巧
在伺服器上

linux上查詢使用者的狀態
指令:
smbstatus #查詢使用者全部的資料
參數
-b 使用者資訊
-d 使用者分享及鎖住檔
-L lock被鎖住的檔
-P Samba PID每一個連線會有新增加一個
-S 分享的資料
-u username 單獨查詢某一個人
空白 等於-b+-d

linux上查詢別台電腦分享等資料
指令:
smbclient -NL 主機名稱

N 不要問密碼(以guset登入)
L 列出資源

linux上登入window或是samba的電腦
指令:
smbclient //主機/分享的資料匣資源 -U 使用者名稱

輸入密碼就可以執行類似ftp的指令了

mount 別台機器分享的資源到本台電腦
指令:
mount -t smbfs -o username=使用者名稱 ,password=密碼 //主機名稱/分享的資源 /主機目錄

linux上名稱查詢ip(nmblookup)
指令:
nmblookup netbois名稱

linux上傳送給winpopup訊息
指令:
smbclient -M host

winpopup是windows所附的一個小程式不同的電腦如果有啟動winpopup,可以互相通訊息
,我是使用另一個免費的軟體來取代它
realpopup
samba的安全性問題

這是有關於smb.conf設定問題

有一天我使用smbclient -NL 主機名稱
竟然可以查到資料,我十分緊張因為我是透過internet來下指令的,如此一來不是可以讓任何人來
來查詢你samba的資料,登入的電腦等,因此我試著改變設定,如何杜絕這種情形產生
我找到如下的設定,供你參考:
smb.conf中兩個參數
interface
bind interface only

由於samba及目前win2000等所使用的netbios over tcp/ip
因為是tcp/ip所以可以使用在internet上,以我所設定的是
兩片網路卡一為內部ip一為外部ip,如果samba不是放在防火牆內
則外部可以連進到samba server,更可怕的如果你是使用share的安全模式
別人可以使用你分享的所有資料匣,一般而言印表機是使用share的模式分享
因此別人可以你的印表機,它只要使用smbclient -NL ip 就可以查你主機上登
入的使用者名稱,及本機分享的資源,至於如何設定internet無法存取你的samba資源
到在/etc/smb.conf下設定加入二行:
  1. interface= eth0 192.168.1.0/24    #指定網路卡及ip,改成你內部ip使用的網路卡
  2. bind interface only=YES        #限定samba只可以使用這個介面  
如此internet將無法登入你的samba伺服器

由internet使用其它samba和 nt的資源

這也是有關於smb.conf設定問題

剛好跟上面相反你要設定以下:
  1. bind interface only=NO      #不要限制介面
  2. host allow=                           #予許連線(加入Ip、網域、子網、主機)
  3. host deny=       #拒絕存取(加入拒絕的ip、網域、子網、主機),最好要加入127.0.0.1
注意子網是192.168.0.而不是192.168.0.*
其間隔是以,分開,好像也有其它的方式

swat(samba網頁管理程式)
如何啟動(linux 7.x)
如果是使用xinetd.d則請注意以其下/etc/xinetd.d/swat這個檔案
如果沒有請自己建立
service swat
{
disable = no
port = 901
socket_type = stream
wait = no
# only_from = localhost
user = root
server = /usr/sbin/swat
log_on_failure += USERID
}
請看only_form=localhost則表示只能從本機執行
從別台的話,要修改內容,最容易的方法是加#

samba分享的目錄中,隱藏檔案或目錄不讓使用者存取
有兩個參數一個是hide files(只隱藏,但是可存取)
veto files(隱藏,不可存取)
它可以是全域變數,也可以是區域變數,其設定方式一模一樣
如果是你有分享一個目錄A但是要隱藏其子目錄B
[A]
comment=......
veto files=/B/

其中一行vote files就是隱藏並拒絕存取
如果是檔案如*.tmp 則使用 veto files=/*.tmp/
如果是檔案如*.tmp和目錄mydirectory 則使用veto files=/*.tmp/mydirectory/

限制使用者的讀寫權限
在分享目錄中設定全部的權限
writeable=no 不可寫 read only=yes
writeable=yes 可讀
在分享目錄中設定某些人的權限
write list= 使用者名稱,@群組名稱
read list= 使用者名稱,@群組名稱

限制某一些使用者不可以登錄
可以在全域或是單獨的分享資源
invalid users=使用者名稱
valid users=使用者名稱

限制某些主機可否登入
可以是全域或是單獨的分享資源
hosts allow=
hosts deny=
其格式如下:
hosts allow= 150.203. except 150.203.6.66
hosts allow= 150.203.15.0/255.255.255.0
hosts allow= lapland,arvidsjau
hosts allow=@group
當然可以混合設定,要以逗號分開

REDHAT9.0的問題
2003/04我幫一家公司安裝redhat9.0
然而中間碰到一些問題,一一克服,如下:
1.安裝完畢後,可以在網路芳鄰看到伺服器,但無法進入
解:iptables內定會將欲連線的拒絕,你可以先停用iptable
以後再設定
2.如何在samba的本機測試本服務是否正常?
解:正規是編輯好了smb.conf之後,使用另一個使用testparm測試是否設定錯誤,但是一般我們還要使用另一台電腦(windows)來測試,如何能在本機測試,而不需要其它的機器呢?以下就是答案:
使用nmblookup 主機名稱,如果有錯則是nmbd無正常運作(可能是iptable,將網路封包過濾掉),在window端要造成,看的到卻無法存取
使用smbclient -NL 主機名稱,看是否正確,如果不正確(可能是samba 的domain設定問題)
使用smbclient //主機/目錄 -U 使用者名稱-如果是網域登入失敗(可能是usermap,及smbpasswd檔案或是smb.conf中的usermap路徑需要設定)
使用findsmb(有些版本有),如果可以可的到你的全部機器,就應該沒有問題
唯讀問題,內定分享目錄是唯讀,因此要加上readonly=no,還要考慮linux使用者,群組權限問題

一般人可能碰到一個問題叫做檔案鎖住?
為了避免一個檔案時被同時開啟,並各自變更資料而不知道,因
此有一種,機制叫lock,一個檔案開啟後另一個檔案只能以唯讀,
或被限制開啟
而Windows的網路芳鄰則有另一種機制,oplock:這一種方法是
予陶s接端可以暫存一些原本要存在server端的資料,且關閉時
不會直接關掉連線,如同所有的cache的作用,可以增加效能,然而
我的結果是檔案明明關閉很久,檔案卻一直被鎖住了,
以下是samba的oplock說明
oplocks (S)
This boolean option tells smbd whether to issue oplocks
(opportunistic locks) to file open requests on this share. The
oplock code can dramatically (approx. 30% or more) improve
the speed of access to files on Samba servers. It allows the
clients to aggressively cache files locally and you may want to
disable this option for unreliable network environments (it is
turned on by default in Windows NT Servers). For more
information see the file Speed.txt in the Samba docs/
directory.

這是我找到原說明中可以改善的這個問題
oplock break wait time (G)

This is a tuning parameter added due to bugs in both
Windows 9x and WinNT. If Samba responds to a client too
quickly when that client issues an SMB that can cause an
oplock break request, then the network client can fail and not
respond to the break request. This tuning parameter (which is
set in milliseconds) is the amount of time Samba will wait
before sending an oplock break request to such (broken)
clients.


DO NOT CHANGE THIS PARAMETER UNLESS YOU HAVE READ
AND UNDERSTOOD THE SAMBA OPLOCK CODE.

Default: oplock break wait time = 0

原意好像是說:有一些機器反應太快以至於無法中斷連線,因此
我調整oplock break wait time =20 至50,結果問題有效解決了
然而95還是有問題,因此我又加了keepalive=120 ,兩分鐘
因為網路內只有五,六台電腦,因此設兩分鐘,讓server檢
查使用者的電腦的連線回應

如何使用瀏覽器來查看samba sverver
在IE網址鍵入\IP 或\機器的netbios的名稱 - 就可以了
查詢網域或群組內的主機
nmblookup "網域或群組" (linux)
net view /workgroup:"網域或群組" (98)
net view /domain:"網域" (nt)

xp pro登入samba pdc網域
針對winxp professional登入samba pdc(xp home無法登入)
試了許多網路的說明,就是無法登入,找書來設定還是有點問題,最後綜合書上及網路,終於成功了.............
1.建立機器帳號-要登入網域的xp電腦名稱
#因為要使用smbpasswd加入時系統需要存在帳號,因此我們建立一個
adduser -g 100 -d /dev/null -s /bin/fasle machine_name$
#加入sambad機器帳號,帳號後必須有$,如果你無法加入$,可以使用vipw加入
smbpasswd -a -m machine_name
#加入管理者帳號-如果你已經設定就不用再設了
smbpasswd -a root
2.變更xp登入不使用編碼
[HKEY_LOCAL_MACHINESYSTEMCurrentControlSetServicesNetlogonParameters]
其中requiresignorseal由1改為0
3.變更xp使用網域
填入你的網域,按確定時,會出現登入視窗
使用者:網域\\root
密碼 :root的密碼
重新開機後,就可以輸入一般使用者的密碼登入了