使用Samba实现文件共享
安装Samba服务程序
[root@muyu yum.repos.d]# yum -y install samba
Loaded plugins: fastestmirror, langpacks
Loading mirror speeds from cached hostfile
Resolving Dependencies
Install 1 Package (+4 Dependent packages)
Total download size: 1.5 M
Installed size: 3.9 M
Downloading packages:
warning: /media/Packages/pytalloc-2.1.9-1.el7.x86_64.rpm: Header V3 RSA/SHA256 Signature, key ID f4a80eb5: NOKEY
Public key for pytalloc-2.1.9-1.el7.x86_64.rpm is not installed
Installed:
samba.x86_64 0:4.6.2-8.el7
Dependency Installed:
pytalloc.x86_64 0:2.1.9-1.el7 samba-common-libs.x86_64 0:4.6.2-8.el7 samba-common-tools.x86_64 0:4.6.2-8.el7 samba-libs.x86_64 0:4.6.2-8.el7
Complete!
配置共享资源
安装完毕后打开 Samba 服务程序的主配置文件,Samba 服务程序的主配置文件包括全局配置参数和区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。创建共享资源的方法很简单,下面我们创建一个共享资源。
[root@muyu ~]# vim /etc/samba/smb.conf
[database] :共享名称
comment = Do not arbitrarily modify the database file :警告用户不要随意修改数据文件
path = /home/database :共享目录
public = no :关闭“所有人可见”
writable = yes :允许写入操作
创建用于访问共享资源的账户信息
在 RHEL 7 系统中,Samba 服务程序默认使用的是用户口令认证模式。但是Samba 服务程序的数据库要求账户必须在当前系统中已经存在,否则日后创建文件时将导致文件的权限属性混乱。pdbedit 命令用于管理 SMB 服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。 在第一次把账户信息写入到数据库时需要使用-a 参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。
接下来我们先在系统里面创建一个用于登录的用户
[root@muyu ~]# useradd muyu
[root@muyu ~]# passwd muyu
Changing password for user muyu.
New password:
BAD PASSWORD: The password is shorter than 8 characters
Retype new password:
passwd: all authentication tokens updated successfully.
[root@muyu ~]# id muyu
uid=1000(muyu) gid=1000(muyu) groups=1000(muyu)
然后建立用于登录Samba系统的账号
[root@muyu ~]# pdbedit -a -u muyu
new password:
retype new password:
Unix username: muyu
NT username:
Account Flags: [U ]
User SID: S-1-5-21-976544643-407007463-1524596264-1001
Primary Group SID: S-1-5-21-976544643-407007463-1524596264-513
Full Name:
Home Directory: \\muyu\muyu
HomeDir Drive:
Logon Script:
Profile Path: \\muyu\muyu\profile
Domain: MUYU
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Sat, 18 Sep 2021 05:16:20 CST
Password can change: Sat, 18 Sep 2021 05:16:20 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
创建用于共享资源的文件目录
[root@muyu ~]# mkdir /home/databases
重启服务后Samba服务端就部署完成
[root@muyu ~]# systemctl restart smb
使用Windows客户端访问共享资源
输入用户名和密码后登录到系统,登录之后可以看到只有共享的目录和用户自己的家目录
进入共享目录可以随意的复制删除和修改文件的内容。
使用Linux访问共享资源
我们重新打开一台Linux系统并安装支持文件共享服务的软件包(cifs-utils)。
[root@source ~]# yum install cifs-utils
Loaded plugins: langpacks, product-id, subscription-manager rhel | 4.1 kB 00:00 Resolving Dependencies --> Running transaction check ---> Package cifs-utils.x86_64 0:6.2-6.el7 will be installed --> Finished Dependency Resolution Dependencies Resolved ===============================================================================
Package Arch Version Repository Size ===============================================================================
Installing: 12.1 Samba 文件共享服务 241 cifs-utils x86_64 6.2-6.el7 rhel 83 k Transaction Summary ===============================================================================
Install 1 Package Total download size: 83 k Installed size: 174 k Is this ok [y/d/N]: y Downloading packages: Running transaction check Running transaction test Transaction test succeeded Running transaction
Installing : cifs-utils-6.2-6.el7.x86_64 1/1 Verifying : cifs-utils-6.2-6.el7.x86_64 1/1
Installed: cifs-utils.x86_64 0:6.2-6.el7
Complete!
安装完软件包,在 Linux 客户端,按照 Samba 服务的用户名、密码、共享域的顺序将相关信息写入到一 个认证文件中。为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅 root 管 理员才能够读写:
[root@source ~]# vim auth.smb
username=muyu
password=admin@123
domain=MYGROUP
[root@source ~]# chmod 600 auth.sm
最后在 Linux 客户端上创建一个用于挂载 Samba 服务共享资源的目录,并把挂载信息 写入到/etc/fstab 文件中,以确保共享挂载信息在服务器重启后依然生效:
[root@source ~]# mkdir /database
[root@source ~]# vim /etc/fstab
# /etc/fstab
# Created by anaconda on Thu May 13 19:28:57 2021
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
/dev/mapper/centos-root / xfs defaults 0 0
UUID=e4e6d1c8-7311-4670-8e7d-bb96368aa263 /boot xfs defaults 0 0
/dev/mapper/centos-swap swap swap defaults 0 0
/dev/sdb1 /newfs xfs defaults 0 0
//192.168.10.10/database /database cifs credentials=/root/auth.smb 0 0
~
Linux 客户端成功地挂载了 Samba 服务的共享资源。进入到挂载目录/database 后就可以 看到 Windows 系统访问 Samba 服务程序时留下来的文件了。当然,我们也可以对该文件进行读写操作并保存。
[root@source ~]# cd /database/
[root@source database]# ll
-rwxr--r--. 1 1000 1000 29 9月 17 23:57 text.txt
[root@source database]# cat text.txt
这是第一个测试文档
至此samba文件共享服务就搭建成了,怎么样是不是非常简单呢?
当然samba在企业中的应用不仅于此,还涉及到了复杂的安全问题与权限问题,我们在此只是实现了它的一部分功能,至于samba的更多功能与实际应用中的权限问题就只有在工作中慢慢探索与实践了。