Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
1.背景:
根据公司的信息化建设要求,需要在局域网内网搭建一台文件服务器,便于对数据的管理以及备份。
服务器选型:centos7(本次测试选用VM安装centos7)
服务器IP地址:192.168.1.111
文件存放位置:/var/share/public(存放公共数据)
/var/share/date(存放开发数据)
/var/share/training(存放培训资料)
- 用户描述:
- root:管理员admin
- 组:
- technology 技术部门
- g-staff 普通用户
- 技术部门成员:
- xiaowang
- xiaohan
- 普通员工:
- xioamei
2.配置服务器的环境
- 配置ip
- 配置yum源 #注意使用网络yum源(centos7本地yum源无法安装samba客户端)
- 关闭iptables和selinux
- VM 选择桥接模式
3.samba服务的组成
- samba是C/S(客户端/服务器)架构,监听TCP/139及TCP/445(由smbd程序监听),监听UDP/137和UDP/138(由nmbd程序监听);
- samba项目的软件包samba(主程序)、samba-common(通用程序)、samba-client(客户端程序);
- smaba主配置文件是/etc/samba/smb.conf
4.部署samba服务
1)部署流程
- 安装
- 创建用户
- 修改配置文件
- 启动、测试、上线
- 修该VM服务器网络模式为仅主机
2)安装
yum -y install samba samba-client ##本次使用yum安装
3)查看samba相关软件
[root@localhost ~]# rpm -qa | grep samba
samba-client-4.8.3-4.el7.x86_64
samba-common-libs-4.8.3-4.el7.x86_64
samba-libs-4.8.3-4.el7.x86_64
samba-4.8.3-4.el7.x86_64
samba-client-libs-4.8.3-4.el7.x86_64
samba-common-tools-4.8.3-4.el7.x86_64
samba-common-4.8.3-4.el7.noarch
4)创建测试用户组及用户
useradd xiaowang
useradd xiaoming
useradd xiaohan
useradd xiaomei
groupadd technology
gpasswd -a xiaoming technology
gpasswd -a xiaohan technology
groupadd g-staff
gpasswd -a xiaomei g-staff
5)添加smb用户
pdbedit -a root
pdbedit -a xiaowang
pdbedit -a xiaohan
pdbedit -a xiaomei
6)查看smb用户
pabedit -L
7)修改配置文件/etc/samba/smb.conf
cp /etc/samba/smb.conf /opt/back/
vim /etc/samba/smb.conf
:g/^#/d ###命令行模式删除掉所有注释行
:g/^$/d ###删除所有空行
$bash vim /etc/samba/smb.conf
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
passdb backend = tdbsam
load printers = yes
cups options = raw
username map = /etc/samba/smbusers
[public]
comment = public
path = /var/share/public
public = no
writable = no
write list = root
admin users = root
[peixun]
comment = peixun
path = /var/share/training
public = no
readonly = no
valid users = @root @technology
[kaifa]
comment = kaifa
path = /var/share/devel
public = no
readonly = no
valid users = @root @technology
samba配置文件详解
Samba配置文件详细分析
vim /etc/samba/smb.conf
[global] #定义全局策略
workgroup = MYGROUP #定义工作组
server string = Samba Server Version %v #服务器提示字符,默认显示samba版本
log file = /var/log/samba/log.%m #定义日志文件
max log size = 50 #定义日志文件单个文件最大容量为50KB
security = user #security选项将会影响客户端访问方式 #可以设置user、share、server、domain。User代表用户名和密码验证;share代表匿名访问;server代表基于验证身份的访问,账户信息在另一台SMB服务器上;domain:同样基于验证身份验证,账户信息在活动目录中
passdb backend = tdbsam #账户与密码存储方式,smbpasswd使用老的明文格式存储账户及密码;tdbsam代表基于TDB的密文格式存储;ldapsam代表使用LDAP存储账户资料。
load printers = yes #客户端在10分钟内没有打开任何Samba资源,服务器将自动关闭回话。
cups options = raw #打印属性
[homes] #共享名称
comment = Home Directories #注释,共享的描述信息
browseable = no #共享目录是否可以被浏览
writable = yes #共享目录是否可以进行写操作
[printers] #打印机共享
comment = All Printers
path = /var/spool/samba #打印机共享池
browseable = no
guest ok = no #是否允许匿名访问
writable = no
printable = yes
[common] #共享名称为common
comment = Common share
path = /common #指定共享目录
valid users = tom jerry #有效账户列表
create mask = 0750 #客户端上传文件的默认权限
directorymask = 0775 #客户端创建目录的默认权限
browseable = yes #客户端是否对所有人可见
writable= no #是否允许写入
write list = tom #写权限账户列表
admin users = tom #该共享的管理员,具有完全权限
invalid users = root bin #禁止root与bin访问common共享
guest ok = no #是否允许匿名访问
8)启动samba
[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl restart nmb
9)模拟测试以及实际环境测试
测试环境可以使用电脑端,手机端进行测试
windows环境下使用windows+r
\192.168.1.111



如果需要测试其它用户可以用linux系统或者手机的ES文件浏览器
ES浏览器

linux测试方法
mount -o username=xiaohan,password=xiaohan //192.168.1.111/ /mnt
cd /mnt
ls
touch 3.txt
网友评论