Samba的搭建和配置详解

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接: https://blog.csdn.net/qq_42298432/article/details/97814138

Samba概念

smb: 服务消息块
cifs: 通用互联网文件系统

功能:
文件系统共享;
打印机共享;
NetBIos协议

程序环境:
服务端程序包:samba,samba-common,samba-libs
主配置文件:/etc/samba/smb.conf, 由samba-common包提供;
主程序:

Smbd:负责为客户机提供服务器中共享资源(目录和文件)的访问,监听139端口(smb协议),445端口(cifs协议)
Nmbd:负责提供基于netblos协议的主机名称解析,以便为windows网络中的主机进行查询服务,监听137-138端口(netblos协议)

Unit File(单元文件)	:
		smb.service
		nmb.service

监听的端口:
137/udp,138/udp
139/tcp,445/tcp

客户端程序:
smbclient:交互式命令行客户端,类似于lftp;
mount.cifs:挂载cifs文件系统的专用命令;
samba的配置:
smb.conf

共享文件系统配置:
有三类:
	[homes]:为每个samba用户定义其是否能够通过samba服务访问自己的家目录
	[printers]:定义打印服务;
	[shared_fs]:自定义定义共享的文件系统;

samba主配置文件参数和解释

[global]		#全局参数。
	workgroup = MYGROUP	#工作组名称
	server string = Samba Server Version %v	#服务器介绍信息,参数%v为显示SMB版本号
	log file = /var/log/samba/log.%m	#定义日志文件的存放位置与名称,参数%m为来访的主机名
	max log size = 50	#定义日志文件的最大容量为50KB
	security = user	#安全验证的方式,总共有4种
	#share:来访主机无需验证口令;比较方便,但安全性很差,7.0以上系统不支持share,使用user模式,map to guest=bad user代替
	#user:需验证来访主机提供的口令后才可以访问;提升了安全性
	#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户)
	#domain:使用域控制器进行身份验证
	passdb backend = tdbsam	#定义用户后台的类型,共有3种
	#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码
	#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户
	#ldapsam:基于LDAP服务进行账户验证
	load printers = yes	#设置在Samba服务启动时是否共享打印机设备
	cups options = raw	#打印机的选项
[homes]		#共享参数
	comment = Home Directories	#描述信息
	browseable = no	#指定共享信息是否在“网上邻居”中可见
	writable = yes	#定义是否可以执行写入操作,与“read only”相反
[printers]		#打印机共享参数
	comment = All Printers	
	path = /var/spool/samba	#共享文件的实际路径(重要)。
	browseable = no	#网络发现是否可见
	guest ok = no	#是否所有人可见,等同于"public"参数。
	public = yes	#是否所有人可见,yes为匿名也可以访问该目录,no为只有登录成功的用户可以访问
	read only = yes	#是否为只读,如果yes即使有写入权限也不可写
	writable = no	#是否允许写入
	printable = yes
browseable = yse	#网络发现中是否可见


samba用户管理

samba用户管理:
smbpasswd
smbpasswd [options] USERNAME
-a:添加
-x:删除
-d:禁用
-e:启用
pdbedit
-L:列出samba服务中的所有用户;
-a, --create:添加用户为samba用户;
-u, --user=USER:要管理的用户;
-x, --delete:删除用户;
-t, --password-from-stdin:从标准输出接收字符串作为用户密码;
使用空提示符,而后将密码输入两次;

部署samba服务

匿名方式访问

准备环境

setenforce 0 //临时关闭selinux防火墙
systemctl stop firewalld //临时关闭firewalld防火墙

1.搭建本地yum源
2.使用yum方式安装samba服务程序

yum install -y samba* //yum安装samba服务

3.创建共享的目录

mkdir -p /var/public //创建匿名共享目录

4.编辑主配置文件

vim /etc/samba/smb.conf 
----------分隔------------
[global]
        workgroup = SAMBA
        security = user  //7.0一下系统将user改为share
        passdb backend = tdbsam
        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw
        map to guest = bad user //7.0以上匿名访问必须添加
[ceishi]	//共享的目录名称
        comment = zhe shi yi ge ceshi wenjian  //共享的备注解释
        path = /data/samba/ceshi //共享文件的绝对路径
        public = yes //是否所有人可见
        browseable = yes //是否可浏览,指是否可被用户查看;
        read only = yes //是否只读
       

5.重启服务,使用windos访问验证,无法访问请检查IP tables防火墙

systemctr restart smb //重启samba服务

如果匿名访问的公共目录需要指定某些人可以对其目录有管理权限(删除写入等权限),那么需要对其同一目录设置两个smb共享,一个为匿名所有人可以访问,一个为某些特定用户设置管理权限

[ceshi]  //所有人可以访问目录
        comment = zhe shi yi ge ceshi wenjian
        path = /data/samba/ceshi
        public = yes
        read only = yes
[ceshi_admin]  //指定用户可以管理共享
        comment = woshiyigeadmin
        path = /data/samba/ceshi
        public = yes
        valid users = zhangsan.list
        write list = zhangsan

用户验证的共享

实例:创建一个共享文件/smb/yonghu,只用张三和list可以访问共享,只用张三可以有写入的权限
注意:创建的共享用户要有对应的系统用户
1.创建共享用户zhagnsan,lisi,创建共享用户。

useradd zhangsan //创建张三用户
useradd lisi  //创建李四用户
mkdir -pv /smb/yonghu //嵌套创建共享目录
smbpass -a zhangsan //给张三用户设置为共享用户并设置密码
smbpass -a lisi //给李四用户设置为共享用户并设置密码
pdbedit -Lv zhagnsan lisi //查看用户详细信息

2.修改smb配置文件,设置共享目录

vim /etc/samba/smb.conf //编辑主配置文件
-------------分隔------------------
[yonghu] //共享目录名称
        comment = yonghu  //描述
        path = /smb/yonghu //共享目录路径
        public = no //是否所有人可见
        read only = yes //是否只读
        valid users = zhangsan,lisi  //那些用户可以访问
        write list = zhangsan //那些用户可以写入,组加上”+组名或者@组名“
        directory mask =  0755 //用户上传目录权限为755
        create mask = 0644  //用户上传文件的权限是644

3.给共享目录777权限

chmod -R 777 /smb/yonghu //更改共享目录的权限为777

4.重启smb服务验证权限

systemctl restart smb //重启samba服务

Windos 清除smb的连接会话

net use //查看连接会话
net use * /del //清除连接会话

用户映射的共享(安全性高)

正常情况下,一个共享账号都有一个同名的系统账号很不安全,可以使用映射的方式,将一个共享用户映射为多个不同的名称(别名),只需要通过共享用户的别名和密码就能访问资源了,而不需要知道真正的共享用户(系统用户)名称

touch /etc/samba/smbusers //创建映射用户的文件

在主配置文件中启用用户映射功能,在全局配置加入:
username map = /etc/samba/smbusers
systemctl restart smb //重启服务即可生效

访问地址限制
在globalo或者配置里面添加hosts allow 或者 hosts deny 即可

hosts allow = 192.168.10. 172.16. 允许10.0 和172.16.0.0的网段访问
hosts deny = 192.168.20. 172.18. 允许20.0和172.18.0.0的网段访问


在linux里面使用smbclient访问共享

1.查看服务器端的共享:

smbclient -L 192.168.10.10 -U zhangsan

2.匿名访问共享文件夹

smbclient //192.168.10.10/public

3.交互式文件访问:

smbclient //192.168.10.10/yonghu -U zhangsan

挂载共享目录

-t 挂载文件的类型
-o , --options <列表> 挂载选项列表,以英文逗号分隔
如果报cifs错误,请安装cifs-utils软件包
Linux下挂载samba共享目录

匿名挂载方法
mount -t cifs //192.168.10.10/public /ceshi
指定用户挂载
mount -t cifs //SMB_SERVER/SAHRE_NAME -o username=USERNAME,password=PASSWORD
fuser -fm /data/test/ 查看文件的进程号 在使用 kill -9 来杀死这个进程 在取消挂载

linxu下挂载windos共享目录

1.使用smbclient工具查询共享目录
smbclient -L windosIP地址
2.挂载windos共享目录
mount -t cifs -o username=administrator,password=******* //192.168.10.10/d /ceshi

猜你喜欢

转载自blog.csdn.net/qq_42298432/article/details/97814138