文章目录

  • 一 需求
  • 二 系统环境准备
  • 三 服务端配置流程
  • 1 安装软件
  • 2 创建用户组
  • 3 创建共享目录并设置权限
  • 4 创建用户并映射到samba和本地
  • 5 修改配置文件
  • 6 重启服务,并设置为开机自启
  • 四 客户端配置流程
  • 1 安装软件
  • 2 创建挂载点(挂载目录)
  • 3 挂载文件系统
  • 4 检查挂载情况
  • 五 对配置好的SMB文件系统进行检验
  • 1 检查用户组内的用户
  • 2 检查非用户组内的用户


一 需求

共享目录是/data
辅助组developer内的成员具有读写权限;
辅助组developer外的成员只有读权限;
用户dick属于辅助组的成员,密码是123456 用户james不属于辅助组的成员,密码是123456

二 系统环境准备

服务端IP:10.0.0.11 客户端IP:10.0.0.12

[root@client ~]# cat /etc/redhat-release 
Red Hat Enterprise Linux Server release 7.6 (Maipo)
[root@client ~]# uname -r
3.10.0-957.el7.x86_64

更新好yum源,便于安装需要的软件包。

[root@client ~]# cat /etc/yum.repos.d/CentOS-Base.repo 
[base]
name=CentOS-7 - Base - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/os/$basearch/
        http://mirrors.aliyuncs.com/centos/7/os/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/7/os/$basearch/
gpgcheck=1
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7
 
-------------------------------------------
中间省略大量内容
-------------------------------------------

[contrib]
name=CentOS-7 - Contrib - mirrors.aliyun.com
failovermethod=priority
baseurl=http://mirrors.aliyun.com/centos/7/contrib/$basearch/
        http://mirrors.aliyuncs.com/centos/7/contrib/$basearch/
        http://mirrors.cloud.aliyuncs.com/centos/7/contrib/$basearch/
gpgcheck=1
enabled=0
gpgkey=http://mirrors.aliyun.com/centos/RPM-GPG-KEY-CentOS-7

关闭防火墙与SELinux

systemctl stop firewalld
systemctl disable firewalld
[root@server ~]# grep ^SELINUX /etc/selinux/config 
SELINUX=disabled
SELINUXTYPE=targeted 
setenforce 0

三 服务端配置流程

1 安装软件

[root@server ~]# yum install -y samba   samba-client

2 创建用户组

[root@server ~]# groupadd -r developer

3 创建共享目录并设置权限

[root@server ~]# mkdir /data
[root@server ~]# chown  :developer /data
[root@server ~]# ll /data/ -d
drwxr-xr-x 2 root developer 6 Nov 25 04:10 /data/

给共享目录设置SGID权限,且阻止其他用户进行写入

[root@server ~]# chmod 2775 /data
[root@server ~]# ll /data/ -d
drwxrwsr-x 2 root developer 6 Nov 25 04:10 /data/

4 创建用户并映射到samba和本地

创建属于developer用户组的用户dick

[root@server ~]# useradd -s /sbin/nologin -G developer dick
[root@server ~]# smbpasswd -a dick
New SMB password:
Retype new SMB password:
Added user dick.

创建不属于developer用户组的用户james

[root@server ~]# useradd -s /sbin/nologin james
[root@server ~]# smbpasswd -a james
New SMB password:
Retype new SMB password:
Added user james.

5 修改配置文件

[root@server ~]# vim /etc/samba/smb.conf

[global]
        # workgroup参数后面随便填什么都行
        workgroup = canway
        security = user
        passdb backend = tdbsam

=============
中间的内容省略
=============

[my_share_data]
        path = /data
        write list = @developer

修改完配置文件,记得检查一下语法是否正确。

[root@server data]# testparm
Load smb config files from /etc/samba/smb.conf
Loaded services file OK.
Server role: ROLE_STANDALONE

Press enter to see a dump of your service definitions

看到提示OK,就没有问题。然后回车键,会输出你刚才做的修改配置信息。

6 重启服务,并设置为开机自启

[root@server ~]# systemctl restart smb nmb
[root@server ~]# systemctl enable smb nmb

四 客户端配置流程

1 安装软件

[root@client ~]# yum install -y cifs-utils

2 创建挂载点(挂载目录)

[root@client ~]# mkdir -p /mnt/dick
[root@client /]# mkdir -p /mnt/james

3 挂载文件系统

此处挂载设备处写的格式是://挂载主机的IP/挂载主机配置文件的项目名称

[root@client /]# mount -o username=dick //10.0.0.11/my_share_data /mnt/dick
Password for dick@//10.0.0.11/data:  ******
[root@client /]# mount -o username=james //10.0.0.11/my_share_data /mnt/james/
Password for james@//10.0.0.11/data:  ******

然后在/etc/fstab进行永久挂载

[root@client /]# tail -2 /etc/fstab 
//10.0.0.11/my_share_data   /mnt/dick    cifs    credentials=/root/dick.smb     0 0
//10.0.0.11/my_share_data   /mnt/james   cifs    credentials=/root/james.smb    0 0

然后创建对应的用户名和密码文件

[root@client dick]# cat /root/dick.smb 
username=dick
password=123456
[root@client dick]# cat /root/james.smb 
username=james
password=123456

/etc/fstab前两列分别是挂载设备和挂载目录。
第三列是文件系统类型,此处是cifs文件系统类型。
第四列的credentials是cifs系统挂载时需要输入用户密码,由于是自动挂载,所以需要提供一个密码文件,在挂载时让系统自动读取该文件就可以获得密码,无需交互式输入密码。

4 检查挂载情况

首先将所有挂载的目录重新挂载一次,检查是否有报错。
然后检查挂载的具体信息。

[root@client /]# mount -a
[root@client dick]# df -h
Filesystem                 Size  Used Avail Use% Mounted on
/dev/mapper/rhel-root       19G  4.1G   15G  23% /
devtmpfs                   470M     0  470M   0% /dev
tmpfs                      487M     0  487M   0% /dev/shm
tmpfs                      487M  8.1M  479M   2% /run
tmpfs                      487M     0  487M   0% /sys/fs/cgroup
/dev/sda1                  197M  143M   55M  73% /boot
//10.0.0.11/my_share_data   19G  4.1G   15G  23% /mnt/dick
//10.0.0.11/my_share_data   19G  4.1G   15G  23% /mnt/james
tmpfs                       98M     0   98M   0% /run/user/0

五 对配置好的SMB文件系统进行检验

1 检查用户组内的用户

首先在/mnt/dick中进行创建文件并写入内容,在客户端一切顺利,且该文件属主是root用户

[root@client /]# echo 123456 > /mnt/dick/a.txt
[root@client /]# cd /mnt/dick/
[root@client dick]# ll
total 1024
-rwxr-xr-x 1 root root 7 Nov 25  2022 a.txt
[root@client dick]# cat a.txt 
123456

在服务端,我们看到操作成功,且属主和属组信息发生变化。

[root@server ~]# cd /data/
[root@server data]# ll
total 4
-rwxr--r-- 1 dick developer 7 Nov 25 18:26 a.txt
[root@server data]# cat a.txt 
123456

2 检查非用户组内的用户

/mnt/james中无法创建文件

[root@client ~]# echo 123456 > /mnt/james/a.txt
-bash: /mnt/James/a.txt: Permission denied

但可以进入到共享目录中,查看已经创建的文件内容

[root@client ~]# cd /mnt/james/
[root@client james]# ll
total 1024
-rwxr-xr-x 1 root root 7 Nov 25  2022 a.txt
[root@client james]# cat a.txt 
123456

到此为止,SMB文件共享配置成功。