Samba 常用服务器搭建操作过程

同一网络中既有 Windows 主机又有 Linux 主机,为实现不同主机系统之间的资源共享,通常就是搭建 Samba 服务器

SMB 通信协议和 Samba 简介

  • SMB 协议
    SMB是在局域网上共享文件和打印机的协议,为同一个网络的 Windows 和 linux系统提供文件系统,打印服务

  • Samba简介
    Samba包含一组软件包,能让 Linux 支持 SMB 协议,也是 Windows 能够使 Linux 文件和打印机共享的基础;Samba是使用在类UNIX系统上运行的服务器

SMB 简单服务器搭建

  • 服务端配置

    [root@shareserver ~] # yum install samba -y
    [root@shareserver ~] # yum install samba-client -y          # 服务端安装两个包
    [root@shareserver ~] # smbpasswd -a student                 # 给student添加登陆密码,student必须在服务端本地存在
    [root@shareserver ~] # touch /home/student/test             # 创建测试文件test
    [root@shareserver ~] # pdbedit -L                           # 查看smba可登录用户列表
    [root@shareserver ~] # pdbedit -x student                   # smba删除student用户登录
    
  • 客户端配置

    [root@shareserver ~] # yum install samba-client -y          # 客户端安装包
    [root@shareserver ~] # smbclient -L //192.168.1.152           # 匿名用户查看共享资源
    [root@shareserver ~] # smbclient -L //192.168.1.152  -U  student   #  student用户列表查看
    [root@shareserver ~] # smbclient  //192.168.1.152/student -U student  # 直接登陆到服务端student用户家目录	
    [root@shareserver ~] # mount -o username=student,password=redhat //192.168.1.152/student /mnt  # 挂载共享目录
    [root@shareserver ~] # ls /mnt                      # 查看挂载目录
    test                                                # 测试文件存在,共享成功
    [root@shareserver ~] # touch /mnt/file{1..3}        # 客户端在挂载目录创建,也相当于在服务端student家目录同步更新
    

smba 权限等详细配置

  • 服务端详细配置

    [root@shareserver ~] # setenforce 0                                       # 内核防火墙设置警告模式
    [root@shareserver ~] # setsebool -P samba_enable_home_dirs on             # 允许登陆家目录
    [root@shareserver ~] # vim /etc/samba/smb.conf                            # 主samba主配置文件
    workgroup = WESTOS                                                        # 设置域名89行
    hosts allow = 192.168.1.152 192.168.1.155                                 # 允许152和155主机登陆
    hosts deny = 192.168.1.100                                                # 不允许100主机登陆
    
    ## 共享自建目录,更改安全上下文
    [root@shareserver ~] # vim /etc/samba/smb.conf              
    [linux]       # 共享目录名称(随意)
    comment = westos dir share         # 目录注释信息
    path = /westos            # 写入绝对路径,必须属实存在,此处共享的是服务端的/westos目录
    [root@shareserver ~] # semanage fcontext -a -t samba_share_t:s0 '/westos(/.*)?'   # 递归更改安全上下文
    [root@shareserver ~] # restorecon -RvvF westos                  # 同步刷新安全上下文
    [root@client ~] # smbclient 192.168.1.152/linux -U student      # 此时客户端连接能看到该目录内容
    
    ## 共享系统目录,更改bool值
    [root@shareserver ~] # vim /etc/samba/smb.conf
    [mnt]                                    # 自定义目录名mnt
    conmment = mnt dir share
    path = /mnt                              # 系统目录/mnt
    [root@client ~] # smbclient 192.168.1.152/linux -U student      # 此时连接还不能查看该目录内容
    [root@shareserver ~] # setsebool -P samba_export_all_ro on      # selinux开启samba可读所有目录
    [root@client ~] # smbclient 192.168.1.152/linux -U student      # 此时再连接能查看该目录内容
    
    ##共享目录权限参数
    [root@shareserver ~] # chmod 777 student                        # 可暂时这样改,但不建议
    [root@shareserver ~] # vim /etc/samba/smb.conf
    [linux]
    comment = westos dir share
    path = /westos
    writable =yes                    # 所有人可写
    write list = @westos             # westos组用户可写
    valid users = + student          # student组用户有效
    browseable = yes                 # 客户端使用-L使是否可发现该设备
    admin users = student            # student用户设置为超级用户
    create mask = 0644               # 上传权限,加入该参数后,客户端可上传文件
    
    ##匿名用户登录
    guest ok = yes                        # windows匿名用户可访问
    map to guest = bad user               # 对guest的描述
    (与 valid users = + student不能同时存在)
    
  • 客户端安全控制机制

    [root@client ~] # mount -o username=student,password=redhat //192.168.1.152/linux /mnt
    [root@client ~] # ls /mnt
    test              # 挂载后,有显示测试文件
    [root@client ~] # su - westos
    [westos@client ~] # ls /mnt
    test              # 更换用户身份后,westos用户也能看到服务端student的测试文件,说明安全性不足
    
  • samba多用户挂载

    [root@client ~] # yum install cifs-utils -y             
    [root@client ~] # vim /root/smbpass          # 编辑该文件,在其中指定本次挂载的用户名密码
    username=student
    password=redhat
    [root@client ~] # chmod 600 /root/smbpass    # 修改权限
    [root@client ~] # mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //192.168.1.152/linux /mnt
    ##credentials=/root/smbpass  # 本次挂载使用的用户身份
    ##sec=ntlmssp                # 认证方式
    ##multiuser		             # 多用户挂载
    [root@client ~] # cd /mnt/
    [root@client ~] # ls
    
    [root@client ~] # touch rootfile               # root登陆的westos身份创建rootfile,在mnt中
    [root@client ~] # ls                           # 此时客户端登陆的westos身份可以看到rootfile
    [root@client ~] # ll			     # 此时用户和组是1001,因为在服务端的westos的uid是1001
    [root@client ~] # su - student                 # 
    [root@client ~] # ls /mnt/		     # 会报permission denied,无权限,则到达限制未通过认证用户权力的目的
    
    
    [root@client ~] # su - student
    [root@client ~] # cifscreds add -u du 172.25.254.201    # student用户验证为服务端的du用户,uid是1002,然后输入密码
    Password:
    #密码输入错误后,需要清除
    #cifscreds clearall #清除
    #输入正确密码后,则当前登陆smba的身份就是lee
    [root@client ~] # ls     # 密码正确后,此时可以看到mnt内容
    [root@client ~] # touch dufile
    [root@client ~] # ls -l         # 会显示dufile文件,且用户和组id是1002
    

你可能感兴趣的:(学习笔记)