CentOS7 安装Samba Server,开启SMB服务(不关闭selinux)

CentOS7 安装Samba Server,开启SMB服务

前言

局域网传输文件,有多种协议可以实现,samba(以下简称smb)协议无疑是使用上最方便的一种。本次我们尝试在全新的CentOS7 2009上安装smb服务,同时在不关闭selinux的情况下搞定权限问题。开工。

思路

想法是,创建两个smb账户,分别为:

  • ktsee
  • surenkid

其中ktsee作为smb管理员,可以读写所有smb共享文件夹下的数据;surenkid作为一个普通用户,可以读写自己的共享文件夹。

开始

安装samba

CentOS7 2009直接从源仓库进行安装,避免使用编译或第三方仓库,防止系统变“野”

1
2
3
4
5
yum install samba samba-client
systemctl start smb
systemctl start nmb
systemctl enable smb
systemctl enable nmb

这里smb服务用于文件共享或打印服务,监听端口139和445。nmb服务用于通过网络名直接代替IP访问smb服务,监听端口137

防火墙配置

接着放行smb服务

1
2
firewall-cmd --permanent --zone=public --add-service=samba
firewall-cmd --zone=public --add-service=samba

创建文件夹

1
2
3
mkdir /home/samba
mkdir /home/samba/ktsee
mkdir /home/samba/surenkid

其中/home/samba/ktsee用于存放公用的用户数据,/home/samba/surenkid用于存放指定用户的数据

创建用户

首先创建smb用户组

1
groupadd sambashare

接着创建两个用户

1
2
useradd -M -d /home/samba/ktsee -s /usr/sbin/nologin -G sambashare ktsee
useradd -M -d /home/samba/surenkid -s /usr/sbin/nologin -G sambashare surenkid

配置用户与文件夹

首先设置用户smb密码并启用

1
2
3
4
5
smbpasswd -a ktsee
smbpasswd -e ktsee

smbpasswd -a surenkid
smbpasswd -e surenkid

接着对文件夹设置权限

1
2
3
4
5
6
7
chgrp sambashare /home/samba

chown surenkid:sambashare /home/samba/surenkid
chmod 2770 /home/samba/surenkid

chown ktsee:sambashare /home/samba/ktsee
chmod 2770 /home/samba/ktsee

配置Samba

编辑smb配置文件

1
vi /etc/samba/smb.conf

填入以下内容

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[ktsee]
    path = /home/samba/ktsee
    browseable = yes
    read only = no
    force create mode = 0660
    force directory mode = 2770
    valid users = @sambashare @ktsee

[surenkid]
    path = /home/samba/surenkid
    browseable = no
    read only = no
    force create mode = 0660
    force directory mode = 2770
    valid users = surenkid @ktsee

保存后重启smb和nmb服务

1
2
systemctl restart smb.service
systemctl restart nmb.service

设置selinux安全上下文

检查一下当前安全上下文

1
ls -dZ /home/samba/*

/home/samba下的文件夹设置samba安全上下文

1
2
semanage fcontext -a -t samba_share_t "/home/samba(/.*)?"
restorecon -Rv /home/samba

如果共享文件夹不仅仅用于smb服务,同时还需要用于其他服务,则需要使用另一套安全上下文

1
2
3
setsebool -P smbd_anon_write=1
semanage fcontext -a -t public_content_rw_t "/home/samba/public(/.*)?"
restorecon -Rv /home/samba/public

验证

在Explorer中输入服务器IP(这里假设ip为192.168.1.35

1
\192.168.1.35

打开文件夹,试试复制文件,打开文件等操作

结语

至此centos 7安装samba server结束,其实我搭建这个服务,是为了让我的那台前段时间入手的升腾C30小主机物尽其用。

升腾C30小主机

部署smb服务,还可以用docker来实现,但由于我的机器配置较差,用docker总是出现各种问题,也因此还是使用了CentOS的原生组件。

参考:

  • https://linuxize.com/post/how-to-install-and-configure-samba-on-centos-7/
  • https://www.lisenet.com/2016/samba-server-on-rhel-7/
坚持原创技术分享,您的支持将鼓励我继续创作!