Linux 之SAMBA部署

1、Samba介绍

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

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

2、Samba配置文件介绍

筛选Samba注释配置⽂件

[[email protected] ~]# 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 逻辑拓扑图

Linux 之SAMBA部署

 

3.2 环境准备

[[email protected] ~]# cat /etc/redhat-release #查看系统版本

[[email protected] ~]# uname -r #查看内核版本

[[email protected] ~]# systemctl stop ebtables             #关闭ebtables防火墙

[[email protected] ~]#systemctl disable ebtables           #重启不启动ebtables防火墙

[[email protected] ~]# systemctl status ebtables          #查看ebtables状态

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

[[email protected] ~]# hostname #查看主机名

3.3 配置Samba服务

1. 安装samba服务

[[email protected] ~]# yum -y install samba

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

[[email protected] ~]# mkdir -p /data/samba/share

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

[[email protected] ~]# useradd chenjf

[[email protected] ~]# smbpasswd -a chenjf

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

[[email protected] ~]# vim /etc/samba/smb.conf

Linux 之SAMBA部署

Linux 之SAMBA部署

5. 重启服务

[[email protected] ~]# systemctl restart smb

[[email protected] ~]# systemctl enable smb

[[email protected] ~]# systemctl status smb

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

[[email protected] ~]# firewall-cmd --add-service=samba --permanent

[[email protected] ~]# firewall-cmd –reload

3.4 客户端访问

3.4.1 Windows资源管理器访问

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

Linux 之SAMBA部署

 

2. 输入账户名密码

Linux 之SAMBA部署

 

3. 进入samba共享目录

Linux 之SAMBA部署

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

Linux 之SAMBA部署

 

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

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

Linux 之SAMBA部署

 

2. 点击映射网络驱动器

Linux 之SAMBA部署

 

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

Linux 之SAMBA部署Linux 之SAMBA部署

 

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

 

Linux 之SAMBA部署

3.4.3 Linux临时挂载访问

1. 安装samba客户端软件

[[email protected] ~]# yum -y install samba-client cifs-utils

 

2. 创建一个挂载目录

[[email protected] ~]# mkdir /share

 

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

[[email protected] ~]# smbclient -L 192.168.1.242 -U chenjf

 

4. 挂载访问

[[email protected] ~]# mount -t cifs -o rw,user=chenjf,pass=vancen //192.168.1.242/share /share

 

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

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

[[email protected] ~]# vim /etc/samba/chenjf

username=chenjf

password=vancen

domain=vacnen

 

[[email protected] ~]# chmod 600 /etc/samba/chenjf

 

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

[[email protected] ~]# mount -t cifs -o rw,credentials=/etc/samba/chenjf   //192.168.1.242/share   /share/

 

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

[[email protected] ~]# cd /share/

[[email protected] share]# touch happy

Linux 之SAMBA部署

 

3.4.4  Linux自动挂载访问

1. 安装samba客户端软件

[[email protected] ~]# yum -y install samba-client cifs-utils

 

2. 创建挂载点/mnt/share

[[email protected] ~]# mkdir /mnt/share

[[email protected] ~]# ls /mnt/

 

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

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

[[email protected] ~]# vim /etc/fstab

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

 

2. 挂载所有设备

[[email protected] ~]# mount -a

[[email protected] ~]# df -h

方法二、已配置文件验证

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

[[email protected] ~]# vim /etc/samba/chenjf

username=chenjf

password=vancen

domain=vacnen

 

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

[[email protected] ~]# chmod 600 /etc/samba/chenjf

 

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

[[email protected] ~]# vim /etc/fstab

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

 

4. 挂载所有设备

[[email protected] ~]# mount -a

[[email protected] ~]# df –h

Linux 之SAMBA部署

 

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

[[email protected] ~]# cd /mnt/share/

[[email protected] share]# mkdir share

[[email protected] share]# ls

Linux 之SAMBA部署

4、Samba多用户访问配置

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

4.1 环境准备

基于samba单用户的配置环境

4.2 配置Samba多用户

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

[[email protected] ~]# useradd chenjf1

[[email protected] ~]# useradd chenjf2

[[email protected] ~]# useradd chenjf3

[[email protected] ~]# smbpasswd -a chenjf1

[[email protected] ~]# smbpasswd -a chenjf2

[[email protected] ~]# smbpasswd -a chenjf3

 

此处使用脚本创建也可以

2. 创建挂载目录

[[email protected] ~]# mkdir /data/samba/public

[[email protected] ~]# ls /data/samba/

 

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

[[email protected] ~]# setfacl -m u:chenjf1:rwx /data/samba/public/

[[email protected] ~]# setfacl -m u:chenjf2:r-- /data/samba/public/

[[email protected] ~]# setfacl -m u:chenjf3:--- /data/samba/public/

[[email protected] ~]# getfacl /data/samba/public/

 

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

[[email protected] ~]# vim /etc/samba/smb.conf

Linux 之SAMBA部署

 

5. 使⽤testparm测试

[[email protected] ~]# testparm

Linux 之SAMBA部署

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

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

6. 修改testparm属性,

1、临时修改

[[email protected] ~]# ulimit -n 16384

2、永久修改

[[email protected] ~]# echo "root - nofile 16384" >>/etc/security/limits.conf

 

7. 重启samba服务

[[email protected] ~]# systemctl restart smb nmb

[[email protected] ~]# systemctl enable smb nmb

 

4.3 客户端验证

1. 安装客户端软件

[[email protected] ~]# yum -y install samba-client cifs-utils

 

2. 使用smbclient查看共享资源

[[email protected] ~]# smbclient -L 192.168.1.242

Linux 之SAMBA部署

 

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

[[email protected] ~]# smbclient -U chenjf1 //192.168.1.242/public

Linux 之SAMBA部署

4. 创建一个目录chenjf1

smb: \> mkdir chenjf1

Linux 之SAMBA部署

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

[[email protected] ~]# smbclient -U chenjf2 //192.168.1.242/public

 

Linux 之SAMBA部署

6. 创建一个目录chenjf2

smb: \> mkdir chenjf2

Linux 之SAMBA部署

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

Linux 之SAMBA部署

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

[[email protected] ~]# smbclient -U chenjf3 //192.168.1.242/public

Linux 之SAMBA部署

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

[[email protected] ~]# mkdir /mnt/chenjf{1,2,3}

[[email protected] ~]# ls /mnt/

Linux 之SAMBA部署

10. 使用mount挂载访问测试

[[email protected] ~]# mount -t cifs -o username=chenjf1,pass=vancen //192.168.1.242/public /mnt/chenjf1

[[email protected] ~]# mount -t cifs -o username=chenjf2,pass=vancen //192.168.1.242/public /mnt/chenjf2

[[email protected] ~]# mount -t cifs -o username=chenjf3,pass=vancen //192.168.1.242/public /mnt/chenjf3

Linux 之SAMBA部署

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

11. 查看目录信息

[[email protected] ~]# df –h

Linux 之SAMBA部署

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

[[email protected] ~]# 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

Linux 之SAMBA部署

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

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

[[email protected] ~]# mount –a

Linux 之SAMBA部署

14. 查看挂载目录

[[email protected] ~]# df -h

 

Linux 之SAMBA部署