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 逻辑拓扑图
3.2 环境准备
[root@samba-server ~]# cat /etc/redhat-release #查看系统版本
[root@samba-server ~]# uname -r #查看内核版本
[root@samba-server ~]# systemctl stop ebtables #关闭ebtables防火墙
[root@samba-server ~]#systemctl disable ebtables #重启不启动ebtables防火墙
[root@samba-server ~]# systemctl status ebtables #查看ebtables状态
[root@samba-server ~]# ifconfig ens33|awk -F '[ :]+' 'NR==2{print $3}' #查看IP地址
[root@samba-server ~]# hostname #查看主机名
3.3 配置Samba服务
1. 安装samba服务
[root@samba-server ~]# yum -y install samba
2. 创建⽤于共享资源的⽂件⽬录
[root@samba-server ~]# mkdir -p /data/samba/share
3. 创建系统账户,并设置samba密码
[root@samba-server ~]# useradd chenjf
[root@samba-server ~]# smbpasswd -a chenjf
4. 修改配置文件,修改工作组模式,创建共享
[root@samba-server ~]# vim /etc/samba/smb.conf
5. 重启服务
[root@samba-server ~]# systemctl restart smb
[root@samba-server ~]# systemctl enable smb
[root@samba-server ~]# systemctl status smb
6. 如果非得开启firewall防火墙就使用一下命令开启
[root@samba-server ~]# firewall-cmd --add-service=samba --permanent
[root@samba-server ~]# firewall-cmd –reload
3.4 客户端访问
3.4.1 Windows资源管理器访问
1. 打开运行在运行界面输入“\\samba-server IP”
2. 输入账户名密码
3. 进入samba共享目录
4. 在share下创建一个文件test
3.4.2 Windows 映射到磁盘驱动器访问
1. 打开资源管理器,点击计算机
2. 点击映射网络驱动器
3. 打开资源管理器就可以看到这个网络驱动器
4. 点击进入到网络驱动器,在其中创建一个目录“chenjf”。
3.4.3 Linux临时挂载访问
1. 安装samba客户端软件
[root@samba-client ~]# yum -y install samba-client cifs-utils
2. 创建一个挂载目录
[root@samba-client ~]# mkdir /share
3. 临时查看 SMB 服务端共享资源
[root@samba-client ~]# smbclient -L 192.168.1.242 -U chenjf
4. 挂载访问
[root@samba-client ~]# mount -t cifs -o rw,user=chenjf,pass=vancen //192.168.1.242/share /share
也可以将登陆账户密码保存⾄配置⽂件,可以免输⼊密码去访问挂载
5. 创建相应⽂件, 并赋予安全权限
[root@samba-client ~]# vim /etc/samba/chenjf
username=chenjf
password=vancen
domain=vacnen
[root@samba-client ~]# chmod 600 /etc/samba/chenjf
6. 挂载时执⾏⽤户密码⽂件credentials=/etc/samba/chenjf
[root@samba-client ~]# mount -t cifs -o rw,credentials=/etc/samba/chenjf //192.168.1.242/share /share/
7. 进入挂载目录创建一个文件
[root@samba-client ~]# cd /share/
[root@samba-client share]# touch happy
3.4.4 Linux自动挂载访问
1. 安装samba客户端软件
[root@samba-client ~]# yum -y install samba-client cifs-utils
2. 创建挂载点/mnt/share
[root@samba-client ~]# mkdir /mnt/share
[root@samba-client ~]# ls /mnt/
方法一、直接用户密码验证
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
2. 挂载所有设备
[root@samba-client ~]# mount -a
[root@samba-client ~]# df -h
方法二、已配置文件验证
1. 编辑验证密码配置文件
[root@samba-client ~]# vim /etc/samba/chenjf
username=chenjf
password=vancen
domain=vacnen
2. 修改验证密码的配置文件的权限
[root@samba-client ~]# chmod 600 /etc/samba/chenjf
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
4. 挂载所有设备
[root@samba-client ~]# mount -a
[root@samba-client ~]# df –h
5. 进入挂载点,创建一个目录
[root@samba-client ~]# cd /mnt/share/
[root@samba-client share]# mkdir share
[root@samba-client share]# ls
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
此处使用脚本创建也可以
2. 创建挂载目录
[root@samba-server ~]# mkdir /data/samba/public
[root@samba-server ~]# ls /data/samba/
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/
4. 编辑samba主配置文件,共享/data/samba/public
[root@samba-server ~]# vim /etc/samba/smb.conf
5. 使⽤testparm测试
[root@samba-server ~]# testparm
注意: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
7. 重启samba服务
[root@samba-server ~]# systemctl restart smb nmb
[root@samba-server ~]# systemctl enable smb nmb
4.3 客户端验证
1. 安装客户端软件
[root@samba-client ~]# yum -y install samba-client cifs-utils
2. 使用smbclient查看共享资源
[root@samba-client ~]# smbclient -L 192.168.1.242
3. 使用smbclient命令登陆用chenjf1验证连接
[root@samba-client ~]# smbclient -U chenjf1 //192.168.1.242/public
4. 创建一个目录chenjf1
smb: \> mkdir chenjf1
5. 使用smbclient命令登陆用chenjf2验证连接
[root@samba-client ~]# smbclient -U chenjf2 //192.168.1.242/public
6. 创建一个目录chenjf2
smb: \> mkdir chenjf2
7. 在chenjf2上查看public内的共享
8. 使用smbclient命令登陆用chenjf3验证连接
[root@samba-client ~]# smbclient -U chenjf3 //192.168.1.242/public
9. 在/mnt/创建chenjf1,chenjf2,chenjf3
[root@samba-client ~]# mkdir /mnt/chenjf{1,2,3}
[root@samba-client ~]# ls /mnt/
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
总结:chenjf1对共享的public目录能够读写,chenjf2对共享的public目录能够读,chenjf3对共享的public目录不能访问
11. 查看目录信息
[root@samba-client ~]# df –h
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
注释:挂载属性 “_netdev”代表网络设备,网络联通后才挂载此设备
13. 使用mount -a命令全部挂载
[root@samba-client ~]# mount –a
14. 查看挂载目录
[root@samba-client ~]# df -h
Linux之Samba部署的更多相关文章
- Linux下安装部署Samba共享盘的操作手册
简述 Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成.SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的 ...
- Linux下samba的安装与配置
背景 在window7下面虚拟了一个CentOS6.3,为了学习命令行就没有装图形包,所以我的CentOS是黑屏的那种,呵呵,当然了,VMWare提供 的增强功能我就不能用了(或许能 ...
- SPARK在linux中的部署,以及SPARK中聚类算法的使用
眼下,SPARK在大数据处理领域十分流行.尤其是对于大规模数据集上的机器学习算法.SPARK更具有优势.一下初步介绍SPARK在linux中的部署与使用,以及当中聚类算法的实现. 在官网http:// ...
- Node.js~在linux上的部署~pm2管理工具的使用
之前写了两篇关于在linux上部署nodejs的文章,大家如果没有基础可以先看前两篇<Node.js~在linux上的部署>,<Node.js~在linux上的部署~外网不能访问no ...
- Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包
Linux tomcat部署War包,Linux在Tomcat部署JavaWeb项目,Linux部署War包 >>>>>>>>>>>& ...
- Linux项目自动部署
场景:linux中自动部署项目在工作中经常遇到,快速高效的部署项目能够大幅提高工作效率.现在将项目部署的过程记录下来,以供参考,其中用到的知识点现在还有很多不很清楚,后面要好好琢磨琢磨! 1 项目部署 ...
- linux服务器批量部署应用系统shell脚本(Tomcat/jetty)
linux服务器批量部署应用系统shell脚本: 1.请更换代码内的服务器地址(Tomcat或jetty服务器) serverRoot=/home/undoner/java_tool/apache-t ...
- Django Linux环境下部署CentOS7+Python3+Django+uWSGI+Nginx(含Nginx返回400问题处理、防火墙管理)
本文将介绍如何在Linux系统上部署Django web项目,本次部署基于下面的架构: CentOS7+ Python3.5 + Django1.11 + uWSGI + Nginx 亲测可行!!按照 ...
- linux下安装部署ansible
linux下安装部署ansible 介绍 Ansible是一种批量部署工具,现在运维人员用的最多的三种开源集中化管理工具有:puppet,saltstack,ansible,各有各的优缺点,其中sal ...
随机推荐
- 深入解析 H.265 编码模式,带你了解Apple全面推进H.265的原因
今天我们聊聊视频编码.视频文件亘古以来存在一个矛盾:高清画质和视频体积的冲突,相同编码标准下,视频更高清,视频体积更大.因此,应用更先进的视频编码标准,降低视频体积,可以大幅降低网站的流量消耗. 目前 ...
- Netty(一) SpringBoot 整合长连接心跳机制
前言 Netty 是一个高性能的 NIO 网络框架,本文基于 SpringBoot 以常见的心跳机制来认识 Netty. 最终能达到的效果: 客户端每隔 N 秒检测是否需要发送心跳. 服务端也每隔 N ...
- 程序导致IIS服务器应用程序池停止
aaarticlea/png;base64,iVBORw0KGgoAAAANSUhEUgAAA0sAAAC6CAIAAADwAEEAAAAQMElEQVR4nO3dz4scV2IH8Ma7EB9CQC
- 传统HTML页面实现模块化加载
对于网站来说很多页面之间都有着大量的共享模块,如页头,页脚和用户栏等.对于具备后端视图引擎的框架来说这些共享都比较容易抽取,如asp.net mvc来说就有统一布局的MasterPage,@Secti ...
- [linux]CentOS 7 下安装 RabbitMQ
简介 RabbitMQ 是实现了高级消息队列协议(AMQP)的开源消息代理软件.RabbitMQ 服务器是用 Erlang 语言编写的,所以下面要安装 RabbitMQ 需要安装 Erlang. 一. ...
- Python进阶:自定义对象实现切片功能
2018-12-31 更新声明:切片系列文章本是分三篇写成,现已合并成一篇.合并后,修正了一些严重的错误(如自定义序列切片的部分),还对行文结构与章节衔接做了大量改动.原系列的单篇就不删除了,毕竟也是 ...
- 设计模式总结篇系列:享元模式(Flyweight)
我们都知道,Java中的String类具有如下特性:String是一个不可变类,当直通过用字符串方式使用String对象时,Jvm实际上在内存中只存有一份,且存在字符串常量池中.当对字符串直接进行修改 ...
- 记录:C++类内存分布(虚继承与虚函数)
工具:VS2013 先说一下VS环境下查看类内存分布的方法: 先选择左侧的C/C++->命令行,然后在其他选项这里写上/d1 reportAllClassLayout,它可以看到所有相关类的内存 ...
- Sql Server 查询外键对应的Table 的通用方法
SELECT oSub.name AS [子表名称] , fk.name AS [外键名称] , SubCol.name AS [子表列名] , oMain.name AS [主表名称] , Main ...
- WCF和委托
WCF各个模块的联系: Contracts:一个类库项目,定义服务契约(Service Contract),引用System.ServiceMode程序集(WCF框架的绝大部分实现和API定 ...