zoukankan      html  css  js  c++  java
  • samba 服务

    samba服务

    课程目标

    • samba服务器的应用场景及特点
    • samba服务器的搭建与配置
    • 基于用户名/密码的企业综合案例

    一、samba介绍配置

    • SMB(Server Message Block)协议实现文件共享,也称CIFS(Common Internet File System)
    • 是Windows和Unix系统之间共享文件的一种协议
    • 客户端主要是Windows;支持多节点同时挂载以及并发写入
    • 主要用于Windows和Linux下的文件共享、打印共享
    • 实现匿名与本地用户文件共享

    samba服务的主要进程

    • smbd进程 控制发布共享目录与权限、负责文件传输 TCP 139 455
    • nmbd进程 用于名称解析netbios UDP 137 138;基于NETBIOS协议获得计算机名称--->解析为相应IP地址,实现信息通讯。

    NetBIOS是Network Basic Input/Output System的简称,一般指用于局域网通信的一套API


    二、samba服务器搭建

    配置文件

    [root@server ~]# yum -y install samba
    [root@server ~]# rpm -qa |grep ^samba
    samba-winbind-3.6.9-164.el6.x86_64
    samba4-libs-4.0.0-58.el6.rc4.x86_64
    samba-winbind-clients-3.6.9-164.el6.x86_64
    samba-3.6.9-164.el6.x86_64
    samba-client-3.6.9-164.el6.x86_64
    samba-common-3.6.9-164.el6.x86_64
    
    [root@server ~]# service smb start
    Starting SMB services:                                     [  OK  ]
    [root@server ~]# service nmb start
    Starting NMB services:                                     [  OK  ]
    
    测试验证
    [root@client ~]# which smbclient
    /usr/bin/smbclient
    [root@client ~]# rpm -qf /usr/bin/smbclient
    samba-client-3.6.9-164.el6.x86_64
    查看配置文件	
    /etc/samba/smb.conf	
    [global]	全局选项
            workgroup = MYGROUP		定义samba服务器所在的工作组
            server string = Samba Server Version %v		smb服务的描述
     	    log file = /var/log/samba/log.%m		日志文件
    	    max log size = 50		日志的最大大小kb
    	    security = user	   认证模式:share匿名|user用户密码|server外部服务器用户密码
            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		---> public = no 需要账号密码访问(匿名用户不允许访问)
            writable = no		---> read only = yes 不可写
            printable = yes		---> 打印选项
    
    

    客户端工具如何使用?

    [root@client ~]# smbclient -L //10.1.1.2	//查看samba服务器的共享名
    Enter root's password: 回车		//(匿名用户查看)
    Anonymous login successful
    Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
    
    	Sharename       Type      Comment
    	---------       ----      -------
    	IPC$            IPC       IPC Service (Samba Server Version 3.6.9-164.el6)
    Anonymous login successful
    Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
    
    	Server               Comment
    	---------            -------
    	SERVER               Samba Server Version 3.6.9-164.el6
    
    	Workgroup            Master
    	---------            -------
    	MYGROUP              SERVER
    
    在server端添加本地用户zhangsan
    将zhangsan本地用户加入到smb数据库
    [root@server ~]# smbpasswd -a zhangsan
    New SMB password:
    Retype new SMB password:
    Added user zhangsan.
    在客户端测试
    [root@client ~]# smbclient //10.1.1.2/zhangsan -U zhangsan
    Enter zhangsan's password: 
    Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
    smb: > ls
    
    需求:让匿名用户访问/samba/share共享资源,本地用户不能访问
    
    [anon_share]
    		path=/samba/share
    		public = yes
    		writable = yes
    [root@server ~]# service smb restart
    
    测试:
    [root@client ~]# smbclient -L 10.1.1.2
    Enter root's password: 
    Anonymous login successful
    Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
    
    	Sharename       Type      Comment
    	---------       ----      -------
    	anon_share (列出该共享标签名)
    [root@client ~]# smbclient //10.1.1.2/anon_share	//进入该共享标签
    Enter root's password: 
    Anonymous login successful
    Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
    smb: > ls
    匿名用户写文件被拒绝,在server端修改/samba/share的权限
    [root@server share]# ll -d
    drwxr-xr-x 2 root root 4096 Apr 23 21:06 .
    [root@server share]# chmod o+w /samba/share/
    另外匿名用户不需要加入samba数据库
    让zhangsan访问/anon_share,本地用户可以访问,匿名用户访问的开关可控制
    [root@client ~]# smbclient //10.1.1.2/anon_share -U zhangsan
    Enter zhangsan's password: 
    Domain=[MYGROUP] OS=[Unix] Server=[Samba 3.6.9-164.el6]
    smb: > ls
    
    总结:
    1. samba服务默认是基于用户名和密码认证的服务
    2. samba服务的用户必须是samba服务器上存在的用户,密码必须是samba数据库里的密码
    3. 对于发布的共享资源,默认情况下本地用户是可以访问的,匿名用户是否能访问看是否打开public=yes
    
    samba也可以用挂载的方式在客户端对共享目录进行操作
    [root@client ~]# mount
    mount        mount.fuse   mount.nfs4   mountstats   
    mount.cifs   mount.nfs    mountpoint   mount.tmpfs  
    [root@client ~]# mount.cifs -o user=zhangsan,pass=123 //10.1.1.2/anon_share /u01
    [root@client ~]# df -h
    Filesystem             Size  Used Avail Use% Mounted on
    /dev/sda5               16G  3.7G   12G  25% /
    tmpfs                  491M   72K  491M   1% /dev/shm
    /dev/sda1              194M   30M  155M  16% /boot
    /dev/sda3              2.0G   37M  1.8G   2% /home
    /dev/sr0               4.2G  4.2G     0 100% /media
    //10.1.1.2/anon_share   16G  3.8G   12G  26% /u01
    已经挂载好了
    [root@client ~]# cd /u01
    [root@client u01]# ls
    aaa
    [root@client u01]# touch 1.txt
    [root@client u01]# ls
    1.txt  aaa
    在客户端操作,结果都会在server端出现
    [root@server share]# ls
    1.txt  aaa
    
    

    Windows访问,比较简单,在文件资源管理器我的电脑那一栏输入\10.1.1.2,回车后输入zhangsan和密码123,即可在该目录里进行创建文件夹等操作。

    访问控制:

    控制读写权限
    	writable = yes/no
    	readonly = yes/no
    如果资源可写,但只允许某些用户可写,其他都只读
    write_list = admin,root,@staff(用户组)
    read_list = mary,@students
    
    控制访问对象
    	valid_users = tom mary
    	invalid_users = tom
    注意:这两个选项只能存在其中一个
    
    网络访问控制
    host_deny = 192.168.0 	拒绝某个网段
    host_allow = 192.168.0.254 	允许某个IP
    hosts_deny = all 	拒绝所有
    hosts_allow = 192.168.0. EXCEPT 192.168.0.254	允许某个网段,但拒绝某个IP
    注意:deny和allow同时存在,优先allow
    
    

    综合案例:

    公司:itcast,有3个部门,cw,rs,sc和一个公共区pub,每个部门的资料根据如下需求进行共享;

    1、财务部门/samba/itcast_cw,cw01财务总监有可读可写权限,财务员工可读,boss01对其有管理权限

    2、市场部门/samba/itcast_sc,市场部门员工可读可写,公司员工可以查询资料,boss02对其有管理权限

    3、HR部门/samba/itcast_rs,rs01HR总监可读写,HR部门员工可对财务部查询,vip用户可以查询

    4、休息区/samba/itcast_pub 自己管理自己的文件

    步骤:
    1.在服务器上创建相应目录,来保存不同部门资料
    mkdir /smb/{cw,rs,sc,pub} -p
    2.创建相应的用户组(方便管理)
    groupadd itcast
    groupadd cw
    groupadd rs
    groupadd sc
    
    useradd cw01 -g cw -G itcast
    useradd cw02 -g cw -G itcast
    useradd rs01 -g rs -G itcast
    useradd rs02 -g rs -G itcast
    useradd sc01 -g sc -G itcast
    useradd sc02 -g sc -G itcast
    useradd boss01 -g itcast
    useradd boss02 -g itcast
    useradd vip 
    
    3.修改相应目录的权限
    
    4.搭建samba服务,来共享不同部门的资料
    vim /etc/samba/smb.conf
    ...
    [cw]
    	path=/smb/cw
    	valid_users = boss01,@cw,@rs
    	write_list = cw01,boss01
    [rs]
    	path=/smb/rs
    	valid_users = vip,@rs
    	write_list = rs01
    [sc]
    	path=/smb/sc
    	valid_users = boss02,@itcast
    	write_list = @sc,boss02
    [pub]
    	path=/smb/pub
    	valid_users = @itcast
    	writable = yes
    
    5.将用户加入到smb数据库里
    smbpasswd -a cw01
    ......
    6.测试验证
    Linux:
    Windows:
    
    

    总结:

    1. ftp 局域网 安全
    2. nfs 局域网 挂载访问 mount.nfs
    3. samba 局域网 直接服务(smbclient) | 挂载访问(mount.cifs)大部分客户端是Windows
  • 相关阅读:
    Eclipse解决运行、启动缓慢问题思路
    Flask---日常笔记1
    Flask与Django对比
    Flask框架-基本使用
    常用软件下载地址
    乌合之众大众心理学
    C#使用IKVM来实现与java互通的RSA签名
    C#使用BouncyCastle来实现私钥加密公钥解密的方法与java互通的RSA加解密和签名(转)
    SignalR新手系列教程详解总结(转)
    项目管理的三大难题及应对策略(转)
  • 原文地址:https://www.cnblogs.com/liuwei-xd/p/11022133.html
Copyright © 2011-2022 走看看