文章目录
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