|
|
|
|
| [精华] 请帮忙看看这个smb.conf的配置有什么问题? |
 [精华] 请帮忙看看这个smb.conf的配置有什么问题? - 脖子 [ 2003-06-23 19:02 | 3,649 byte(s)]
 [精华] Re: 请帮忙看看这个smb.conf的配置有什么问题? - 脖子 [ 2003-06-24 19:11 | 1,219 byte(s)]
 Understanding the Network Neighborhood - beyond_wyc [ 2004-01-29 10:45 | 171 byte(s)]
 Re: 请帮忙看看这个smb.conf的配置有什么问题? - tacy_lee [ 2003-06-25 09:21 | 311 byte(s)]
 [精华] Re: 请帮忙看看这个smb.conf的配置有什么问题? - tacy_lee [ 2003-06-24 16:30 | 109 byte(s)]
 Understanding Network Neighborhood - beyond_wyc [ 2004-01-29 10:58 | 171 byte(s)]
 [精华] Re: 请帮忙看看这个smb.conf的配置有什么问题? - tacy_lee [ 2003-06-24 16:44 | 10,036 byte(s)]
 [精华] Re: 请帮忙看看这个smb.conf的配置有什么问题? - 脖子 [ 2003-06-24 17:40 | 7,120 byte(s)]
|
|
|
|
[Original]
[Print]
[Top]
|
我用的是samba 3.0 beta+LDAP未用域模式
#/etc/samba/smb.conf
[global]
;basic server settings
workgroup = workgroup
netbios name = MyServer
server string = Linux Samba Server running %v
socket options = TCP_NODELAY IPTOS_LOWDELAY SO_SNDBUF=8192 SO_RCVBUF=8192
;PDC and master browser setting
os level = 64
preferred master = no
local master = yes
domain master = no
;security and logging settings
security = user
encrypt passwords = yes
# domain logons = no
log file = /var/log/samba/log.%m
log level = 2
max log size = 50
hosts allow = 127.0.0.1 172.16.2.0/255.255.255.0
;user profiles and home directory
logon home = \%L\%U
logon drive = W:
logon path =\*Lprofiles\%U
logon script = netlogon.bat
;add user and machines
add user script = /usr/local/sbin/smbldap-useradd.pl -m -k /dev/null -n -g -s
/sbin/nologin -A 1 -B 1 -u %u
;sync UNIX passwords
unix password sync = yes
passwd program = /usr/local/sbin/smbldap-passwd.pl -o %u
passwd chat = *New*password* %n
*Retype*new*password* %n
*passwd:*all*authentication*tokens*updated*
;LDAP-specific settings
ldap admin dn = "cn=Manager,dc=mydomain,dc=com"
ldap server = localhost
ldap port = 389
ldap ssl = no
ldap suffix = "ou=Users,dc=mydomain,dc=com"
#=========Shares==============================
[homes]
comment = Home Directories for %S
writeable = yes
browseable = no
follow symlinks = no
create mask = 0700
directory mask = 0700
[profiles]
path = /home/samba/profiles
writeable = yes
browseable = no
create mask = 0600
directory mask = 0700
[netlogon]
comment = Network Logon Service
path = /home/samba/netlogon
read only = yes
browseable = no
write list = @administrator
[public]
comment = Public Directory for All Users
path = /home/public
browseable = yes
writeable = yes
follow symlinks = no
create mask = 0755
directory mask = 0755
上面的配置在另一台机器上试过没问题,可是到服务器上出现下面的情况:
1、启动smbd和nmbd后,在客户端(windows2000)上可以出现samba的netbios
name,可是点击却说"无法访问\Myserver,找不到网络路径"------>似乎是netbios
name没有被windows识别;
2、将perferred master改为yes,点击客户端workgroup组干脆进不去;
3、直接连接ipaddress,\192.168.15.200,可以连上,并且可以用户认证,可是我的用户自己的
共享目录出不来(好象我的[homes]段没问题吧?----自言自语道);
不知哪位大虾出手相助?谢谢
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
網路芳鄰要使用的底層協定﹐沒錯﹐就是 NetBIOS 沒錯﹐但在實作上﹐還要透過 NetBEUI
才能完成﹐但這是個‘非路由’協定。如果遇到路由環境的時候﹐NetBEUI 就派不上用場
了﹐這時候就必須借助 NetBIOS over TCP/IP(後文簡稱 NoT) 的技術才能做到。(相對
於 NoT﹐您甚至可以想象前者為 NetBIOS over NetBEUI﹐但這並非準確的描述﹐因為
NetBEUI 已經包含 NetBIOS 在裡面了。)
在更進一步了解 NoT 之前﹐先讓我們了解 NetBIOS 和 NetBEUI 的分別及其發展歷史。
NetBEUI
讓我們回到 IBM 最初進軍個人電腦網路的時代﹐他們當時的確需要一個很基本的網路通訊
協定﹐但他們並不打算用此來建構大型網路﹐僅僅供數十台電腦甚至更小的網路而已。基於
這個訴求﹐就誕生了 Network Basic Input/Output System﹐或稱 NetBIOS。
NetBIOS 其實只有 18 個命令(command)來讓網路的電腦能夠建立﹑維持﹑和使用連接服
務。不過 IBM 在不久後又再推出了 NetBIOS 的延伸版本﹕NetBIOS Extened User
Interface﹐或稱 NetBEUI﹐基本上是 NetBIOS 的改良版本而已。然而﹐NetBIOS 和
NetBEUI終究是不同的﹕NetBEUI 事實上可以說是一個傳輸協定﹐而 NetBIOS 充其量只是一
組命令來讓系統可以使用網路而已﹐在技術角度來看﹐它是一個 Application Program
Interface (API)。
NetBEUI 可以算是您能夠用到的最快通訊協定了。這個“最快”是指它可以將格式化資料放
進封包裡面﹐而接收節點又可以迅速的解讀到內容。然而﹐NetBEUI 卻有一個最致命的弱點
﹕它不是可路由(routable)協定﹐也就是不能夠和其它網路的機器對講。NetBEUI 在本地網
路裡面是非常優秀的協定﹐但如果您想和設在其它網路的機器溝通﹐NetBEUI 就不是您所需
要的了。如果您想實現和其它網路的電腦溝通﹐您極有可能必需通過路由設備或路由軟體來
實現﹐但無論用哪一樣﹐很遺憾﹐NetBEUI 都做不到。
不過﹐Microsoft 網路則哂靡环N叫 NetBIOS over IP 的技術﹐來連接不同網路的
NetBEUI 客戶。但歸根結底﹐用來達成路由的不是 NetBIOS 而是 TCP/IP﹐也就是下一個要
介紹的協定。
TCP/IP
(略 ...)
由此可見﹐在 Microsoft 網路中﹐假如在同一個網路中﹐您可以直接用 NetBEUI 協定來提
供網芳服務﹔如果在不同的網路中﹐則使用 NoT 來達成。當然﹐就算在同一個物理網段
中﹐您也可以不使用 NetBEUI 而採用 NoT﹐不過執行效率上或不如 NetBEUI (暫時撇開網
路體積的影響而言﹐這點以前辯論過了﹐不再重複﹐有興趣請參考
http://www.study-area.org/tips/nbh.htm )。
這裡讓我們集中在 Server Message Block (SMB) protocol (也稱為 Session Message
Block﹑NetBIOS 或 LanManager protocol)﹐ 以及網路芳鄰的溝通建立過程。
SMB 協定主要提供一套機制給主機獲取網路中的機器列表﹐也就是所謂的 Browse List(後
文簡稱 BL)。當使用 SMB 協定的 client 在連上網路的時候﹐或是說在啟動 SMB 服務的時
候﹐會首先向網路進行廣播﹐查詢管理 BL 的主機﹐也就是所謂的 Local Master Browser
(後文簡稱 LMB)﹐以了解網路上到底有哪些主機存在﹐同時向 LMB 進行自己的註冊﹐這
樣﹐就可以讓其它主機透過更新後的 BL 得知其存在。
假如在第一輪查詢的時候沒得到 LMB 的回應﹐那機器就會提出 LMB 競選(Master Browser
Election)請求﹐然後所有收到這個請求的機器﹐也都參與競選﹐競選的規則其中一個很重
要的依據是它的 OS Level。通常來說﹐WfWG﹑Win9x 這些機器﹐其 OS Level 都為 2 ﹐而
domain controller 則為 32 。
假如 OS Level 越高﹐則越容易勝出競選﹐這也是為什麼 NT 的 PDC 老會搶贏的原因﹐就
是因為它的 OS Level 最高的緣故(DC 在加入網路的時候﹐不管網路是否已經有 LMB 存
在﹐都會提出競選要求。在 domain 層級的 Domain Master Browser (DMB) 競選﹐通常每
5 分鐘進行一次)。
如果在 OS Level 平等的情況下﹐就是誰先搶誰先贏。因為﹐如果該機器是第一個加入網路
的﹐當然是沒有別人來跟他競選﹐可以肯定是由這台機器來擔當 LMB 的角色。而後來加入
的﹐因為已經有 LMB 的存在﹐也無需進行競選﹐而只需向 LMB 查詢網路上的機器名單﹐以
及向 LMB 進行註冊。根據自己的角色和提供的服務類別﹐每台機器都使用相應的
Registration Code﹐例如 UNIQUE 之 00 是機器名稱﹑03 是 WINS﹑1B 是 DMB ﹔GROUP
之 1E 是 group 名稱﹑01 是 Master Browser .... 諸如此類的﹐大家可以用 nbtstat 命
令查詢得到。當然﹐機器的註冊是有一定時效的﹐必須有一套機制來確保註冊的準確性﹐同
時維持 LMB 的存在。具體細節這裡不再描述了﹐但您要知道﹐如果原本的 LMB 退出網路之
後﹐會導致新的一輪競選﹐從而繼續向網路提供 BL 服務﹐但過程可能需要一點時間。
無論如何﹐要記住一點﹕在 BL 上並沒有說明哪台機器有哪些分享提供﹐而是告訴您在哪個
GROUP 裡面有哪些機器且他們的角色是什麼而已。假如機器有進行檔案分享的話﹐那它的
UNIQUE 就會有一個 20 的註冊﹐但究竟上面有哪些分享呢﹖就需要直接向該註冊機器查詢
了﹐這時候開始﹐就不再需要 LMB 的參與。但只要您能順利從 LMB 上獲得 BL﹐那您可以
在網路芳鄰上看到對方的機器存在﹐但當您用滑鼠點那台機器的時候﹐就開始轉為直接查詢
模式了。(這裡﹐您應該知道為什麼有時候機器關掉了﹐還會在網路芳鄰上看到那台機器好
一陣子﹐是因為 BL 上面還沒更新的緣故。)
接下來﹐當直接向機器進行查詢的時候﹐對方會首先根據它的分享模式進行判斷﹐看看需要
採用哪種驗證模式(Authentication)﹐這也因作業系統的不同而有所差別﹐假如是 Win9x
機器﹐預設上是採用 share 模式﹐其分享驗證以資源本身的密碼為依據﹐只要對方能符合
資源規定的密碼﹐就可以了(根據某些資料顯示﹐這個密碼非常容易破解﹐最多進行 96 次
嘗試就可以)﹔假如資源分享修改為 user 層級﹐則需要為該 user 建立相應的帳號﹐只有
通過帳號的密碼驗證才可以。如果當前 login 的名稱﹐並沒有在對方上有相應的帳號﹐那
會嘗試轉為 guest 身份進行瀏覽﹐如果 guest 也沒提供﹐那就不能通過驗證﹐結果會拒絕
您的分享請求﹔假如資源分享以 domain 為依據﹐那登錄的帳號﹐必須已經通過 domain 的
驗證﹐並獲得合法的 token 才能使用資源(這就有點複雜了﹐有興趣參考 NT 的書籍吧)。
Okay﹐相信到這裡﹐大家已經明白到網路芳鄰是怎麼工作的了吧﹖不過﹐上面是假設在
local 上以 workgroup 形式組成的 Microsoft Network 環境之上﹐而且是使用 NetBEUI
協定。
如果不採用 NetBEUI 而是 NetBIOS over TCP/IP 又如何呢﹖
在 NoT 技術上﹐非常關鍵的一個條件是 NetBIOS Name 和 IP 位址的對應。在 NetBIOS 協
定中﹐所有主機必須獲得一個唯一的 NetBIOS Name 才能加入這個家庭﹐如果採用的名稱已
經被別的機器先行註冊了﹐就會出現名稱衝突現像﹐那麼後來加入的機器就不能進入網路﹐
當然也不能使用網路上的資源。在 IP 協定上﹐也同樣存在 IP 唯一性的問題﹐在 Win9x
的系統上﹐IP 也是誰先搶誰先贏。
您必須同時確定 NetBIOS Name 和 IP 都是唯一的﹐而且必須要有一套機制進行對應﹐也就
所謂的 X-Node 模式﹐在前面所給的聯結中﹐已經說明過﹕
> 1) 沒有 WINS 的情形﹕
> netbios_name_1 先會採用預設的 b-node 方式送出廣播﹐查詢 netbios_name_2 所
> 對應的 IP 位址(注意﹕不是 MAC 位址)﹐但如果物理連線不一樣的話﹐廣播則無法
> 到達。假如得不到回應﹐轉而查詢 LMHOSTS﹐如果 LMHOSTS 也沒有﹐那就查詢失敗。
> 2) 有 WINS 的情形﹕
> netbios_name_1 以 h-node 方式向 WINS 查詢 netbios_name_2 的 IP 位址﹔若失
> 敗則改用 b-node 的廣播﹔若還是失敗﹐則查詢 LMHOSTS﹔若失敗就結束。
>
所以﹐如果都在同一個 subnet 之中﹐就算不採用 NetBEUI﹐也沒有 LMHOSTS 和 WINS ﹐
也能夠透過廣播來找到對方的 IP﹐然後用 NoT 和對方進行溝通。但如果在不同 subnet
中﹐就不能採用廣播了。這時候﹐就必須借助 LMHOSTS 或 WINS 服務。
採用 LMHOSTS 是最簡單的辦法﹐如果雙方都有 NetBIOS Name 與 IP 的對應在檔案中﹐您
只要直接在檔案總管的網址上輸入對方的 IP ﹐然後前面加上兩條反斜線 ( \ )﹐以區分
其後的分享名稱(用單斜線分隔)﹐就能瀏覽對方的資源了(當然﹐前提條件是底層的路由必
須設定正確)。這過程無需借助 LMB 的幫忙﹐所以﹐對方不一定要出現在網芳上﹐尤其是任
一方的 LMHOSTS 裡面沒有 LMB 對應的時候。但在 OS Level 平等的情況下﹐您很難確定誰
是下一個 LMB 吧﹖再來﹐如果大家都是 DHCP 獲得 IP 的﹐也很難確定這些對應。無論如
何﹐要手工的維護 LMHOSTS 比較是累人的﹐尤其在機器越來越多的時候。為解決這個問
題﹐那就是 WINS 的切入時機了。
在網路中有 WINS 的時候﹐您必須手工的(或透過 DHCP 指定)為每一台機器設定 WINS 機器
的所在 IP 位址。當機器進入網路的時候﹐必須向 WINS 進行註冊﹐除了是將 NetBIOS
Name 和 IP 的對應註冊之外﹐還有一個很重要的功能是﹕ WINS 會告訴機器關於 LMB 的資
訊﹐這樣您就獲得 BL 的資料﹐從而知道網路上有哪些機器存在。但這裡有一點必須要分清
楚的是﹕WINS 未必就是 Master Browser (當然也可以是同一台)﹐不過 MB 必須要向 WINS
完成註冊﹐這樣才能讓後來的機器順利找到 LMB。所以﹐要確保所有機器都註冊到同一台
WINS 上是非常重要的﹐要不然就要用 pull 或 push 技術讓所有的 WINS partner 同步
WINS 資料。
假如在一個 Domain 環境中﹐並且跨越不同的網路又會怎樣呢﹖
所有 LMB 除了負責收集本地的 BL 之外﹐還必須有一台且唯一的 Domain Master Browser
(DMB) 負責收集所有 LMB 上面的資訊﹐並同步到所有的 LMB 上面﹐從而讓 LMB 有一個整
體 domain 的資源列表(BL)。然後﹐當 client 從 LMB 上的 BL 上獲得其它 subnet 的機
器註冊資訊後﹐會先從 WINS 那邊查詢對方的 IP ﹐然後轉為與對方機器之間的直接溝通模
式﹕查詢有哪些資源分享﹑提出分享請求﹑對方進行驗證﹑通過後獲得分享﹑使用分享﹑結
束分享... 等等。
假如沒有 WINS 呢﹖
就算您能夠用 LMHOSTS 來解決 host to host 的連線問題﹐但 subnet to subnet 之間的
聯係就斷開了。我忘記了 NT 上面是否可以使用 remote anouncement 和 remote
syncronisation 以進行 subent 之間的 BL 同步﹐但在 Linux 的 SAMBA 上是可以做到
的。
由於時間關係﹐上面的許多理論未能一一查證資料﹐大部份憑記憶所述。
而且這裡都是 NT4 的理論﹐至於 W2K 的 AD 是否如此﹐就未能考證了。
如有錯漏之處﹐非常歡迎大家指正。謝謝﹗
|
|
|
----
I love,I can.
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
首先非常感谢tacy_lee的帮忙和耐心的解释(似乎您来自繁体中文区)
尽管第一个问题已经解决(将netbios name换了个简单的少于16位的名称,不知道为什么?)
现在疑难出现再第二个问题,我怀疑跟ldap配置有关,可是我检查了再三,没有结果,我的用户路
径总是不出来,其他共享都能出来。
以下是ldap配置部分:
#/etc/openldap/slapd.conf
# $OpenLDAP: pkg/ldap/servers/slapd/slapd.conf,v 1.8.8.7 2001/09/27 20:00:31 kurt Exp
$
#
# See slapd.conf(5) for details on configuration options.
# This file should NOT be world readable.
#
include /etc/openldap/schema/core.schema
include /etc/openldap/schema/cosine.schema
include /etc/openldap/schema/inetorgperson.schema
include /etc/openldap/schema/nis.schema
include /etc/openldap/schema/redhat/rfc822-MailMember.schema
include /etc/openldap/schema/redhat/autofs.schema
include /etc/openldap/schema/redhat/kerberosobject.schema
include /etc/openldap/schema/samba.schema
# Define global ACLs to disable default read access.
include /etc/openldap/slapd.acl
# Do not enable referrals until AFTER you have a working directory
# service AND an understanding of referrals.
#referral target="_blank">ldap://root.openldap.org
pidfile //var/run/slapd.pid
argsfile //var/run/slapd.args
# Create a replication log in /var/lib/ldap for use by slurpd.
#replogfile /var/lib/ldap/master-slapd.replog
# Load dynamic backend modules:
# modulepath /usr/sbin/openldap
# moduleload back_ldap.la
# moduleload back_ldbm.la
# moduleload back_passwd.la
# moduleload back_shell.la
#
# The next three lines allow use of TLS for connections using a dummy test
# certificate, but you should generate a proper certificate by changing to
# /usr/share/ssl/certs, running "make slapd.pem", and fixing permissions on
# slapd.pem so that the ldap user or group can read it.
# TLSCertificateFile /usr/share/ssl/certs/slapd.pem
# TLSCertificateKeyFile /usr/share/ssl/certs/slapd.pem
# TLSCACertificateFile /usr/share/ssl/certs/ca-bundle.crt
#
# Sample Access Control
# Allow read access of root DSE
# Allow self write access
# Allow authenticated users read access
# Allow anonymous users to authenticate
#
#access to dn="" by * read
#access to *
# by self write
# by users read
# by anonymous auth
#
# if no access controls are present, the default is:
# Allow read by all
#
# rootdn can always write!
#access to dn="" by * read
#access to *
# by self write
# by users read
# by anonymous auth
#######################################################################
# ldbm database definitions
#######################################################################
database ldbm
suffix "dc=mydomain,dc=com"
#suffix "o=My Organization Name,c=US"
rootdn "cn=Manager,dc=mydomain,dc=com"
#rootdn "cn=Manager,o=My Organization Name,c=US"
# Cleartext passwords, especially for the rootdn, should
# be avoided. See slappasswd(8) and slapd.conf(5) for details.
# Use of strong authentication encouraged.
rootpw secret
# rootpw {crypt}ijFYNcSNctBYg
# The database directory MUST exist prior to running slapd AND
# should only be accessible by the slapd/tools. Mode 700 recommended.
directory /var/lib/ldap
# Indices to maintain
#index objectClass,uid,uidNumber,gidNumber,memberUid eq
#index cn,mail,surname,givenname eq,subinitial
index primaryGroupID eq
index rid eq
index uidNumber eq
index gidNumber eq
index cn pres,sub,eq
index objectClass eq
index default sub
# Replicas to which we should propagate changes
#replica host=ldap-1.example.com:389 tls=yes
# bindmethod=sasl saslmech=GSSAPI
# authcId=host/ldap-master.example.com@EXAMPLE.COM
#/etc/openldap/slapd.acl
access to attribute=userPassword
by dn="cn=Manager,dc=mydomain,dc=com" write
by anonymous auth
by self write
by * auth
access to *
by dn="cn=Manager,dc=mydomain,dc=com" write
by * read
access to dn=".*,dc=mydomain,dc=com" attr=userPassword
by dn="cn=Manager,dc=mydomain,dc=com" write
by self write
by * auth
access to dn=".*,dc=mydomain,dc=com"
by self write
by * read
access to attribute=homeDirectory
by dn="cn=Manager,dc=mydomain,dc=com" write
by self write
by * none
#/etc/openldap/ldap.conf
# $OpenLDAP: pkg/ldap/libraries/libldap/ldap.conf,v 1.4.8.6 2000/09/05 17:54:38 kurt
Exp $
#
# LDAP Defaults
#
# See ldap.conf(5) for details
# This file should be world readable but not world writable.
#BASE dc=example, dc=com
#URI ldap://ldap.example.com
target="_blank">ldap://ldap-master.example.com:666
#SIZELIMIT 12
#TIMELIMIT 15
#DEREF never
HOST 127.0.0.1
BASE dc=mydomain,dc=com
以上配置经过了测试应该没问题,而且我在另一台机器上装的也是这样(当然域不同),不知为什么
?
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
问题已经解决!原来ldap中的用户(在系统下是不存在的)为了在系统中留下一个映射,需要nss帮忙,那么:
vi /etc/nsswitch.conf
.................................
.................................
passwd: files ldap
shadow: files ldap
group: files ldap
...............................
................................
protocols: files ldap
...............................
services: files ldap
netgroup: files ldap
................................
automount: files ldap
...................................
存盘reboot
就可以了
我还没有彻底搞清楚是那些选项起了作用:
现在比较忙,等空下来写一些总结给大家;
另外不知谁能给我提供些kerberos的资料,mit.edu上不去,希望研究一下,看是不是有必要将kerberos集成进去。
windows2000的ad是这样做的,不过没有体会到ad的好处,反而觉得域模式在中小应用中(200个结点以下),对于用户端来说更麻烦(因为用户必须加入域中才能使用域中资源),因为不是每个用户都知道怎么加入域中的过程的。
只是个人看法!
|
|
|
[Original]
[Print]
[Top]
|
|
[Original]
[Print]
[Top]
|
首先声明:我不是来自繁体区 :P
其实我到觉得资源的统一认证这样可一简化管理,安全性方面自然也不用说了,对于系统维护人员来说当然是省去了很多麻烦。
关于ldap这一块我也是觉得挺感兴趣,希望共同探讨
|
|
|
----
I love,I can.
|
|
[Original]
[Print]
[Top]
|
|
« Previous thread
打印服务器 |
文件及打印服务器
第5页 |
Next thread »
lprng |
|