Linux——搭建Samba(CIFS)服务器

2021-11-18 10:06:48 浏览数 (1)

一、Samba的基本概念

Samba服务:是提供基于Linux和Windows的共享文件服务,服务端和客户端都可以是Linux或Windows操作系统。可以基于特定的用户访问,功能比NFS更强大。

Samba与ftp和nfs的区别:

  • ftp:基于Linux和Windows共享文件的服务,但是不安全,因为ftp可以匿名访问,匿名用户可以获取读写权限,所以不常用
  • nfs:只能做Linux的共享文件服务,服务端和客户端都只能是Linux操作系统

samba的服务名、对应端口号及作用:

  • smbd:139 提供文件的共享访问
  • nmbd:445 提供基于域名的访问

二、Samba服务搭建步骤:

目标:搭建一个基于Linux的samba服务,共享给Windows和Linux的客户端去访问

(一)、安装Samba之前Server端和Client端都需要准备:主机名、网络、yum源

1、更改主机名:
代码语言:javascript复制
[root@localhost ~]# hostnamectl set-hostname $主机名
[root@localhost ~]# bash	#环境变量重载
2、配置网络

(1)虚拟交换机、网络适配器选择仅主机模式,并且配置为192.168.100.0网段;

(2)编辑网络配置文件:

代码语言:javascript复制
[root@localhost ~]# vim /etc/sysconfig/network-scripts/ifcfg-ens33
修改:	BOOTPROTO=static	#改为静态IP地址
	ONBOOT=yes		#改为开机自启
	IPADDR=192.168.100.10
	PREFIX=24  或者  NETMASK=255.255.255.0

(3)重启网络服务:

代码语言:javascript复制
[root@localhost ~]# systemctl restart network
3、配置yum源

(1)先在VMware里面把系统镜像文件连接到虚拟机的光驱上;

(2)挂载光驱里的镜像:

代码语言:javascript复制
[root@localhost ~]# mount /dev/cdrom /media

(3)修改yum源配置文件:

代码语言:javascript复制
[root@localhost ~]# vim /etc/yum.repos.d/local.repo
	[rhel]
	name=rhel
	baseurl=file:///media
	enabled=1
	gpgcheck=0

(4)清空yum源缓存信息:

代码语言:javascript复制
[root@localhost ~]# yum clean all

(5)检索当前yum源信息:

代码语言:javascript复制
[root@localhost ~]# yum repolist

(二)、Server端配置步骤:

1、安装Samba的所有包

代码语言:javascript复制
[root@server ~]# yum -y install samba*

2、创建Samba的共享文件夹和标记文件并且修改权限

代码语言:javascript复制
[root@server ~]# mkdir -p /opt/samba
[root@server samba]# touch flag
[root@server samba]# ls
flag
[root@server samba]# chmod -R o w /opt/samba

3、查看Samba配置目录

  • smb.conf -> Samba的主配置文件
  • smb.conf.exampl -> Samba的示例文件
代码语言:javascript复制
[root@server samba]# cd /etc/samba/
[root@server samba]# ls
lmhosts  smb.conf  smb.conf.example

4、打开Samba的示例文件

代码语言:javascript复制
[root@server samba]# vim /etc/samba/smb.conf.example

克隆会话进行下面selinux的配置

代码语言:javascript复制
[root@server samba]# setsebool -P samba_domain_controller on
[root@server samba]# setsebool -P samba_enable_home_dirs on
[root@server samba]# chcon -t samba_share_t /opt/samba/	#Samba的共享目录
[root@server samba]# setsebool -P samba_export_all_rw on

5、编辑Samba的主配置文件

代码语言:javascript复制
[root@server opt]# vim /etc/samba/smb.conf

加入:

代码语言:javascript复制
[common]
	comment =common directories	对共享目录的注释、说明信息
	path = /opt/samba		#Samba的共享目录
	interfaces = 192.168.100.10/24	#提供服务的主机地址
	hosts allow = 192.168.100.	#允许访问的主机或者网段
	browseable = yes		该共享目录对客户机是否可见
	valid users = luna,tom,jeccy	#可访问的用户名
	write list = luna		是否具有可写权限

点击查看主配置文件详情

smb.conf文件的配置内容的含义:

[global]:全局设置 [homes]:用户目录共享设置 [printers]:打印机共享设置 [common]:自定义名称的共享目录设置

workgroup:所在工作组名称 security:安全级别,可用值为:share、user、server、domain passwd backend:设置共享账户文件的类型

注意:Samba服务设置的读取、写入权限,优先级要低于文件系统中设置的权限

6、检测Samba配置文件格式是否正确

代码语言:javascript复制
[root@server ~]# testparm
[root@server ~]#

7、创建Samba用户(前提:必须是系统存在的用户)

代码语言:javascript复制
[root@server ~]# useradd luna	#先创建系统用户
[root@server ~]# useradd tom
[root@server ~]# passwd luna	#设置系统用户密码
[root@server ~]# passwd tom
[root@server ~]# smbpasswd -a luna	#再创建为Samba用户,同时设置samba密码
[root@server ~]# smbpasswd -a tom

8、查看所有Samba用户

代码语言:javascript复制
[root@server ~]#pdbedit –L

9、启动samba服务并设置为开机自启

代码语言:javascript复制
[root@server ~]#systemctl restart smb
[root@server ~]#systemctl restart nmb
[root@server ~]#systemctl enable smb
[root@server ~]#systemctl enable nmb

10、查看端口(139,445)启动情况(如果命令不可用,需要安装net-tools包)

代码语言:javascript复制
[root@server ~]#netstat -pant

11、关闭防火墙

代码语言:javascript复制
[root@server ~]#systemctl stop firewalld
[root@server ~]#systemctl disable firewalld

(三)、Client端配置步骤:

1、Windows作Client:

CIFS特点:windows会自动记录上次访问的用户,所以第一次访问的用户,下一次仍旧默认使用该用户访问。

解决用户切换的方法: 进入cmd,输入net use * /del命令,等待若干分钟后,即可切换其他用户登录Samba服务器。

2、Linux作Client:
1)单用户访问:

方法一:使用Samba的Linux客户端软件访问

代码语言:javascript复制
[root@client ~]yum -y install samba-client
[root@client ~]smbclient -U tom //192.168.100.10/common
smb: > mkdir abc	#测试tom写权限
smb: > ls
smb: >

方法二:使用挂载方式访问

代码语言:javascript复制
[root@client ~]mount -t cifs -o username=tom,password=000000 //192.168.100.10/common /mnt
				#-t格式:以cifs格式挂载(Samba默认的文件系统类型),-o选项:samba用户名和密码
[root@client ~]cd /mnt
[root@client mnt]ls
[root@client mnt]touch abc	#测试tom写权限
touch: cannot touch ‘abc’: Permission denied
2)多用户访问:
代码语言:javascript复制
[root@client ~]yum -y install samba-client cifs-utils
[root@client ~]mkdir -p /mnt/multi
[root@client ~]vim /etc/fstab
于末行添加://192.168.100.10/common	/mnt/multi      cifs    username=tom,password=000000,multiuser,sec=ntlmssp      0  0
[root@client ~]mount -a		#先使用tom获取common的读权限,注意:如果这步做掉了,后面的luna就获取不到common内容
[root@client ~]cd /mnt/multi
[root@client multi]ls
[root@client multi]touch abc	#测试tom写权限
touch: cannot touch ‘abc’: Permission denied
[root@client ~]su - luna
[luna@client ~]cifscreds add -u luna server	#使用luna登录并临时获取写权限
[luna@client ~]cd /mnt/multi
[luna@client multi]touch abc
[luna@client multi]ls
abc

0 人点赞