歡迎來到Linux教程網
Linux教程網
Linux教程網
Linux教程網
您现在的位置: Linux教程網 >> UnixLinux >  >> Linux綜合 >> Linux資訊 >> Linux文化

samba使用詳解


> 什麼是samba?
  samba是一個工具套件,在Unix上實現SMB(Session Message Block)協議,或者稱之為NETBIOS/LanManager協議.SMB協議通常是被瘟都死系列用來實現磁盤和打印機共享.需要注意的是,NetBIOS是基於以太網廣播機制的,沒有透明網橋是不能跨越網段的,也許用WINS和LMHOSTS可以,但我沒試過.我感覺samba是把SMB綁定到TCP/IP上實現的,samba只在IP子網內廣播(很多時候我不得不指定IP地址:-().所以在win95上與samba通訊既要裝NetBEUI協議,也要裝tcp/ip協議!!
  samba的主要部分有:
  兩個守護程序: smbd 和 nmbd(對客戶端提供NetBIOS名服務)
  配置文件: /etc/smb.conf
  使用工具: smbclient,smbstatus,smbmount,smbumount,smbprint,smbprint.sysv,smbrun
  samba的啟動腳本在/etc/rc.d/init.d/smb
  BTW,不要把smb與smp(對稱多處理器)搞混了,更不要把NetBIOS名與DNS裡的主機名搞混淆了! samba缺省是把主機名設置成NetBIOS名,這樣通常會超出NetBIOS名的長度限制(16個字符).


> 在win95網絡鄰居看不到Linux box?
  注意/etc/smb.conf文件裡以下幾項的設置:
  guest account = pcguest(不要照著寫,添實際的名字,你要去創建一個pcguest帳號)
  null password = yes (這一點很重要!)
  browseable = yes
  public = yes
  另外把security改為share試試.
  仔細讀一讀"man smb.conf".

  再說瘟95那個破東西,網絡鄰居運行一百遍才可能會出來你想要的.
  用這個方法試一試:先用smbmount 瘟95的一個共享目錄,用"網絡監視器"查看一下,然後再用網絡鄰居看.

> smbmount怎麼用?
  不能用man smbmount看看嗎? 大致是:
  smbmount //win95-name/share-dir /mount-point [-I ip地址或主機名] [-c 本機客戶名]
  []表示可選項, 本機客戶名可以隨便取.

Samuel Leo補充道:
  標准的smbmount使用格式是
  smbmount //server/share -c "mount /mnt -u uid -g gid" (注:好象不對吧)
  我編譯了一個修改版的smbmount, 使用格式為
  smbmount //server/share /mnt [passwd] [-Uusername] [-9]
  ftp://202.103.190.5/incoming/smbmount.gz (binary)

如果你用redhat, 也可以試試最新出的smbwrapper
  ftp://202.103.190.5/incoming/smbwrapper.so.gz

設置一下環境變量
LD_PRELOAD=/anywhere/smbwrapper.so
SMBW_USER=username
SMBW_PASSWORD=passsword
SMBW_WORKGROUP=workgroup #optional
SMBW_DEBUG=4 #optional
SMBW_LOGFILE=smbw.log #optional, default to stderr
SMBW_PREFIX=/smb #optional, default to /smb
export PWD SMBW_USER SMBW_PASSWORD SMBW_WORKGROUP
export SMBW_DEBUG SMBW_LOGFILE SMBW_PREFIX
然後你就可以"ls /smb"看到同組的所有機器名.
"ls /smb/server"看該機的共享清單.
缺點就是太慢, 10.10版對execle,execve,...等指定envp的exec仍有bug
不能下執行/smb下的文件, 不能mmap /smb下的文件.

> 先謝謝各位!
> 我的Pwin95現在可以看到linux了,我保證什麼也未修改過。
> 現在,我從linux上執行:
> smbclient //sjj2/nes(pwin95機器),可看到文件並顯示:
> smb:>
> smbclient -L sjj2,可看到sjj0(linux)和sjj2(pwin95)。
> 但是我不能從pwin95上訪問linux(sjj0),雙擊總顯示:
> 找不到機器名或共享名,請確認輸入正確,然後重試。
> 我對smbmount不會用,也找不到能看明白的幫助,因為
> 我不理解mount-point的含義,請指導;linux上的
> smbd和nmbd當然是運行的。
> 再謝各位!請繼續幫忙。smb.conf在前面的貼子中。

  Win95的網絡鄰居問題太多,別說跟Linux多不去,就是幾台Win95之間連個小網,只要沒有NT服務器,們就經常互相找不到。 所以,一定要把samba的WINS服務器功能打開,(wins support = yes), 然後把95的WINS服務器指向他。也許還要加入:
name resolv order = wins hosts bcast
這樣做的話最好讓Linux先於瘟95啟動起來!

>我在REDHAT 5.1裡可以共享WIN98的服務,在WIN98的網上鄰居裡
>可以看到LINUX的機子,但提示linuxIPC$ 需要口令,輸入口令總
>不正確,不知該如何設置?

  此問題好象不單linux有,NT也有,原因是連接時沒有用戶名的信息,不要直接點擊圖
標,用磁盤映射:linuxusername 的格式
WIN98使用加密的口令認證,而RedHat的SMB缺省使用明文認證,所以口令總是不正確。
可以在smb.conf中加入
encrypt passwords = yes
並使用smbpasswd 維護用戶口令

Win98 上選 開始 -> 注銷 ,用 Linux 機器上的用戶名和口令登錄,
然後不用輸入口令就可以訪問 Linux 的資源了。這和 NT 上是一樣的。
或者 Linux 機器上的 /etc/smb.conf 裡改成 security = share,
guest account = username (username 改成你機器上的一個用戶帳號)。
這樣如果 Win98 不是用 Linux 系統上的用戶帳號登錄的,也可以直接
訪問 Linux ,其權限等於 guest account 指定的用戶的權限。Linux
作出改動後要重啟。
注:完全不必重新啟動,可以到/etc/rc.d/init.d下去執行smbd stop,然後再smbd start
就可以了(這是在Redhat中).在Linux下要學會盡量不重啟的基本技巧!

> 如何讓win98發送明文密碼呢?

如果你用win98或打過很多補丁的win95. 如果samba不提供口令加密是不能登錄的.
1. 執行Win95_PlainPassword.reg允許win95發送明文口令
運行REGEDIT,添加:
[HKEY_LOCAL_MACHINESystemCurrentControlSetServicesVxDVNETSUP]
"EnablePlainTextPassword"=dword:00000001
2. 升級到最新的samba, 打開口令加密開關.

> BTW:哪一版SMABA可設加密校驗,如何設?

我的 samba 1.9.18p10 就已經可以了.
在 smb.conf 裡面找到

# You may wish to use password encryption. Please read
# ENCRYPTION.txt, Win95.txt and WinNT.txt in the Samba documentation.
# Do not enable this option unless you have read those documents
encrypt passwords = yes
smb passwd file = /usr/private/smbpasswd

這一段就可以了.

> 為什麼smbclient NetBIOS-nameshare-dir 總是不對?
這是shell的原因,應該用smbclient \nameshare-dir或者是smbclient 'nameshare-dir'
shell不處理兩個單引號之間的內容.如果你熟悉C語言,應該很清楚為什麼了!
或者使用smbclient //NetBios-name/share-dir 就不存在這個問題。

> 我在我的Linux機器上設好了smb.conf如下(刪去了所有注釋),為什麼NT不認samba?
把 security = user
改成: security = server
samba 1.9.18以前的版本還不完全支持NT的所謂"域",
2.0.0版正在開發中,對此有不小的進步.

> 多謝姚飛大俠上回的指點。但我在安裝時還是碰到了問題。我選擇了shadow,no pam,
> 還選了disk quota,結果出現
> quotas.c:38:sys/quota.h:No such file or director
> 這以後再不能編譯了。我把選擇該為 shadow no pam ,no quota,有編譯,出現:
> cc:internal compoler error:program cc1 got fatal signal 6
> make :*** [smbpass.o] Error!
> 我再把shadow ,pam quota 等選項選來選去,總是這個錯誤都不變化了。好象以前編譯
> 通過的就不編了只編譯後面的。我怎樣才能讓它重新編譯?
> slackware 3.4 kernel 2.0.30
> Thanks!

如果你用的是Slackware 3.4的話, 應該是shadow, no pam , no quota
大概從1.9.18p4開始就無法正常編譯了,到了smbpass.o必定出這個錯.

解決方法有幾個:
1. 直接下載編譯好的文件
2. 升級GCC到2.8.1, 或者 egcs-1.0.2
3. 升級到Slackware 3.5

> 本人單位財務部門需要裝一台文件服務器,我安裝了Redhat 5.1,用 samba
> 作為文件服務器,客戶端使用的是win95,現在win95已可以在網絡鄰居中找到
> 服務器,我將共享目錄映射為F:盤,經過試驗,大幅度地拷貝文件都沒問題.
> 但是,因為財務軟件是dos方式下的,當我執行F:下的帳務程序時,一次、兩次、
> 甚至數次都沒問題,但是若干次後每個客戶端都出現死機現象。我將samba
> stop一下,再start就可以了,請問這是怎麼一回事?以前用NT做服務器並沒有
> 這樣的現象。

俺原來用RH 4.2, kernel 2.0.30+ samba 1.9.16p11也有同樣的問題update後就ok了,
現在俺用的是kernel 2.0.35 + samba 1.9.18p8


——摘自:網易社區


Copyright © Linux教程網 All Rights Reserved