ICode9

精准搜索请尝试: 精确搜索
首页 > 系统相关> 文章详细

Linux之SAMBA文件共享服务器

2021-05-04 14:01:29  阅读:228  来源: 互联网

标签:samba 文件共享 SAMBA Linux 共享 smb user01


Linux之SAMBA文件共享服务器

SAMBA服务概述

什么是SAMBA?

  • SMB(Server Message Block)协议实现文件共享,也称为CIFS(Common Internet File System )

  • 是Windows和类Unix系统之间共享文件的一种协议

  • 客户端主要是Windows;支持多节点同时挂载以及并发写入

  • 主要用于windows和Linux下的文件共享、打印共享

  • 实现匿名与本地用户文件共享

SAMBA主要进程:

  • smbd进程 控制发布共享目录与权限、负责文件传输 、端口: TCP 139 445

  • nmbd进程 用于名称解析netbios 、端口:UDP 137 138 ; 基于NETBIOS协议获得计算机名称——>解析为相应IP地址,实现信息通讯

NetBIOS是Network Basic Input/Output System的简称即网络基础输入输出系统,一般指用于局域网通信的一套API
samba服务遵循两大协议:smb协议-->TCPnmb协议-->UDP

SAMBA服务实验

SAMBA环境准备

第一步:从模板机中克隆一台Linux服务器,叫做SAMBA

第二步:更改主机名称与IP地址

# hostnamectl set-hostname samba
# su

# vim /etc/sysconfig/network-scripts/ifcfg-ens33
	BOOTPROTO=none
	IPADDR=10.1.1.10
	NETMASK=255.255.255.0
	GATEWAY=10.1.1.2
	DNS1=8.8.8.8
	DNS2=114.114.114.114

# systemctl restart network
扩展:如果是多张网卡,建议使用"ifdown ens33"以及"ifup ens33"实现重启网络操作

第三步:关闭防火墙与SELinux

# systemctl stop firewalld
# systemctl disable firewalld

# setenforce 0
# vim /etc/selinux/config
	SELINUX=disabled

第四步:配置yum源

  • 如果有网络情况下可以直接使用官网源,CentOS7中已经加载了国内yum源,如果没网需要挂载镜像源
# yum clean all
# yum makecache

SAMBA软件安装(服务器搭建)

第一步:安装samba软件

  • SAMBA也是一个C/S架构的软件,Client主要是Windows,samba服务主要用于Windows和Linux系统之间的文件共享
# yum install samba -y	=>	安装samba服务

# rpm -qa |grep ^samba	=>	查看安装了哪些软件
	[root@samba ~]# rpm -qa |grep ^samba
	samba-common-tools-4.10.16-13.el7_9.x86_64
	samba-common-4.10.16-13.el7_9.noarch
	samba-client-libs-4.10.16-13.el7_9.x86_64
	samba-common-libs-4.10.16-13.el7_9.x86_64
#	samba-4.10.16-13.el7_9.x86_64		=>	服务器端
	samba-libs-4.10.16-13.el7_9.x86_64
	samba-client-4.10.16-13.el7_9.x86_64

smb的配置文件

  • samba服务配置文件默认已经设置好了,我们只需要编写共享名称选项即可
# vim /etc/samba/smb.conf	=>	打开samba服务配置
#l	[global]  		=>	全局选项,所有samba配置都需要遵循的配置	
		workgroup = MYGROUP    =>	定义samba服务器所在的工作组
		security = user        =>   认证模式:share匿名|user用户密码|server外部服务器用户密码
		max log size = 50	   =>   日志的最大大小KB  
		log file = /var/log/samba/log.%m       =	日志文件	
		
		passdb backend = tdbsam      =>	密码格式,代表tdbsam格式的
		server string = Samba Server Version %v      =>   smb服务的描述
						
		load printers = yes         =>	是否加载打印机
		cups options = raw          => 代表打印机的选项
#l	[homes]        	=>	局部选项(共享名称)
		comment = Home Directories    =>  描述
		browseable = no    =>	代表隐藏共享名称
		writable = yes     => 	如果共享有目录代表可读可写
#l	[printers]      =>	共享名称
		comment = All Printers       =>	描述
		path = /var/spool/samba  	 =>	本地的共享目录
		browseable = no  		=>	隐藏,代表是否隐藏共享名称
	
		guest ok = no ——>   public = no  		=>	no代表需要帐号和密码访问,有两种写法
		writable = no  ——>  read only =yes 		=>	no代表不可写和只读,有两种写法
		printable = yes     =>	 打印选项

自己编辑samba共享名称配置文件
#l	[share]		=>	共享名称
		path = /dir1	=>	共享路径
		guest ok = no	=>	需要账号密码访问
		writable = yes	=>	可写

samba默认配置文件:

[root@samba ~]# vim /etc/samba/smb.conf
# See smb.conf.example for a more detailed config file or
# read the smb.conf manpage.
# Run 'testparm' to verify the config is correct after
# you modified it.

[global]
        workgroup = SAMBA
        security = user

        passdb backend = tdbsam

        printing = cups
        printcap name = cups
        load printers = yes
        cups options = raw

[homes]
        comment = Home Directories
        valid users = %S, %D%w%S
        browseable = No
        read only = No
        inherit acls = Yes

[printers]
        comment = All Printers
        path = /var/tmp
        printable = Yes
        create mask = 0600
        browseable = No

[print$]
        comment = Printer Drivers
        path = /var/lib/samba/drivers
        write list = @printadmin root
        force group = @printadmin
        create mask = 0664
        directory mask = 0775

SAMBA综合案例

任务要求

搭建一个SAMBA服务,共享一个目录/samba/share,客户端使用user01/123通过windows或者Linux可以在该目录里创建文件删除文件

解决方案

环境配置

第一步:SAMBA服务器环境准备

更改主机名称、IP地址、关闭防火墙、SELinux、配置YUM源

第二步:安装SAMBA软件

# yum install samba -y	=>	安装samba服务软件
# rpm -aq|grep  ^samba	=>	查看安装了哪些samba服务软件

第三步:查询SAMBA生成文件列表(rpm -ql)

  • 因为samba服务遵循两大协议:smb协议-->TCPnmb协议-->UDP
  • 所用有smb.servicenmb.service两个服务
# rpm -ql samba	=>	查询SAMBA生成文件列表
	/usr/sbin/smbd	=>	二进制文件,代表命令
	/usr/sbin/nmbd	=>	二进制文件,代表命令

	/usr/lib/systemd/system/smb.service	=>	smb服务
	/usr/lib/systemd/system/nmb.service	=>	nmb服务
	#l 备注:有了这两个服务就可以通过systemctl start|restart|stop 服务 进行管理

第四步:在服务器端创建一个共享目录

# mkdir /samba/share -p

第五步:编辑/etc/smb.conf配置文件,实现SAMBA共享

  • 原有配置选项不动,在配置文件最下方编辑共享目录
# vim /etc/samba/smb.conf
	...
	[smb_share]	=>	共享名称
        comment = samba service	=>	备注信息,可有可无
        path = /samba/share		=>	共享目录
        guest ok = no	=>	代表需要账号密码登录
        writable = yes	=>	代表此共享目录可读可写
	或者
	[samba_share]	=>	共享名称
        path = /samba/share
        public = no
        writable = yes

#l 备注:
guest ok === public	两者等价
writable代表可读可写

第六步:创建一个user01用户,然后添加到samba认证中,设置密码为123

  • 以下操作完成后,则SAMBA服务中增加了一个user01的账号及密码123
# useradd user01	=>	创建账号

# which smbpasswd	=>	查询smb密码命令创建目录
	[root@samba ~]# which smbpasswd
	/usr/bin/smbpasswd

# smbpasswd -a user01	=>	-a代表add,给smb服务增加一个账号且设置密码
	New SMB password:123
	Retype new SMB password:123
	Added user user01.	=>	这个信息代表增加成功

第七步:启动nmb与smb服务

# systemctl start nmb
# systemctl start smb

基于Windows和Linux服务端实现samba服务共享

第一步:安装samba客户端

  • 控制面板 => 程序和功能 => 打开或关闭Windows功能

  • 找到以下两个选项进行安装

在这里插入图片描述

第二步:进入计算机(我的电脑),找到映射网络驱动器

  • 指定驱动器(随意选择一个)输入:\\SAMBA服务器IP\共享目录标签
  • 然后输入账号密码即可
    在这里插入图片描述

在这里插入图片描述

第三步:通过acl策略给user01用户于samba共享目录可读可写可执行权限

  • 挂载完成后,目录不可写?答:主要原因在于/samba/share目录没有写入权限

  • 就可以对/samba/share 目录拥有上传下载权限

# setfacl -m u:user01:rwx /samba/share

基于Linux和Linux服务端实现samba服务共享

第一步:基于Linux或Linux实现文件共享

  • 安装samba客户端
  • 利用smbclient命令查看目录信息
# smbclient -L 10.1.1.10 -U user01	=>	查看目录信息
	[root@client ~]# smbclient -L 10.1.1.11 -U user01
	Enter SAMBA\user01's password:

        Sharename       Type      Comment
        ---------       ----      -------
        print$          Disk      Printer Drivers
#        smb_share       Disk      samba service	=>	磁盘类型的共享目录
        IPC$            IPC       IPC Service (Samba 4.10.16)
        user01          Disk      Home Directories
	Reconnecting with SMB1 for workgroup listing.

        Server               Comment
        ---------            -------
        SAMBA                Samba 4.10.16

        Workgroup            Master
        ---------            -------
        SAMBA                SAMBA

注意:需要输入user01用户密码
  • 使用smbclient查看目录信息
  • 当不可写时,利用ACL命令增加用户权限即可
# smbclient //10.1.1.10/smb_share -U user01

第二步:把SAMBA挂载到Linux系统(类似NFS)

# mkdir /u01	=>	Linux客户端创建挂载目录
# mount.cifs -o user=user01,pass=123 //10.1.1.10/smb_share /u01	=>	挂载

访问控制说明:

控制读写权限
	writable = yes/no
	readonly = yes/no

如果资源可写,但只允许某些用户可写,其他都是只读
write list = admin, root, @staff(用户组)
read list = mary, @students

控制访问对象
	valid users = tom,mary,@itcast
	invalid users = tom
注意:以上两个选项只能存在其中一个

网络访问控制:
hosts deny = 192.168.0.   拒绝某个网段
hosts allow = 192.168.0.254  允许某个IP
hosts deny = all  拒绝所有
hosts allow = 192.168.0. EXCEPT 192.168.0.254  允许某个网段,但拒绝某个单个IP
注意:deny和allow同时存在,allow优先

总结

1. ftp 局域网和外网都可以

2. nfs 局域网 挂载方式访问 mount.nfs 侧重于Linux与Linux之间

3. samba 局域网 直接访问(smbclinet)挂载的方式mount.cifs 侧重于Windows与Linux之间

标签:samba,文件共享,SAMBA,Linux,共享,smb,user01
来源: https://blog.csdn.net/qq_46093534/article/details/116375696

本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享;
2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关;
3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关;
4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除;
5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。

专注分享技术,共同学习,共同进步。侵权联系[81616952@qq.com]

Copyright (C)ICode9.com, All Rights Reserved.

ICode9版权所有