SMB相关问题的解决方法

2024-04-22 06:18
文章标签 问题 方法 解决 相关 smb

本文主要是介绍SMB相关问题的解决方法,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

一.  由Linux向windows提供文件/目录及打印机共享。
在Linux服务器上的Samba运行起来以后,Linux就相当于一台文件及打印服务器,向windows和Linux
Samba客户提供文件及打印服务。工作在共享模式或者用户模式下的两种方法较为常见(Security=share
or Security=user) ,其中有以下常见问题。 环境: Redhat Linux 6.x

1.共享模式时从windows 98客户端不能从网上邻居中看到服务器,或者看到后不能点击进入共享资源
  说密码不对等等。
a. 没有去掉行guest account = pcguest前面的注释符号
b. 没有创建guest帐号pcguest  (#useradd pcguest即可)
c. windows 98默认发送加密的口令,而/etc/smb.conf中没有enable Samba加密口令。
   或者也可以编辑windows 98注册表,让它发送文本口令(不被建议的)

2. 在/etc/smb.conf中定义了完全可写共享目录,但实际操作时不能写入。  
a.  特别要注意的是:LINUX本身的文件及目录权限永远大于SAMBA定义的权限,要让某共享资源目录
    可以被写,首先要保证在LINUX下面该目录可以被相应的用户可写,这是前提。

3.在共享模式下如何对某共享目录加用户名及密码保护?
a. 看下面的共享资源定义例子:
        security = SHARE
        username map = /etc/smbusers
        log file = /var/log/samba/log.%m
        max log size = 50
        socket options = TCP_NODELAY
        client code page = 936
        os level = 40
        local master = yes
        preferred master = yes
        domain master = yes
        guest account = pcguest
        encrypt passwords = yes
        smb passwd file = /etc/smbpasswd
[sales]
       comment = test folder
       path = /sales/training
       guest ok = no
       writable = yes
       valid users = @sales
       write list = @sales
在上面的例子中,我们定义了security=share and samba encrypt password,共享目录名sales
不是guest用户可访问的,需要属于sales组里的用户可访问同时也可写,当然在Linux下面要保证
/sales/training目录可被组sales可写,这样以后
定义你的windows logon(不是NT域登录)的用户名为组sales里的用户名,然后在网上邻居中双击
sales时会提示你密码,该密码是你在Samba服务器上定义的samba加密的口令,在上面的例子中
用户名和密码对存放在文件/etc/smbpasswd中,当然你事先要有系统用户名在/etc/passwd中。

4. windows用户经常不能在网上邻居中浏览到Samba服务器的名字。
a. windows的网上邻居服务是非常不可靠的服务,它所建立的浏览列表不可靠,由众多因素引起。
b. 一种可靠的解决办法是直接用‘查找’-‘计算机’-打入samba服务器的主机名进行查找。
   注意要确保你在windows启动时没有取消登录。
c.你也可以在DOS窗口用net use 命令:如c:/ net use m: //sambaservername/shareresourcename

5.服务器端的测试配置工具
a. 在配置完/etc/smb.conf后运行testparm检测配置文件中是否有相应语法错误
b. 在Samba服务起来后,用smbstatus报告用户使用和登录情况。
c. 在更改过配置文件后,运行/etc/rc.d/init.d/smb restart重读配置文件

二.在Linux客户机上使用Linux Samba服务器

1. 在Linux客户机上使用Smbclient
a. 列出计算机192.168.100.1上所有可用的共享资源:
    smbclient -L 192.168.100.1
   如果询问口令,则直接回车。
    也可用名字如:
     smbclient -L sh3
    若不知道sh3的IP地址,也可用
      smbclient -L sh3 -I 192.168.100.1
b. 以某用户身份连接到Samba服务器192.168.100.1上的共享资源sales
   smbclient //192.168.100.1/sales  -U jephe
  提示口令后输入口令,也可把口令打在命令行上用%号分隔
   为: smbclient //192.168.100.1/sales -U jephe%password
  提示符为smb:/,就象是FTP一样
    也可用名字如:
   smbclient //sh3/sales  -I 192.168.100.1 -U jephe
 
   你也可以用'/'符号,你的SHELL可能会过滤到特殊符号/,则要这样写
  #smbclient sh3//sales 

2. 通过IP地址查找netbios名字
a.在windows下用
   c:/nbtstat -A 192.168.100.1
   如果知道netbios名字,可用下面的命令得知提供某机器哪些服务
   c:/nbtstat -a hydra

b.在Linux下用
   #nmblookup -A  192.168.100.1
在一个网段内可用下面的命令检测哪些主机在提供samba共享服务:
 #nmblookup -d 2 '*' or #nmblookup -B 192.168.100.255 '*'
检测其它网段内的某台机器是否提供samba服务
 #nmblookup -A 192.168.15.48
但不能用 #nmblookup -B 192.168.15.255 '*',因为一般的路由器和Linux双宿主机不转发子网直接广播。

3. netbios over TCP/IP使用的协议及端口号

a. 共有三种netbios服务 
   netbios-ns  137/udp(大多数) and 137/tcp
   netbios-dgm  138/udp(大多数) and  138/udp
   netbios-ssn   139/tcp 

b.windows机器上的PC应用程序通过不同机器间的netbios名字来彼此通讯。

c. 每次当windows机器启动时,它向整个网段内发出137/udp广播,一来登记向某
   工作组内的主浏览器登记netbios名字,二来确信整个子网内没有与之相同的名字

d. 网上邻居中所建立起来的浏览列表仅仅是列表,看不到也没有关系,同样也可以通过
   计算机查找,net use命令等来与别的计算机通讯,共享文件和打印机

e. 不在同一网段内的机器或者是拨号到LAN上的PPP服务器后不可能进行网上邻居的浏览。
   这是因为子网内的广播不被串行线路和路由器转发。

f. 如何在拨号到LAN上的PPP服务器后使用LAN上的Samba服务器?
  <1> 在windows目录下编辑c:/windows/lmhosts
   如: 192.168.11.3   sh3  #PRE  #DOM:sales
      执行nbtstat -R 去enable它,不需要重启windows
  <2> 你必须登录windows,若是用户模式的samba,你应该选择windows NT登录
  <3> 其它设置跟LAN上的机器一样
  <4> 拨号建立连接后,在查找‘计算机’功能定位资源 
  <5> 现在你能使用远端服务器上的目录和打印机。

 在不同网段内的机器也可参照此做法,也可用plug-gw代理tcp/139号端口访问另一网段上的samba
服务器。


4. 用Microsoft FTP 服务器的简便方法。 ftp.microsoft.com

a.  加‘ftp'到lmhosts文件
   198.105.232.1   ftp  #PRE
     运行nbtstat -R 
b. net view //ftp
c. net use g: //ftp/data
d. dir g: 

5. smbmount 的使用
a. #smbmount //192.168.100.1/pub /mnt/sh3  -U jephe%password

这篇关于SMB相关问题的解决方法的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/924997

相关文章

SpringBoot整合Dubbo+ZK注册失败的坑及解决

《SpringBoot整合Dubbo+ZK注册失败的坑及解决》使用Dubbo框架时,需在公共pom添加依赖,启动类加@EnableDubbo,实现类用@DubboService替代@Service,配... 目录1.先看下公共的pom(maven创建的pom工程)2.启动类上加@EnableDubbo3.实

Kotlin Map映射转换问题小结

《KotlinMap映射转换问题小结》文章介绍了Kotlin集合转换的多种方法,包括map(一对一转换)、mapIndexed(带索引)、mapNotNull(过滤null)、mapKeys/map... 目录Kotlin 集合转换:map、mapIndexed、mapNotNull、mapKeys、map

Nginx安全防护的多种方法

《Nginx安全防护的多种方法》在生产环境中,需要隐藏Nginx的版本号,以避免泄漏Nginx的版本,使攻击者不能针对特定版本进行攻击,下面就来介绍一下Nginx安全防护的方法,感兴趣的可以了解一下... 目录核心安全配置1.编译安装 Nginx2.隐藏版本号3.限制危险请求方法4.请求限制(CC攻击防御)

nginx中端口无权限的问题解决

《nginx中端口无权限的问题解决》当Nginx日志报错bind()to80failed(13:Permissiondenied)时,这通常是由于权限不足导致Nginx无法绑定到80端口,下面就来... 目录一、问题原因分析二、解决方案1. 以 root 权限运行 Nginx(不推荐)2. 为 Nginx

python生成随机唯一id的几种实现方法

《python生成随机唯一id的几种实现方法》在Python中生成随机唯一ID有多种方法,根据不同的需求场景可以选择最适合的方案,文中通过示例代码介绍的非常详细,需要的朋友们下面随着小编来一起学习学习... 目录方法 1:使用 UUID 模块(推荐)方法 2:使用 Secrets 模块(安全敏感场景)方法

解决1093 - You can‘t specify target table报错问题及原因分析

《解决1093-Youcan‘tspecifytargettable报错问题及原因分析》MySQL1093错误因UPDATE/DELETE语句的FROM子句直接引用目标表或嵌套子查询导致,... 目录报js错原因分析具体原因解决办法方法一:使用临时表方法二:使用JOIN方法三:使用EXISTS示例总结报错原

Windows环境下解决Matplotlib中文字体显示问题的详细教程

《Windows环境下解决Matplotlib中文字体显示问题的详细教程》本文详细介绍了在Windows下解决Matplotlib中文显示问题的方法,包括安装字体、更新缓存、配置文件设置及编码調整,并... 目录引言问题分析解决方案详解1. 检查系统已安装字体2. 手动添加中文字体(以SimHei为例)步骤

MyBatis-Plus通用中等、大量数据分批查询和处理方法

《MyBatis-Plus通用中等、大量数据分批查询和处理方法》文章介绍MyBatis-Plus分页查询处理,通过函数式接口与Lambda表达式实现通用逻辑,方法抽象但功能强大,建议扩展分批处理及流式... 目录函数式接口获取分页数据接口数据处理接口通用逻辑工具类使用方法简单查询自定义查询方法总结函数式接口

MySQL深分页进行性能优化的常见方法

《MySQL深分页进行性能优化的常见方法》在Web应用中,分页查询是数据库操作中的常见需求,然而,在面对大型数据集时,深分页(deeppagination)却成为了性能优化的一个挑战,在本文中,我们将... 目录引言:深分页,真的只是“翻页慢”那么简单吗?一、背景介绍二、深分页的性能问题三、业务场景分析四、

JAVA中安装多个JDK的方法

《JAVA中安装多个JDK的方法》文章介绍了在Windows系统上安装多个JDK版本的方法,包括下载、安装路径修改、环境变量配置(JAVA_HOME和Path),并说明如何通过调整JAVA_HOME在... 首先去oracle官网下载好两个版本不同的jdk(需要登录Oracle账号,没有可以免费注册)下载完