zoukankan      html  css  js  c++  java
  • Linux之Samba部署

    1、Samba介绍

    Samba 是在 Linux 和 UNIX 系统上实现 SMB 协议的一个免费软件,由服务器及客户端程序构成,SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

    SMB 协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、 打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得 Samba 不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

    2、Samba配置文件介绍

    筛选Samba注释配置⽂件

    [root@samba-server ~]# grep -v '^#|^$' /etc/samba/smb.conf

    [global]                                                                 //全局参数

                          workgroup = SAMB                      //⼯作组名称

                          hosts allow = 192.168.56.        //表示允许IP或⽹段,允许使⽤通配符或主机名

                          interfaces = eth0                    //SambaServer监听⽹卡, 也可以写IP地址

                          max connections = 0              //最⼤连接数⽬, 超出拒绝, 0表示不限制

                          max log size = 50                   //定义⽇志⽂件的最⼤容量为50KB

                          security = user                      //安全验证⽅式,总共有4种

                                                //share:⽆需验证身份, 简单⽅便, 安全性差

                                                //user:需要验证⽤户密码才可访问, 安全性⾼

                                                //server:需要通过三⽅服务验证账号密码, (集中管理账户)

                                                 //domain: 使⽤域控制器进⾏身份验证

                          passdb backend = tdbsam           //定义⽤户密码的类型,共有3种

                                                    //smbpasswd:为系统⽤户设置Samba服务程序的密码

                                                   //tdbsam:创建数据库⽂件并使⽤pdbedit命令建⽴Samba服务程序的⽤户

                                                  //ldapsam: 基于LDAP服务进⾏账户验证

                        printing = cups                 //设置Samba共享打印机的类型(bsd, sysv, plp, lprng, aix, hpux, qnx)

                        printcap name = cups          //设置共享打印机的配置⽂件

                        load printers = yes              //设置在Samba服务启动时是否共享打印机设备

                        cups options = raw              //打印机的选项

     

    为了更⽅便查阅共享重要参数的功能,共享参数如下:

    [共享名/访问名]

                 comment = 任意字符串

                 path = 共享⽬录路径

                 browseable = 指定该共享是否可以浏览

                 writable = 指定该共享路径是否可写

                 valid users = 允许访问该共享的⽤户

                invalid users = 禁⽌访问该共享的⽤户

                write list = 允许写⼊该共享的⽤户

               guest ok = 指定该共享是否允许guest账户访问

    3、Samba单用户访问配置

    3.1 逻辑拓扑图

    image

    3.2 环境准备

    [root@samba-server ~]# cat /etc/redhat-release #查看系统版本

    image

    [root@samba-server ~]# uname -r #查看内核版本

    image

    [root@samba-server ~]# systemctl stop ebtables             #关闭ebtables防火墙

    [root@samba-server ~]#systemctl disable ebtables           #重启不启动ebtables防火墙

    [root@samba-server ~]# systemctl status ebtables          #查看ebtables状态

    image

    [root@samba-server ~]# ifconfig ens33|awk -F '[ :]+' 'NR==2{print $3}'        #查看IP地址

    image

    [root@samba-server ~]# hostname #查看主机名

    image

    3.3 配置Samba服务

    1. 安装samba服务

    [root@samba-server ~]# yum -y install samba

    image

    2. 创建⽤于共享资源的⽂件⽬录

    [root@samba-server ~]# mkdir -p /data/samba/share

    image

    3. 创建系统账户,并设置samba密码

    [root@samba-server ~]# useradd chenjf

    [root@samba-server ~]# smbpasswd -a chenjf

    image

    4. 修改配置文件,修改工作组模式,创建共享

    [root@samba-server ~]# vim /etc/samba/smb.conf

    image

    image

    5. 重启服务

    [root@samba-server ~]# systemctl restart smb

    [root@samba-server ~]# systemctl enable smb

    [root@samba-server ~]# systemctl status smb

    image

    6. 如果非得开启firewall防火墙就使用一下命令开启

    [root@samba-server ~]# firewall-cmd --add-service=samba --permanent

    [root@samba-server ~]# firewall-cmd –reload

    image

    3.4 客户端访问

    3.4.1 Windows资源管理器访问

    1. 打开运行在运行界面输入“\samba-server IP”

    image

    2. 输入账户名密码

    image

    3. 进入samba共享目录

    image

    4. 在share下创建一个文件test

    image

    3.4.2  Windows 映射到磁盘驱动器访问

    1. 打开资源管理器,点击计算机

    image

    2. 点击映射网络驱动器

    image

    3. 打开资源管理器就可以看到这个网络驱动器

    image

    4. 点击进入到网络驱动器,在其中创建一个目录“chenjf”。

    image

    3.4.3 Linux临时挂载访问

    1. 安装samba客户端软件

    [root@samba-client ~]# yum -y install samba-client cifs-utils

    image

    2. 创建一个挂载目录

    [root@samba-client ~]# mkdir /share

    image

    3. 临时查看 SMB 服务端共享资源

    [root@samba-client ~]# smbclient -L 192.168.1.242 -U chenjf

    image

    4. 挂载访问

    [root@samba-client ~]# mount -t cifs -o rw,user=chenjf,pass=vancen //192.168.1.242/share /share

    image

    也可以将登陆账户密码保存⾄配置⽂件,可以免输⼊密码去访问挂载

    5. 创建相应⽂件, 并赋予安全权限

    [root@samba-client ~]# vim /etc/samba/chenjf

    username=chenjf

    password=vancen

    domain=vacnen

    image

    [root@samba-client ~]# chmod 600 /etc/samba/chenjf

    image

    6. 挂载时执⾏⽤户密码⽂件credentials=/etc/samba/chenjf

    [root@samba-client ~]# mount -t cifs -o rw,credentials=/etc/samba/chenjf   //192.168.1.242/share   /share/

    image

    7. 进入挂载目录创建一个文件

    [root@samba-client ~]# cd /share/

    [root@samba-client share]# touch happy

    image

    3.4.4  Linux自动挂载访问

    1. 安装samba客户端软件

    [root@samba-client ~]# yum -y install samba-client cifs-utils

    image

    2. 创建挂载点/mnt/share

    [root@samba-client ~]# mkdir /mnt/share

    [root@samba-client ~]# ls /mnt/

    image

    方法一、直接用户密码验证

    1. 编写/etc/fstab配置文件使用用户密码挂载

    [root@samba-client ~]# vim /etc/fstab

    //192.168.1.242/share       /mnt/share      cifs      defaults,rw,user=chenjf,pass=vancen    0     0

    image

    2. 挂载所有设备

    [root@samba-client ~]# mount -a

    [root@samba-client ~]# df -h

    image

    方法二、已配置文件验证

    1. 编辑验证密码配置文件

    [root@samba-client ~]# vim /etc/samba/chenjf

    username=chenjf

    password=vancen

    domain=vacnen

    image

    2. 修改验证密码的配置文件的权限

    [root@samba-client ~]# chmod 600 /etc/samba/chenjf

    image

    3. 编辑/etc/fstab/配置文件使用密码配置文件

    [root@samba-client ~]# vim /etc/fstab

    //192.168.1.242/share /mnt/share cifs defaults,rw credentials=/etc/samba/chenjf 0 0

    image

    4. 挂载所有设备

    [root@samba-client ~]# mount -a

    [root@samba-client ~]# df –h

    image

    5. 进入挂载点,创建一个目录

    [root@samba-client ~]# cd /mnt/share/

    [root@samba-client share]# mkdir share

    [root@samba-client share]# ls

    image

    4、Samba多用户访问配置

    在 Samba Server 服务器上, 共享 /data/samba/public ,实现对访问挂载后的共享的每个⽤户单独的验证,实现权限隔离。允许chenjf1能够读写,允许chenjf2 能够读,允许chenjf3不能访问

    4.1 环境准备

    基于samba单用户的配置环境

    4.2 配置Samba多用户

    1. 创建用户并给用户设置samba密码

    [root@samba-server ~]# useradd chenjf1

    [root@samba-server ~]# useradd chenjf2

    [root@samba-server ~]# useradd chenjf3

    [root@samba-server ~]# smbpasswd -a chenjf1

    [root@samba-server ~]# smbpasswd -a chenjf2

    [root@samba-server ~]# smbpasswd -a chenjf3

    image

    此处使用脚本创建也可以

    2. 创建挂载目录

    [root@samba-server ~]# mkdir /data/samba/public

    [root@samba-server ~]# ls /data/samba/

    image

    3. 给用户设置相应的权限

    [root@samba-server ~]# setfacl -m u:chenjf1:rwx /data/samba/public/

    [root@samba-server ~]# setfacl -m u:chenjf2:r-- /data/samba/public/

    [root@samba-server ~]# setfacl -m u:chenjf3:--- /data/samba/public/

    [root@samba-server ~]# getfacl /data/samba/public/

    image

    4. 编辑samba主配置文件,共享/data/samba/public

    [root@samba-server ~]# vim /etc/samba/smb.conf

    image

    5. 使⽤testparm测试

    [root@samba-server ~]# testparm

    image

    注意:testparm命令报错:rlimit_max: increasing rlimit_max (1024) to minimum Windows limit (16384)

    解决思路:把用户文件描述符的数量设置的比默认值高一些

    6. 修改testparm属性,

    1、临时修改

    [root@samba-server ~]# ulimit -n 16384

    2、永久修改

    [root@samba-server ~]# echo "root - nofile 16384" >>/etc/security/limits.conf

    image

    7. 重启samba服务

    [root@samba-server ~]# systemctl restart smb nmb

    [root@samba-server ~]# systemctl enable smb nmb

    image

    4.3 客户端验证

    1. 安装客户端软件

    [root@samba-client ~]# yum -y install samba-client cifs-utils

    image

    2. 使用smbclient查看共享资源

    [root@samba-client ~]# smbclient -L 192.168.1.242

    image

    3. 使用smbclient命令登陆用chenjf1验证连接

    [root@samba-client ~]# smbclient -U chenjf1 //192.168.1.242/public

    image

    4. 创建一个目录chenjf1

    smb: > mkdir chenjf1

    image

    5. 使用smbclient命令登陆用chenjf2验证连接

    [root@samba-client ~]# smbclient -U chenjf2 //192.168.1.242/public

    image

    6. 创建一个目录chenjf2

    smb: > mkdir chenjf2

    image

    7. 在chenjf2上查看public内的共享

    image

    8. 使用smbclient命令登陆用chenjf3验证连接

    [root@samba-client ~]# smbclient -U chenjf3 //192.168.1.242/public

    image

    9. 在/mnt/创建chenjf1,chenjf2,chenjf3

    [root@samba-client ~]# mkdir /mnt/chenjf{1,2,3}

    [root@samba-client ~]# ls /mnt/

    image

    10. 使用mount挂载访问测试

    [root@samba-client ~]# mount -t cifs -o username=chenjf1,pass=vancen //192.168.1.242/public /mnt/chenjf1

    [root@samba-client ~]# mount -t cifs -o username=chenjf2,pass=vancen //192.168.1.242/public /mnt/chenjf2

    [root@samba-client ~]# mount -t cifs -o username=chenjf3,pass=vancen //192.168.1.242/public /mnt/chenjf3

    image

    总结:chenjf1对共享的public目录能够读写,chenjf2对共享的public目录能够读,chenjf3对共享的public目录不能访问

    11. 查看目录信息

    [root@samba-client ~]# df –h

    image

    12. 开机自动挂载方式,编写/etc/fstab配置文件

    [root@samba-client ~]# vim /etc/fstab

    //192.168.1.242/public /mnt/chenjf2 cifs defaults,rw,user=chenjf1,pass=vancen,_netdev 0 0

    //192.168.1.242/public /mnt/chenjf2 cifs defaults,rw,user=chenjf2,pass=vancen,_netdev 0 0

    image

    注释:挂载属性 “_netdev”代表网络设备,网络联通后才挂载此设备

    13. 使用mount -a命令全部挂载

    [root@samba-client ~]# mount –a

    image

    14. 查看挂载目录

    [root@samba-client ~]# df -h

    image

  • 相关阅读:
    《C++必知必会》读书笔记
    看美图是一种享受
    C指针-指向另一指针的指针
    顺序队列基本操作
    Using Windows Live Writer to write first offline blog
    堆和栈的区别 [摘录]
    进程与线程的区别
    《Effective C#》
    析构函数virtual与非virtual区别
    常用SQL语句技法
  • 原文地址:https://www.cnblogs.com/chenjiangfeng/p/10148679.html
Copyright © 2011-2022 走看看