快捷搜索:   nginx

Ubuntu Server Samba 服务器搭建与解释

启动Samba

对于一个简单的Samba设置,你应该能够使用安装包里自带的默认的smb.conf。如果你想要做一些改动,而你要马上得到改动后的效果,就 一定得重新启动Samba服务器。启动、关闭和重新启动Samba服务器使用的都是同一个脚本: /etc/rc.d/init.d/smb,只是在使用时传递不同的参数罢了。可选的参数包括start,stop和restart。在Red Hat里你还可以直接使用下面方便的smb脚本:

service smb restart

在Red Hat里你也可以使用桌面系统里的服务配置工具(redhat-config-services)来启、停Samba。

为了保证名称解析的正确,你可以在 /etc/lmhosts 文件里写入你自己主机的名称的IP地址。在Windows系统里lmhosts入口包含一个IP地址和系统的NetBIOS名称。这个名称是可以被 Microsoft网络识别的。对于你自己的Linux系统,你可以将系统的IP地址和Linux系统的主机名加进去。

从Linux访问Samba

为了测试能否用Linux连接到Samba,你可以用smbclient命令来查询Samba服务器。要想访问一个在Samba服务器上的用户主目录,使用Samba服务器的IP或者主机名地址,并且使用homes段。使用-U选项来指定一个连接到这个系统中的用户:

smbclient //turtle.mytrek.com/homes -U dylan

这条命令之后它可能要求你输入。如果客户端的和服务器端的密码不一样,就使用服务器端的密码。一旦连接成功,SMB命令提示符会显示出来。你就可以访问这个用户的主目录及其文件了。

smb: \>

从Windows访问Samba

为了建立一个与Windows客户端的连接,你需要指定Windows的工作组名(workgroup name)和其相应的密码。工作组名就是在“网上邻居”中的“整个网络”中显示的名字。在smb.conf文件里,你在global段中的 workgroup=处指定工作组名。工作组名要使用大写字母、不多于8个字(eight charactors)而且不能有空格。

重新启动Samba服务,在Windows客户端,你在“网上邻居”里的“整个网络”里看工作组名字。在工作组里面有一个图标就是Samba服务器。进入这个图标,就是用户的目录了,也就是smb.conf文件里指定的主目录段。

Samba配置文件和工具

Samba的配置都保存在/etc/samba/smb.conf文件里。其实都是通过修改这个文件来改变Samba的配置的。每次你改变了配置文 件,你都应该使用测试工具测试你的smb.conf文件。测试工具检查我的配置文件的各个配置入口是否有效。默认情况下测试工具使用/etc/samba /smb.conf这个配置文件,当然你也可以通过传参数来指定另一个配置文件:

testparm

为了检查你的网络连接,使用smbstatus命令。这条命令返回所有的SMB连接的列表。

注意:/etc/samba/smbusers文件处理Windows网络的用户名和相应的Linux Samba服务器用户的关联。例如,admin和administrator对于Linux根用户来说是一样的。

密码

由于Windows网络与Samba的密码加密机制的不同,这让从Windows客户机连接到Samba服务器变得更加地复杂了。当今常用的 Windows系统如Windows NT、2000、98和95都在默认时启用加密算法;而Samba却在默认时不用加密算法。于是为了能够正常的通信,你就得或者改变Windows客户机 让他们不用加密的、或者让Samba服务器使用密码。当然,让Samba服务器默认情况下加密是更安全的做法,但这也引入了更繁琐的配置、管理工作——也 就是本节内容。尽管Samba默认不是分布式的,但是我们可以构建支持SSL的Samba。支持SSL的Samba能提供SSL加密的网络通信。这个支持 SSL的Samba有好几个对应的SSL配置文件,每一个都以ssl开头。例如:ssl cipher让你决定是否使用ciphers;ssl CA certFile指定认证文件。

Samba也提供了它自己的PAM密码模块:pam_smbpass.o。用这个模块你就可以提供PAM验证了,让Windows主机工作在PAM 控制的网络中。对于这个模块,PAM samba文件可以用来验证和密码管理。下面的几处就是用来实现PAM验证和密码管理的:

auth required pam_smbpass.so nodelay

password required pam_smbpass.so nodelay

还要注意一定要在smb.conf中启用PAM:

obey pam restrictions = yes

Samba加密的密码:smbpasswd

加密的密码使用在用户安全级别上,而不是共享安全级别。在用户级安全上,用户只能在特定的Windows客户机上访问Samba服务器,因此每个用 户都有一个对应的Samba账户。一个用户登入他的客户机,然后就可以用他的账户登入Samba了。用户的账户名和密码就在/etc/samba /smbpasswd里保存。可以用smbpasswd命令来添加密码。

建立一个Samba密码文件

要想实现Samba服务的加密,Samba服务器要能够看到他们的密码。这个加密的密码文件就是/etc/samba/smbpasswd。用 smbpasswd命令来增删改密码。开始的时候,你就应该创建这个文件以便于你所有的用户都有加密入口。这个工作由mksmbpasswd.sh来完 成,你把/etc/passwd文件作为输入,它就产生了加密的密码文件。用重定向“>”来建立之。

例子:

cat /etc/passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

如果你的用户和他们的密码由NIS来管理,你应该用ypcat命令来访问他们的密码:

ypcat passwd | mksmbpasswd.sh > /etc/samba/smbpasswd

然后要注意的是你应该改变文件的权限,防止不正当的人来破坏。例如把权限改为600:

chmod 600 /etc/samba/smbpasswd

增加、修改密码

在此时,/etc/samba/smbpasswd文件已经包含的你所有用户的密码。如果再增加、更改它们,就用smbpasswd命令来处理。增加一个用户的例子:

# smbpasswd dylan

New SMB Password: 新密码

Repeat New SMB Password: 新密码

用smbpasswd改密码(如果没有密码,直接回车就行了):

$ smbpasswd

Old SMB password: 旧密码

New SMB Password: 新密码

Repeat New SMB Password: 新密码

配置加密的密码

你还应该注意的是:Samba是被配置成密码加密的。设置encrypt passwords选项为yes并指定smb的密码文件。这些选项都已经在etc/samba/smb.conf文件里了,但是他们都被用“;”注释掉了。你只要把它们的“;”去掉就行了:

encrypt passwords = yes

smb passwd file = /etc/samba/smbpasswd

你可以用SWAT来做这些变更。在GLOBAL页面里,在加密密码处的弹出菜单选择“是”。然后保存所做的修改。

注意修改之后重启服务器:

service smb restart

samba主配置文件/etc/samba/smb.conf中的主要参数设定:
该文件中#为信息注释符 ;为参数注释符

#======================= Global Settings =====================================
[global]

workgroup = MYGROUP
工作组名称

server string = Samba Server
主机说明

netbios name = SMBServer
在网络中的netbios名称,如果没有设定,预设值为HOSTNAME

hosts allow = 192.168.1. 192.168.2. 127.
设定哪些ip地址可访问主机

security = user
samba的安全级别,从低到高有四级:share/user/server/domain
share: 任何用户都可以访问服务器上的资源,无须帐号
user: 需要用户名和密码进行验证
server: 帐号验证交给另外一个服务器,如交给另一台NT服务器.
如果递交失败,就退到user安全级.
domain: 这个安全级别要求网络上存在一台Windows的主域控制器,samba将帐号递交
给该服务器验证.
user/server/domain要求用户在本地linux机器上也有系统帐户,否则不能访问.
这里只简单介绍一下share/user的用法,详悉设定请参看附录

encrypt passwords = yes
使用加密密码

smb passwd file = /etc/samba/smbpasswd
存放samba帐户密码的文件

local master = yes
samba服务器可以成为本地主浏览器

os level = 33
samba服务器的管理等级

domain master = yes
该服务器成为域浏览器

preferred master = yes
该服务器成为工作组中的首要主浏览器

#============================ Share Definitions ==============================
[homes]
comment = Home Directories
browseable = no
writable = yes
valid users = %S
create mode = 0664
directory mode = 0775
上面是用户家目录的设置

[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes
打印机设定

[do*****ent]
comment = daweicheng's do*****ent
path = /tmp/do*****ent
read only = yes
public = yes

[samba user guest]
comment = guest
path = /tmp/samba
read only = no
guest account = guest

简单介绍一下这里的几个参数:

comment=xxx
共享注释,即共享时对方主机能够看到的文件夹名称

path=/xxx/.../xxx/
共享的目录

read only= yes
只读属性设定

public = yes
公开属性,任何人可以看见该资源,无须帐号

guest account = xxx
访问者的帐户名

这里的参数很容易理解,所以不一一列举了,详细请看附录

如果你希望任何人都可访问共享资源,需要将Global Settings的安全级设定为:
security = share
共享目录参数需要:
public = yes
如果希望某些目录只有特定的用户访问,则要将Global Settings的安全级应设定为:
security = user
共享目录参数需要:
guest account = xxx
这个xxx用户(下例中是NewUser)是用useradd和smbpasswd创建的:

添加samba用户:
useradd NewUser
设定NewUser的samba密码:
smbpasswd -a NewUser
使NewUser可以使用samba服务:
smbpasswd -e NewUser

testparm可以验证/etc/samba/smb.conf的有效性,回车后会显示samba的参数设定

设定无误后,重启smb服务,并打开iptables中的tcp 139端口:
在/etc/sysconfig/iptables中加入:

#smb(samba)
-A RH-Lokkit-0-50-INPUT -p tcp -m tcp --dport 139 --syn -j ACCEPT

(加入的位置在REJECT规则之前)
然后service iptables restart
重启iptables服务

查看其他主机的共享资源:
smbclient -L WindowsHostName
此处WindowsHostName就是对方的windows主机名

smbclient //WindowsHostName/ShareName
可以访问对方主机上的ShareName共享文件夹
也可以是:
smbclient //xxx.xxx.xxx.xxx/D$
xxx.xxx.xxx.xxx表示对方的ip,D$是对方主机D盘的默认共享名称
如果访问的资源需要用户名和密码,可以加入-U参数,如:
smbclient //xxx.xxx.xxx.xxx/D$ -U UserName
然后按提示输入密码,登录后会得到一个提示符,有些类似于命令行方式的ftp登录.

挂载共享驱动器:
可以用smbmount或者mount命令
smbmount的例子:
smbmount //WindowsHostName/ShareName /mnt
这样就将ShareName下的内容挂载在/mnt下了
也可以用mount命令,例子:
mount -t smbfs -o username=xxx //xxx.xxx.xxx.xxx/D$ /mnt/
如果不正确显示中文,可以在-o参数后加入codepage=936,iocharset=cp936
即:
mount -t smbfs -o username=xxx,codepage=936,iocharset=cp936 //xxx.xxx.xxx.xxx/D$ /mnt/
卸载共享目录的命令是umount

在windows中访问samba服务器,可以用网上邻居
或者在"运行"中直接输入xxx.xxx.xxx.xxx即可

配置samba也可用redhat-config-samba或SWAT
使用SWAT需要先设置一下:
将/etc/xinetd.d/swat中的disable = yes设定为disable = no
service xinetd restart
重启xinetd服务
/sbin/chkconfig swat --level 35 on
在运行级3,5下让swat服务开机自动加载
最后,执行chkconfig --list | grep swat
swat : on表示swat服务已经开启了
在web浏览器中输入
以root身份进入配置界面,就可以对smb.conf进行设置了.

顶(0)
踩(0)

您可能还会对下面的文章感兴趣:

最新评论