配置与管理Samba服务器

今天老师搞了这个作业,因为我用的系统和老师用的不一样,就干脆写一个免得忘了。

图片可能加载很慢,来回多滑动下,等它加载完就行

实验环境

  • 两台 CentOS 7 虚拟机(一台服务端,一台客户端)
  • 服务端 IP: 192.241.42.3
  • 客户端 IP: 192.241.42.101
  • 子网掩码: 255.255.255.0
  • 网关: 192.241.42.254

什么是 Samba 服务

Samba 是一个在 Linux 和 UNIX 系统上实现 SMB(Server Message Block)协议的免费软件,由服务器及客户端程序构成。SMB 协议是一种在局域网上共享文件和打印机的通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。

Samba 的主要功能

  • 文件共享: Samba 允许不同操作系统的计算机之间共享文件和目录,特别是在混合网络环境中,比如让 Windows、Linux 和 macOS 系统之间能够无缝地共享文件。
  • 打印机共享: Samba 可以用于共享打印机,允许网络上的各个计算机能够访问和使用共享的打印机资源。
  • 用户验证: Samba 可以作为域控制器,管理用户账号和权限,提供用户验证和授权服务,确保安全地访问共享资源。
  • 网络浏览: Samba 提供了网络浏览服务,通过 NETBIOS 和 WINS 解析功能,使得客户端能够在局域网内方便地发现和访问共享资源。

安装 Samba 包

我们需要安装 samba 后才能继续后面的操作。注意:服务端和客户端都要配置

配置本地源

先配置本地源,方便从 CentOS 安装镜像中安装 samba。

检查虚拟机是否挂载了 CentOS 系统镜像

只需要在 VMware 窗口右下角找到光盘图标,右键设置:

挂载光盘1

然后按照下图配置,确定即可。配置后就能发现虚拟机桌面上出现了个光盘:

挂载光盘2

看到这个光盘就成功了:

挂载光盘3

创建挂载 CentOS 系统镜像的文件夹

1
2
3
4
5
su
cd /etc/yum.repos.d
mkdir bak
mv CentOS-*.repo bak
cp bak/CentOS-Media.repo ./

创建挂载文件夹

编辑源配置

1
vi CentOS-Media.repo

只需要修改以下内容:

1
2
3
baseurl=file:///mnt/cdrom
gpgcheck=0
enabled=1

编辑源配置

挂载安装盘

1
2
mkdir /mnt/cdrom
mount /dev/sr0 /mnt/cdrom

注意: 可能那个系统盘不是 sr0,不过一般按照我这个配置应该没事。不行的话改 sr1

看到终端输出 mount: /dev/sr0 写保护,将以只读方式挂载 就代表成功挂载了。后面的 ls /mnt/cdrom 是看看 ISO 内的文件:

挂载安装盘

清除缓存

1
2
yum clean all
yum makecache

清除缓存

安装 Samba

1
yum install samba -y

安装samba

启动 Samba 并设置开机启动

1
systemctl start smb;systemctl enable smb

启动samba

建立 share 共享文件夹

注意: 这边因为每个人创建虚拟机的时候设置的用户名字都不一样,如果觉得看不懂就照着我的新建一个叫 reading 的用户,方便后续操作。

1
2
useradd reading
passwd reading

创建用户

创建用户之后执行下面的命令创建 share 文件夹:

1
2
mkdir /home/reading/share
chmod 777 /home/reading/share

重要: 因为是 root 用户创建的文件夹,所以需要修改权限让 reading 用户有权限。一定要改,不然等会你会回来看的!

备份和修改 Samba 配置

1
2
3
cd /etc/samba
cp smb.conf smb.conf.bak
vi /etc/samba/smb.conf

在最下面添加:

1
2
3
4
[share]
comment = share
path = /home/reading/share
read only = No

然后保存退出:

修改配置

设置 Samba 账号

1
smbpasswd -a reading

设置samba账号

配置防火墙,关闭 SELinux

防止客户端无法与服务端连接:

1
2
3
firewall-cmd --add-service samba --permanent
firewall-cmd --reload
setenforce 0

图片里面的 warning 不用管,我自己执行了两次。

注意: 如果以后虚拟机重启之后,客户机不能管理服务器文件,显示 access denied 之类的,服务端就执行 setenforce 0 命令就可以了。

配置防火墙

配置 IP

开头说过的那一套,老师要求的是下面的配置,编号每个人都不一样:

  • 服务端 IP: 192.241.编号.3
  • 客户端 IP: 192.241.编号.101
  • 子网掩码: 255.255.255.0
  • 网关: 192.241.编号.254

测试文件共享

注意: 这个就需要在客户端操作了。客户端也要安装 samba,没有安装就照着前面再来一遍吧。

1. 查看共享目录列表

1
smbclient -L 192.241.42.3 -U reading%123456

IP 改成你自己的服务端 IP,百分号后面的数字是之前设置 samba 账号之后输入的密码,我设置的 123456

查看共享目录

2. 访问 SMB 服务器,创建一个测试文件夹

1
2
smbclient //192.241.42.3/share -U reading%123456
mkdir 1

图中显示 access denied 是因为创建 share 文件夹的时候忘记改权限了。

访问smb服务器

验证是否成功创建

进入服务端,在终端输入:

1
ll /home/reading/share

验证创建

能看到 drwxr-xr-x. 2 reading reading 6 10月 29 21:21 1,那就成功了,可以写报告啦~