ubuntu环境下配置samba 服务器

转载自:http://blog.sina.com.cn/s/blog_640029b30100u5mj.html


费了就牛二虎之力终于把samba服务器配置好了,在配置的过程中遇到不少得问题,通过上网查阅资料,终于配置完成。在此做个记录

配置环境 :ubuntu 10.0 版本    win7系统

Samba服务在Ubuntu服务器版本中默认并没有安装。

1.Samba软件包的安装
在Ubuntu的终端中输入一下命令:
#sudo apt-get install samba
(执行此条命令时可能会提示出现错误,无法成功下载,按照提示 会出现 输入 apt-get uptdate 命令,输入此命令后 ,然后再输入 sudo apt-get install samba 命令 就可以成功下载了)
#sudo apt-get install smbclient
ubuntu环境下配置samba <wbr>服务器
ubuntu环境下配置samba <wbr>服务器
2.Samba服务器的启动与关闭
启动Samba服务器只需执行如下命令:
#sudo /etc/init.d/samba start

(执行此命令可能会提示 command  not found 解决方法是  输入 sudo /etc/init.d/smbd start /restart /stop)
启动Samba服务器后,可以使用ps命令查看进程:
#ps -aux
ubuntu环境下配置samba <wbr>服务器
可以看到Samba服务会同时启动两个服务,其中smbd主要用来管理共享出来的目录,nmbd主要用来解析NetBIOS名。在Windows系统中,主机可以被加入一个组中,这样每个主机都必须有一个名字,这个名字是用于在网上被标志的名,并非机器的主机名,将其称为NetBIOS名。其中nmbd进程是随着smbd进程启动而启动。
3.配置Samba服务

Samba服务器主要配置文件为/etc/samba/smb.conf,并且可以将NetBIOS名与主机的对应关系写在/etc/samba/lmhosts文件中。

(1)在Windows系统中不用输入密码访问Linux共享目录
在Linux共享一个目录,将建立好的目录的设置信息写入/etc/smb.conf文件即可。如:若共享/home/share目录,要在Windows系统中访问这个共享的目录,假设Windows主机的IP为192.168.0.11,Linux主机的IP为192.168.10,进行如下操作:
#mkdir /home/share
#vi smb.conf
将文件中的内容做如下相应修改:
security=user 改为security=share
在文件结尾添加如下行:
[share]
comment=this is Linux share directory
path=/home/share
public=yes
writable=yes

保存退出,启动Samba服务:
#/etc/init.d/samba start

设置完成!

在Windows 下访问共享目录,可点击运行,输入
\\192.168.0.10\share
这样就能以匿名用户访问共享目录share了。

其中配置文件smb.conf主要可以分为两部分:前一部分为Global Settings(全局部分),全局部分能够对主机的相关信息进行配置,而且能够配置访问时是否需要密码。常用选项有:

workgroup=MSHOME

这部分是Windows主机的工作组明,Windows主机必须在同一个工作组中,

server string=%h server(Samba,Ubuntu)

这个选项是显示在Windows上的信息,可以自定义,其中%h为Samba配置文件中的变量,代表了主机名,即使用hostname命令得到的主机名。

log file=/var/log/samba/log.%m

这里指定了Samba服务的日志文件所在位置,其中%m也是samb.conf文件的变量,代表了登录主机的NetBIOS名。Windows主机的NetBIOS命令可以通过鼠标右键打开“我的电脑/属性/计算机明/更改/其他“来查看。

ubuntu环境下配置samba <wbr>服务器
max log size=1000

设置日志文件的最大尺寸,大小为KB。

需要注意的是在smb.conf文件中“#”和“;”都是注释。

在smb.conf文件中跌入部分就是共享部分,在此部分中需要将共享的目录添加到此文件中。此部分的格式和主要选项如下:
[share]           ----------在Windows主机中看到的共享文件名,不一定与Linux中共享的文件名一致,

comment=this is Linux share directory ----------对此目录的说明
path=/home/share -------Linux系统真实的共享目录,必须为绝对路径
public=yes -------是否允许所有人都能够看到此目录,no为看不到
writable=yes -------是否允许用户在此目录下可写,no为不可些,如果可写,还需要目录具有w权限
read only=yes --------设置用户是否只读
create mode=0700 --------如果有可写权限,建立的文件默认的权限掩码
directory mode=0755 --------如果有可写权限,建立的目录默认的权限掩码
(2)在Windows系统之需要输入密码才能访问Linux共享目录

在smb.conf文件中,默认行是:

security=user

这行设置了Samba的安全等级,Samba一共可以设置四个安全登记,由底到高分别为:

share:这个选项表示任何人都可以不需要输入密码登录。

user:这个是Samba的默认级别,要求每个用户必须输入密码才能登录。

server:user级别的密码都是保存在本机上,而server级别的密码和用户名都保存在另一台主机上。

domain:这个级别要求网络里必须有一台Windows的域控制器,验证工作由域控制器来完成。

需要注意:只要输入用户名和密码的级别,其用户名一定首先也是Linux系统内的用户。

如果将Samba的安全级别设置了user级别,那么用户登录Samba主机必须输入密码,此用户必须是Linux中的/etc/passwd文件存在的用户,smb.conf文件的配置如下:

在smb.conf文件中的security=user下加入:
smb passwd file= /etc/samba/smbpasswd

在共享部分添加:

[homes]
comment=Home Directories
valid users=%S

其中%S为一个变量,它代表了登录用户的用户名,既认证的用户登录后就能进入自己的宿主目录。然后在 /etc/samba下建立smbpasswd文件并加入用户:

#touch /etc/samba/smbpasswd
#smbpasswd -a user1
NEW SMB password:
Retype new SMB password:

这样就可以让user1登录Samba主机了。其中smbpasswd命令的格式为:

#smbpasswd [-选项] 用户名

常见选项有:

-a:新添加一个Samba用户。

-d:禁用一个Samba用户。

-e:使禁用的Samba用户解禁。

如果需要对设置进行检测,我们可以直接使用testparm命令。

(3)在Linux中访问Windows的共享目录
在Linux中,可以直接将Windows中的共享目录挂在到本机中,然后就像操作自己主机上的文件一样进行操作。我们可以使用smbclient命令查看指定主机的共享目录信息。

# smbclient -L //[目标主机IP地址]

当查看到Windows系统中的共享目录后,可以使用smbmount命令来进行挂载共享的目录,smbmount命令的格式为:

#smbmount '\\Windows主机IP\共享的目录名' 挂载点 -O username

(4)在Linux中访问Linux主机的共享目录

跟访问Windows中的共享目录一样,用自己的共享目录测试如下:

ubuntu环境下配置samba <wbr>服务器

===================================================
Samaba常见的故障排除

1.限定用户访问无效
管理员限定了只有用户user1才可以访问共享目录/sharedoc,测试时却发现用户user2也可以访问,甚至所有的用户都可以访问!这是一个很容易出错的问题,我们看看在Samba配置文件/etc/samba/smb.conf中的相应设置段:
[sharedoc]
path=/sharedoc
valid user=user1
writable=yes
乍一看没什么问题,用testparm工具测试一下看看:

#testparm

Load smb config files from /etc/samba/smb.conf

Processing section "[homes]"

Processing section "[sharedoc]"

Unknown parameter encountered: "valid user"

Ignoring unknown parameter "valid user"

.......

[sharedoc]

path=/sharedoc

read only=No

testparm是Samba提供的一个十分有用的测试工具,它除显示Samba所有配置参数默认值外,还能检测参数的实际取值,并与Samba管理员所设置的取值进行对比,检测smb.conf文件有没有包含任何无效参数。

通过测试发现,设置共享资源时,参数“valid users”少写了个"s“ ,变成了"valid user",结果在读取配置文件时检测为未知参数并忽略了它,这样这条参数就无效了,也就相当于没有设置有效用户,则默认共享目录为所有用户都可以访问,就出现了前面提到的问题。可见如果不小心设置错误,后果是相当严重的。

Samba的配置选项语法要求严格,建议配置好后用testparm检测一下看看是否有语法错误,以免发生此种现象。

2.用户权限设定无效

在解决了限定用户的问题,又发现明明设置了"writable=yes",赋予user1写权限,但user1在Windows客户端却无法对这个共享目录进行写操作。

这里有个概念问题,尽管Samba授予用户user1对共享资源具有写权限,但底层Linux系统许可不允许user1在共享资源上添加文件或目录。这时,唯有更改该目录的Linux文件权限设置,更改完成后,才可以进行前述的写入操作。也就是说,Linux系统中用户user1对此目录的权限与Samba服务中授予用户user1对此目录的操作权限要取一个交集!

观察共享目录/sharedoc的权限:

#ls -ld /sharedoc

drwxr-xr-x 2 root root 4096 2月 6 23:54 /sharedoc

在根目录下只有root只有写操作,root创建的目录/sharedoc自然所有者为root,所属组为root管理员,看到用户user1并不是所属组的成员更不是所有者,属于其他人(others),其他成员只具备"r-x"即可读可执行的权限,并不具备写权限,所以即便Samba中授权用户user1有写权限也无济于事。

如果要授予user1可以进行写操作,最简单的办法就是赋予其他人对目录具备写权限:

#chmod o+w /sharedoc

正确的解决方法最好是将设置权限的用户加入到目录对应的组中,对组授权,进行统一管理。

3.解决中文乱码问题

在Windows中看到Linux的共享文件和目录中文都显示乱码。

要解决这个问题,首先执行命令locale查看一下系统的字符集:

#locale

LANG=zh_CN.GB18030

LC_CTYPE="zh_CN.GB18030"

LC_NUMERIC="zh_CN.GB18030"

LC_TIME="zh_CN.GB18030"

.........

然后根据locale查到的字符集设置,修改配置文件smb.conf中的"[Global]"全局参数设置段:

(1)如果locale是zh_CN.UTF-8,添加如下三行设置:

display charset=UTF-8

unix charset=UTF-8

dos charset=UTF-8

(2)如果locale是zh_CN.GBK、zh_CN.gb2312或zh_CN.GB18030,添加如下三行设置:

display charset=cp936

unix charset=cp936

dos charset=cp936

重新启动Samba服务,则无论从Windows网上邻居还是直接用DOS命令查询,均可显示正常中文。

4.如何不显示隐藏文件

如果访问宿主目录,那些以"."开头的隐藏文件都显示得一清二楚,那么就有可能一个误操作把重要的配置文件删除了,这是很危险的。

要让隐藏文件不显示,需要在Samba配置文件的[homes]段添加如下设置:

veto files=/.*/

"veto files"参数为设定禁止文件,指定了既看不见又不能访问的文件和目录列表,列表中每个条目必须用斜杠(/)分开,星号(*)和问号(?)通配符能够用于指定多个文件和目录。所以"/.*/"就表示禁止所有以"."开头的文件。

同时还可以做其他一些限定,如Samba所有共享目录中都禁止显示包含词Windows的任何文件,以".exe"结尾的任何文件和包含词bill的任何目录,可以在[Global]段添加如下行:

veto files=*.exe

veto files=

这样设置,第一行的禁止显示隐藏文件将不能生效,必须写成:

veto files=/.*

(2)设置"veto files"参数会影响Samba的性能,因为在列出文件和查询期间,扫描文件和目录时,为了匹配,Samba将被迫搜寻检查所有的文件和目录。

 

Samba的故障一般排除方法如下(参考):

1.确定故障的症状。可能会有人告诉你症状或你观察到第一手的症状。

2.因为涉及的是网络系统,确定故障发生在本地还是远程,症状经常会帮助你做决定,或建议能够先进行测试,以便决定。

3.决定了故障所在的位置后,就集中用一套标准测试来确定故障的原因,并尝试消除症状,反复进行,直到解决问题。

有关诊断Samba和Windows客户之间故障的工具:

smbclient:检验可以访问的Samba服务器以及要求的共享已被定义。

smbstatus:检查水正对Samba服务器打开连接,在访问什么共享。

nmblookup:检测网络上的注册名称。

DOS net view命令:从Windows系统检查服务器上都提供哪些共享。

DOS netstat:检查NetBIOS名称、适配器状态信息等。

tcpdump:捕获网络文件信息包,检查Windows客户端和服务器的对话。

Ethereal:详细分析信息包,检查Windows客户端和Samba之间出现的故障。


samba服务器配置完成后,在win7操作系统中还是无法实现 文件夹的共享,这是什么原因呢?
默认情况下,Windows 7无法正常访问NAS或者Samba服务器上的共享文件夹。原因在于从Vista开始,微软默认只采用NTLM v2协议的认证回应消息了,而目前的NAS系统和Samba还只支持LM或者NTLM。

  解决办法:修改本地安全策略或直接修改注册表

1、修改本地安全策略

  运行secpol.msc打开“本地安全策略”窗体,依次点开“本地策略”-》“安全选项”,修改“网络安全: LAN 管理器身份验证级别”的值为“发送 LM 和 NTLM – 如果已协商,则使用NTLMv2 会话安全”,一路确定即可。如下图1和图2所示——

      ubuntu环境下配置samba <wbr>服务器
ubuntu环境下配置samba <wbr>服务器

2、修改注册表

  修改 HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Lsa下的LmCompatibilityLevel的值为1。


  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
http://www.linuxidc.com/Linux/2014-12/110459.htm Samba-4.1.14服务器安装和配置 http://www.2cto.com/os/201408/327930.html 【Linux笔记】sambav4.1.9源码安装及基本使用说明 http://blog.sina.com.cn/s/blog_627617bf0101s4ps.html samba4.1.6源代码部署及配置 (2014-04-04 09:41:00)转载 2016/6/14 15:23 由于ubuntu14.04.4麒麟版本使用: sudo apt-get install samba安装的samba是:V4.3.9 共享文件时ubuntu上的samba V4.3.9会出错(崩溃)。 所以直接使用源码安装来共享文件了(从win7来访问ubuntu14.04.4麒麟版本)。 标签: samba linux资源共享 smb 分类: Samba SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。 samba服务器搭建: 1.解压samba-4.1.6.tar.gz得到samba-4.1.6目录 tar -xvzf samba-4.1.6.tar.gz 2.进入samba-4.1.6目录,在该目录下输入: ./configure --prefix=/usr/local sudo ./configure --prefix=/usr/local/samba-4.1.6 make make install sudo make install 注意:4.x版本的samba的build system是基于python的,必须安装有python2.5版本以上。(python3.x系列的不行) 如果系统没有符合条件的python版本,可以运行samba-4.1.6目录下的install_with_python.sh,会自动帮你安装python。(./install_with_python.sh /usr/local) 3.创建一个文件夹,用来共享文件 mkdir -p /home/fzuir/share chmod 777 /home/fzuir/share 4.samba配置samba源码目录samba-4.1.6中的samba-4.1.6/examples/smb.conf.default复制到安装目录,一般是/usr/local/samba/etc/中 cp ~/samba-4.1.6/examples/smb.conf.default /usr/local/samba/etc/ 修改配置文件 sudo vim /usr/local/samba/smb.conf (1)修改samba服务器的安全模式,samba的安全模式有:(默认是user,不修改也可) share:用户访问Samba Server不需要提供用户名和口令, 安全性能较低。 userSamba Server共享目录只能被授权的用户访问,由Samba Server负责检查账号和密码的正确性。账号和密码要在本Samba Server中建立。 server:依靠其他Windows NT/2000或Samba Server来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。 domain:域安全级别,使用主域控制器(PDC)来完成认证。 修改方法:在配置文件中查找security=user,把前面的注释#去掉。 (2)添加文件共享定义信息 修改方法:在配置文件末尾添加如下内容: [Share] comment=Shared Folder path=/home/fzuir/share #public=yes(允许匿名访问) writable=yes(可写) #readonly=yes(只读) valid users=fzuir (可访问用户名,组可用 @组名) create mask=0700 directory mask=0700 available=yes browseable=yes [rootroot] comment=rootroot Shared Folder path=/ #public=yes writable=yes #readonly=yes valid users=rootroot create mask=0700 directory mask=0700 available=yes browseable=yes (3)修改编码 在[global]段内添加如下三行: display charset=UTF-8 unix charset=UTF-8 dos charset=cp936 5.添加samba用户 添加fzuir这个网络访问账户,fzuir用户如果已存在则不用。 sudo useradd fzuir 上面只是新增了fzuir这个用户,却没有赋予本机登录密码,所以只能从远程访问,不能从本机登录。而且samba的登录密码可以和本机登录密码不一样。 现在在samba中添加这个帐号 sudo /usr/local/samba/bin/smbpasswd -a fzuir sudo /usr/local/samba-4.1.6/bin/smbpasswd -a fzuir cm04@cm-System-Product-Name:/usr/local/samba-4.1.6/etc$ sudo /usr/local/samba-4.1.6/bin/smbpasswd -a rootroot Ignoring unknown parameter "display charset" New SMB password: Retype new SMB password: Added user rootroot. cm04@cm-System-Product-Name:/usr/local/samba-4.1.6/etc$ cm04@cm-System-Product-Name:/usr/local/samba-4.1.6/etc$ cm04@cm-System-Product-Name:/usr/local/samba-4.1.6/etc$ 6.测试并启动samba sudo /usr/local/samba/bin/testparm cm04@cm-System-Product-Name:/usr/local/samba-4.1.6/etc$ sudo /usr/local/samba-4.1.6/bin/testparm Load smb config files from /usr/local/samba-4.1.6/etc/smb.conf rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384) Unknown parameter encountered: "display charset" Ignoring unknown parameter "display charset" Processing section "[homes]" Processing section "[printers]" Processing section "[rootroot]" Loaded services file OK. Server role: ROLE_STANDALONE Press enter to see a dump of your service definitions [global] dos charset = cp936 workgroup = MYGROUP server string = Samba Server server role = standalone server log file = /usr/local/samba/var/log.%m max log size = 50 dns proxy = No idmap config * : backend = tdb [homes] comment = Home Directories read only = No browseable = No [printers] comment = All Printers path = /usr/spool/samba printable = Yes print ok = Yes browseable = No [rootroot] comment = rootroot Shared Folder path = / valid users = rootroot read only = No create mask = 0700 directory mask = 0700 cm04@cm-System-Product-Name:/usr/local/samba-4.1.6/etc$ 重启samba: sudo /usr/local/samba/sbin/smbd restart sudo /usr/local/samba/sbin/nmbd restart sudo /usr/local/samba-4.1.6/sbin/smbd restart sudo /usr/local/samba-4.1.6/sbin/nmbd restart 7.在不同的系统之间访问samba (1)windows下:在文件管理器地址栏中输入\\samba服务器IP 即可以查看共享文件夹或者打印机。 \\192.168.0.8 (2)linux下: 方法1:使用smbclient 客户机以同样方式安装samba ①列出某个IP地址所提供的共享文件夹 sudo /usr/local/samba/bin/smbclient -L 192.168.0.1 -U username%password ②使用smbclient获取共享文件 sudo /usr/local/samba/bin/smbclient //192.168.0.1/Share -U username%password 执行成功后进入smbclient环境,出现命令提示符:smb:\> 这里可使用的命令有: ?:列出所有可用命令 cd:进入共享文件目录 del:删除某个文档 lcd:变换本机目录 ls:查看目前所在目录 dir:同ls get:下载单个文件 mget:下载多个文件 mput:上传多个文件 put:上传单个文件 rm:删除文件夹 exit:离开 方法2:使用mount进行挂载 可以使用mount挂载远程共享文件夹: sudo mount -o username=fzuir,password=123456 //192.168.0.1/Share /mnt/tmp
提供的源码资源涵盖了Java应用等多个领域,每个领域都包含了丰富的实例和项目。这些源码都是基于各自平台的最新技术和标准编写,确保了在对应环境下能够无缝运行。同时,源码中配备了详细的注释和文档,帮助用户快速理解代码结构和实现逻辑。 适用人群: 适合毕业设计、课程设计作业。这些源码资源特别适合大学生群体。无论你是计算机相关专业的学生,还是对其他领域编程感兴趣的学生,这些资源都能为你提供宝贵的学习和实践机会。通过学习和运行这些源码,你可以掌握各平台开发的基础知识,提升编程能力和项目实战经验。 使用场景及目标: 在学习阶段,你可以利用这些源码资源进行课程实践、课外项目或毕业设计。通过分析和运行源码,你将深入了解各平台开发的技术细节和最佳实践,逐步培养起自己的项目开发和问题解决能力。此外,在求职或创业过程中,具备跨平台开发能力的大学生将更具竞争力。 其他说明: 为了确保源码资源的可运行性和易用性,特别注意了以下几点:首先,每份源码都提供了详细的运行环境和依赖说明,确保用户能够轻松搭建起开发环境;其次,源码中的注释和文档都非常完善,方便用户快速上手和理解代码;最后,我会定期更新这些源码资源,以适应各平台技术的最新发展和市场需求。 所有源码均经过严格测试,可以直接运行,可以放心下载使用。有任何使用问题欢迎随时与博主沟通,第一时间进行解答!

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值