SAMBA服务搭建

一、简介
1、认识
Samba 是一套使用SMB(Server Message Block)协议的应用程序, 通过支持这个协议, Samba允许Linux服务器与Windows系统之间进行通信,使跨平台的互访成为可能。Samba采用C/S模式, 其工作机制是让NetBIOS( Windows 网上邻居的通信协议)和SMB两个协议运行于TCP/IP通信协议之上,并且用NetBEUI协议让Windows在“网上邻居”中能浏览Linux服务器。
2、作用
用来沟通Windows与Unix这两种不同的作业平台;共享档案与打印机服务;提供身份认证;提供Windows网络上的主机名称解析(NetBIOS name)
3、两个进程
smbd:控制发布共享目录与权限;建立在NetBIOS 协议之上的应用协议,是基于TCP139/445 两个端口的服务
nmbd:主要用于名称解析;基于 UDP137/138 两个端口的服务
4、五种安全级别
share: 不需要samba账户就可登陆samba服务器
user: 需要添加samba账户才可以登陆samba服务器
server: 由另外一台samba服务器来对用户进行身份验证
domain:把samba服务器加入到NT域,由NT的域控制器来进行身份验证
ADS: Active Directory Service,活动目录服务,它是samba3.0中新增的身份验证方式。采用ADS验证方式,samba服务器集成到活动目录中
二、部署samba服务
1、环境准备
# service iptables stop
# setenforce 0
# vim /etc/selinux/config
SELINUX=disabled
2、安装服务
# yum install samba samba-common -y
# useradd -s /sbin/nologin george --创建samba服务登录用户
# smbpasswd -a george --将用户 george 设置为smb用户,并增加密码;修改密码时不用加 -a 参数,george必须是系统已经拥有的用户
# smbpasswd -x u1 --删除用户
# smbpasswd -d u1 --禁用用户
# smbpasswd -e u1 --启用用户
# pdbedit -L --列出所有用户
# pdbedit -Lv --列出所有用户的详细信息
# pdbedit -Lv george --列出用户 george 的详细信息
3、配置服务
# vim /etc/samba/smb.conf
[global] --这段是全局配置,是必段写的
  workgroup = MYGROUP --工作组,取个名
  server string = Samba Server Version %v --Samba服务器说明,可自定义
  log file = /var/log/samba/log.%m
  max log size = 50
  security = user --运行的安全级别,还有 share 验证方式
  passdb backend = tdbsam --帐号密码以数据文件的形式存放
  load printers = yes
  cups options = raw
[homes] --用户家目录通用的共享,每个用户都可以完全访问自己的家目录
  comment = Home Directories --共享资源说明
  browseable = no --是否可以被浏览
  writable = yes --可写
  [printers] --跟打印机相关的选项
  comment = All Printers
  path = /var/spool/samba
  browseable = no
  guest ok = no --匿名用户是否可以登录
  writable = no
  printable = yes
[linuxdir]  --自定义共享的目录;
path = --设置共享目录;dir
writeable = yes --是否可写,这里我设置为可写;yes/no
browseable = --是否可以浏览;yes/no
guest ok = --匿名用户以是否可登录;yes/no
# service smb restart --重启服务
4、客户端验证
4.1、使用 samba 客户端访问
# smbclient -L //192.168.133.3 --匿名用户查看 samba 服务器的共享
# smbclient -L //192.168.133.3 -U george --服务器上的 samba 用户查看共享
# smbclient //192.168.133.3/sambadir --匿名用户登录
# smbclient -U george //192.168.133.3/george -- samba 用户登录
  smb: \>     --这个标志就是代表登录 samba 服务器成功
  smb: \> help   --查看可使用的命令
  smb: /> lcd /client_dir   --更改客户端当前目录
4.2、使用 命令挂载 访问
# yum install cifs-utils -y
# mount [-t cifs] -o username=george,password=123456 //192.168.133.3/george /mnt     --用户 george 登录
# mount [-t cifs] -o guest //192.168.133.3/george /mnt       --匿名用户登录,但其实这个不能连接到george,因为 //192.168.133.3/george 后的这个george 不是配置文件里的标签名。
4.3、自动挂载
4.3.1、autofs自动挂载
# vim /etc/auto.master
/smbmount /etc/auto.smbmount
# vim /etc/auto.smbmount
upload -fstype=cifs,username=george,password=123456 //192.168.133.3/upload       --将标签为 upload 的类容挂载到 /smbmount/upload 上
# vim /etc/sysconfig/autofs
TIMEOUT=10        --如果过了设定的时间(这里是10秒),就自动卸载
BROWSE_MODE="yes"   --就算没有挂载,也显示挂载点;必须加上这一条。
# service autofs restart
4.3.2、fstab开机自动挂载
# vim /etc/fstab
//192.168.133.3/upload /smbmount/upload nfs defaults,credentials=/root/smb.passwd 0 0
# vim /root/smb.passwd
username=george
password=123456
二、配置实例
2.1、常规配置:
# vim /etc/samba/smb.conf
[guodaye] --共享名字
comment = For all Anonymous users
path = /samba/share     --把哪个目录共享出去
browseable = yes      --共享任何人可见
writable = yes       --指定该共享路径是否可写,默认不可写
[upload]
comment = Upload
path = /samba/upload
guest ok = no
browseable = yes
writeable = yes
valid users = u1,u2,+g1     --允许访问的用户和组
write list = u1         --允许写的用户
read list = u2,+g1       --只读的用户
create mode = 0344     --控制新建的文件的权限
force create mode = 0344   --控制新建的文件的权限
directory mode = 077     --控制新建的目录的权限
force directory mode = 0777 --控制新建的目录的权限
hosts deny = all       --禁止访问的客户端
hosts allow = 10.1.1.0/24 except 10.1.1.15/32     --允许访问的客户端
#mkdir -p /samba/share
#chmod 1777 -R /samba/share --禁止匿名用户删除不属于自己的文件
注意:
create mode:与参与计算的权限进行 AND (位与)操作,也就是说,只有列在这个参数中的位才会保留;force create mode:与参与计算的权限进行 OR (位或)操作,也就是说,只要列在这个参数中的位都会保留;先应用(create mode),再应用(force create mode),这样的话,如果需要准确指定新建的文件的权限,则可以把这两个参数设置成相同的值。新建的目录的权限与此类似,也受两组参数的影响,分别是directory mode, force directory mode, 其特点与新建文件相同。
write list & read list:这两个参数用来指定用户可以写,用户只能读。值得注意的是,如果一个用户同时出现在这两个列表中,那么该用户也具有写的权限(和man文档中描述的不一致)
writeable (!read only):这个参数用来控制共享的目录是否可写。值得注意的是,就算writeable=no,但是write list参数包含了某个用户,那么该用户仍然可以写
hosts deny& hosts allow 参数,如果两者之间有冲突,则hosts allow 中的规则生效
posted @ 2017-10-19 16:22  一个小运维  阅读(849)  评论(0编辑  收藏  举报