Samba 服务器
其主要是提供linux和windows之间互相访问,也可以提供linux和linux之间互相访问;
安装: # yum install samba -y
配置 文件的主目录是放在 /etc/samba/ 这个目录中
samba装完之后,它有两个daemon,一个是nmbd、SMBd
Nmbd主是为了给一些比较老的系统来访问,比如:Netbios,正常情况下你使用IP地址来访问时,没有必须启动这个服务;
Smbd 它是一个主的daemon,它的作用是共享某一个目录以及提供一些用户的身份验证等
Samba所使用的端口号有四个:
UDP的137、138
TCP的 139、445
配置文件的讲解:
# vim /etc/samba/smb.conf
这个下面讲的是关于selinux的一些问题,如果smb在配置完之后,有什么问题,要考虑到selinux的布尔值的问题
这个是全局配置,在这里做过的配置,它将会影响到整个的samba服务器
这里的工作组,是windows里面的概念,如果要能和windows共享,这个工作组的组名必须和windows一样
这个是关于这台samba服务器的描述性信息 后面的 %V 它是一个变量,指samba版本
让客户端使netbios就能访问我们的samba 服务器,默认没有启用
这句话的意思是, 允许客户端通过哪个接口来访问SMB服务器 ,默认这行是注释掉的,后面有写lo和eth0两个接口,如果把前面的注释去掉的话,则客户端可以通过eth0来访问SMB服务器,就不能通过eth1来访问SMB服务器(如果有多个接口的话),如果需要eth1接口也可以访问的话,那就把eth1接口也加进来;
这行就是SMB自带的防火墙,这里有写允许哪些网段可以访问SMB服务器,默认是注释掉的;
这里写的是关于日志的一些信息,最大是多大,超过最大数系统会给做一个回滚;
当客户端来访问SMB服务器,是通过什么形式来验证的,如果后面写的是 user 的话,客户端来访问SMB服务器时必须输入用户名和密码;
如果你不想让客户端访问SMB服务器的时候输入密码,你只要把后面的 user 改成 share 就可以了;如果你的环境中有一台radio服务器,就是专门做验证用的,你可以将后面的 user 改成 server 就可以了;
Domain members options这个选项是用来设置如何将这台SMB服务器加入到 windows的活动目录中去;
domain controller options这个选项是用来设置如何将这台SMB服务器设置成DC,实际上是PDC( 模拟域控制器 );也就是说如何让这台SMB变成PDC(模拟DC)
设置共享用的
这里设置的就是具体的共享,当你用某个用户登录的时候,它会把你的家目录也同时的共享出去;
这部分是用来设置共享打印机的
下面开始写具体的共享文件:
解释:
[test] 表示共享出去在客户端显示的名字
Comment = first samba 表示注释 (可有可无)
Path = /ovinzhang 表示真正共享的文件夹的绝对路径的文件夹名
Writable = yes 表示客户端是否具有写权限(yes表示所有人都可以写,no表示不可写,
写yes的时候,要把下面的一句write list这行给删除掉就可以了)
Public = yes 表示匿名用户是否可以访问
Write list = ovinzhang 表示让指定的用户ovinzhang可以写(但是writable后面必须等于yes)
Write list = @ovinzhang 表示ovinzhang这个组都可以写
Write list = +ovinzhang 表示ovinzhang这个组都可以写
Browseable = no 表示隐藏共享,把共享出去的文件给隐藏掉,可以直接输入共享名访问
如果selinux为permissive模式的话,客户端是可以访问SMB服务器的;
如果selinux为enforcing模式的话,客户端是不可以访问SMB服务器的;
如果是enforcing模式,那就必须把刚刚共享出去的/ovinzhang目录上下文给更改一下
将/ovinzhang/这个目录的上下文改成 samba_share_t ,这个时候客户端就可以访问SMB服务器了;
下面开始往SMB服务器新建文件,如下:
此时,显示无法创建文件夹,拒绝访问,这时我们就需要从以下几个方面来考虑这个问题:
第一: 在配置文件中有没有开启写权限;
第二: 当你访问SMB共享出来的test时,实际上在服务器上是/ovinzhang,
这时就要看/ovinzhang这个目录的权限了,是否允许其它人写;
第三: 如果开启了写权限,还是写不了的话,这时就要考虑selinux问题了,
看一下是不是上下文出现问题了;
下面我们就开始让客户端访问SMB时要输入密码,如下:
这时,需要将standalone server options下面的 security = share改=user
User 要密码
Share 不要密码
Server 需要第三方验证
注意:给samba服务器添加用户时,这个用户必须是系统中存在的用户。
详细如下:
# smbpasswd -a lduan 添加一个用户
这个用户的密码可以和系统中的密码不一样,但是用户必须是系统中存在的;
# smbpasswd -d lduan 禁用一个用户
# smbpasswd -e lduan 启用一个用户
# smbpasswd -x lduan 删除一个用户
“-d” 表示disable 关闭
“-e” 表示enabled 启用
“-x” 表示 delete 删除
还可以使用下面的命令来添加用户:
# pdbedit -a -u bob 添加bob用户来samba用户
使用下面的命令可以查看当前samba中添加了几个用户,如下:
# pdbedit -L 显示samba服务器用户数量
# pdbedit -Lv bob 显示bob用户的详细信息
然后就可以通过输入用户名和密码登录SMB服务器了,这时你会看到每个不同的用户登录SMB服务器时,都会显示自己的家目录,为什么叫?如下:
那是因为在share definitions下已经定义过了把用户家目录也共享出去的条目,截图如下:
通过刚才的配置我们已经实现了,可以让所有的人都能写,也可以上所有的人不能写,是通过writable = yes or no来实现的,当等于yes时,所有的人都可以写,当等于no的时候,所有的人都不可以写,但是等于yes的时候,要把write list = 这一行给删除掉就可以了;如果writable 等于no时,表示所有的人都不可以写,要是想让指定的人可以写,就必须配合write list这行来做,只要把可以让写的用户或者组给写在write list后面就可以了,ovinzhang表示用户;@ovinzhang表示组
单通过smb.conf文件是无法控制允许哪些用户可以浏览共享文件,哪些用户不可以浏览共享文件,我们需要使用下面的方法来实现,这时我们只要找到global settings这个下面加上句 config file = /etc/samba/smb.conf.%U 就可以了,具体的如下:
这个%U表示的是用户的变量,代表一些用户,这个config file后面是一个路径,如果我们要想让ovinzhang这个用户可以浏览共享的文件夹,我们就在下面的目录中新建一个叫 smb.confg.ovinzhang的文件,截图如下:
这时,在/etc/samba/这个目录下就有一个叫做 smb.conf.ovinzhang的文件,因为上面写过了变量,就是说当ovinzhang这个用户通过网络访问SMB服务器的时候,就会使用smb.conf.ovinzhang这个配置文件,而不会使用系统默认的smb.conf这个配置文件了,这时我们只要在smb.conf.ovinzhang这个文件中配置一下文件就可以,把browseable改成等于yes就可以了,也就是smb.conf.ovinzhang这个文件是可以浏览共享文件的!!!!!!!!!
如果你要想检查一下刚刚做的配置文件的语法有没有问题,可以使用下面的命令:
# testparm
Linux客户端可以使用下面的命令来访问SMB服务器
# smbclient -L //192.168.24.10 –U ovinzhang 查看SMB共享
# smbclient //192.168.24.10/test –U ovinzhang 访问SMB共享的test文件
这种方法也同样适合登录windows的共享文件。
查看当前连接到smb服务器的客户端
# smbstatus
查看网络中的共享机器
# smbtree
如何利用samba搭建成PDC
PDC的全称: 模拟域控制器
编辑配置文件:
# vim /etc/samba/smb.conf
这个下面的内容主机是讲如何将SMB服务器加入到windows域中
这个下面主要是讲如何将这台SMB服务器变成PDC
下面我们就来编辑一下domain controller options这个选项下面的内容:
我们如果想让这台SMB服务器模拟PDC的话,我们要先启用以下几个功能:
这一行给启用(去掉前面的注释) 后面只能是user
这两行也给启用(去掉前面的注释)
然后我们再进入Browser Control Options 这个下面:
进入这个下面,找到下面三行也给启用
将这三行也给启用了
将这三行改成如下:
将local master=no 改成=yes
将 os level = 33 改成=100 数字越大级别越高
到目前为止,这台机器已经变成了PDC了,已经有这个功能了
下面开始让客户端加入这个域;
首先在SMB服务器上建立一个账户,如下:
# mkdir /home/samba
# useradd -d /home/samba/tom tom 新建一个tom用户,并且tom用户的家目录为/home/samba/tom
然后再将tom用户加入samba 服务器:
# smbpasswd -a tom 或者 # pdbedit -a -u tom
添加好samba用户之后,我们再将下面两行的注释给去掉,如下:
意思是当客户端加入域之后,使用用户登录系统时,将会运行的脚本是什么
运行的脚本为test.bat( 这个文件的路径在用户家目录下有一个netlogon里面。/home/samba/tom/netlogon/ )
然后再在这个目录创建一个批处理文件,如下:
先创建这个目录
# mkdir /home/samba/tom/netlogon
再建批处理
# vim /home/samba/tom/netlogon/test.bat
Net use k: /home
解释一下这个批处理文件,把家目录映射为K盘,否则它默认会映射到Z盘
到这里,test.bat这个批处理就已经写好了,因为linux和windows里的格式又不一样,所以我们必须在linux上装一个工作具包 unix2dos,如下:
# yum install unix2dos -y
装完之后,再将刚刚那个批处理文件给转换一个格式,如下:
# unix2dos /home/samba/tom/netlogon/test.bat
意思是当系统windows系统刚登录的时候,必须要初始化自己的桌面系统(及一些设置),就是将这些桌面系统和设置存放的路径
将这个路径改一下
然后再在这行下面加一句 logon home = \\%N\%U
“ %N ”表示PDC服务器的IP地址
“%U”表示用户的家目录
完成以上操作,PDC就配置的差不多了;
因为整个环境中没有 DNS服务器 ,所以我们还要打开一项功能,如下:
将wins支持给启用起来;
因为你要实现PDC的话,必须要使用DNS,又因为我们整个环境中没有DNS服务器,所以我们就使用wins服务器,也就是netbios;如果有DNS服务器,就不需要启用这项功能了;
到现在为止,PDC就配置好了,下面需要重启两项服务如下:
# service smb restart
# service nmb restart 就是说当你使用netbios或者workgroup的时候,必须把nmb给打开
下面就在客户端操作,如下:
首先将客户端加入域,域的名字为了global settings下面的,workgroup= 后面的值ovinzhang

如若转载,请注明出处:http://www.cyclm.com/82467.html