26 使用 Samba 实现文件共享

Samba 文件共享服务

Samba 服务程序现在已经成为在 Linux 系统与Windows 系统之间共享文件的最佳选择

详细配置请转Samba服务

安装

[root@localhost ~]# yum install samba -y

Samba 服务程序的主配置文件,只有 37 行。

第 5~8 行参数中所提到的 cups的全称为 Common UNIX Printing System(通用 UNIX 打印系统),依然是用于打印机或打印服务器的。

第 17~22 行代表共享每位登录用户的家目录内容。虽然在某些情况下这可以更方便地共享文件,但这个默认操作着实有些危险,

第 24~29 行是用 SMB 协议共享本地的打印机设备,方便局域网内的用户远程使用打印机设备。当前我们没有打印机设备,

第 31~37 行依然为共享打印机设备的参数,

上面说的都可以删掉

[root@localhost ~]# cat /etc/samba/smb.conf[global]workgroup = SAMBAsecurity = userpassdb backend = tdbsam
[root@localhost ~]#

security 参数代表用户登录 Samba 服务时采用的验证方式。总共有 4种可用参数。

  • share:代表主机无须验证密码。这相当于 vsftpd 服务的匿名公开访问模式,比较方便,但安全性很差。
  •  user:代表登录 Samba 服务时需要使用账号密码进行验证,通过后才能获取到文件。这是默认的验证方式,最为常用。
  • domain:代表通过域控制器进行身份验证,用来限制用户的来源域。
  •  server:代表使用独立主机验证来访用户提供的密码。这相当于集中管理账号,并不常用。

配置共享资源 

Samba 服务程序的主配置文件包括全局配置参数和区域配置参数。

全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。

区域配置参数则用于设置单独的共享资源,且仅对该资源有效。

创建共享资源的方法很简单,只要将参数写入到 Samba 服务程序的主配置文件中,然后重启该服务即可。 

 [database]         共享名称为 database
comment = 。。。。  注释,说明
path = /home/database         共享目录为/home/database
public = no         关闭“所有人可见”
writable = yes         允许写入操作

 Samba 服务程序默认使用的是用户密码认证模式(user)。只有建立账户信息数据库之后,才能使用用户密码认证模式。另外,Samba 服务程序的数据库要求账户必须在当前系统中已经存在,

pdbedit

用于管理 Samba 服务程序的账户信息数据库,“pdbedit [选项]账户”。

在第一次把账户信息写入到数据库时需要使用-a 参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。

-a 用户名 建立 Samba 用户
-x 用户名 删除 Samba 用户

-u 用户名,不会 再询问你这些信息以创建新的用户账号。
-L 列出用户列表
-Lv 列出用户详细信息的列表

[root@localhost ~]# pdbedit -a -u trick
new password:
retype new password:
Unix username:        trick
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-4277232344-3989409239-715028539-1000
Primary Group SID:    S-1-5-21-4277232344-3989409239-715028539-513
Full Name:            trick
Home Directory:       \\localhost\trick
HomeDir Drive:
Logon Script:
Profile Path:         \\localhost\trick\profile
Domain:               LOCALHOST
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:    Wed, 31 Jan 2024 18:13:04 CST
Password can change:  Wed, 31 Jan 2024 18:13:04 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
Logon hours         : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@localhost ~]#

创建用于共享资源的文件目录。在创建时,要考虑到文件读写权限的问题,而且/home 目录是系统中普通用户的家目录。

递归地将 /home/database 目录下的所有文件和子目录的所有者(owner)和所属组(group)都修改为 trick

[root@localhost ~]# mkdir /home/database
[root@localhost ~]# chown -Rf trick:trick /home/database/

正确的文件上下文值应该是 samba_share_t,所以只需要修改完毕后执行restorecon 命令,就能让应用于目录的新SELinux 安全上下文立即生效。 

[root@localhost ~]# semanage fcontext -a -t samba_share_t /home/database/
[root@localhost ~]# restorecon -Rv /home/database/

 执行 getsebool 命令,筛选出所有与 Samba 服务程序相关的 SELinux 域策略,根据策略的
名称(和经验)选择出正确的策略条目进行开启

[root@localhost ~]# getsebool -a |grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_load_libgfapi --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
tmpreaper_use_samba --> off
use_samba_home_dirs --> off
virt_use_samba --> off
[root@localhost ~]# setsebool -P samba_enable_home_dirs on

配置文档

[root@localhost ~]# vim /etc/samba/smb.conf
[global]workgroup = SAMBAsecurity = userpassdb backend = tdbsam
[database]comment = 不能删除数据库里面的文件path = /home/databasepublic = nowritable = yes

 重启 smb 服务并加入到启动项中

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.

将 iptables 防火墙清空,再把 Samba 服务添加到firewalld 防火墙中,

[root@localhost ~]# systemctl restart smb
[root@localhost ~]# systemctl enable smb
Created symlink /etc/systemd/system/multi-user.target.wants/smb.service → /usr/lib/systemd/system/smb.service.
[root@localhost ~]# iptables -F
[root@localhost ~]# iptables-save
[root@localhost ~]# firewall-cmd --zone=public --permanent --add-service=samba
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]# systemctl status smb               ● smb.service - Samba SMB DaemonLoaded: loaded (/usr/lib/systemd/system/smb.service>Active: active (running) since Wed 2024-01-31 18:25>Docs: man:smbd(8)man:samba(7)man:smb.conf(5)Main PID: 78883 (smbd)Status: "smbd: ready to serve connections..."Tasks: 4 (limit: 12391)Memory: 33.6M
lines 1-10

测试

输入用户名,密码(Samba 服务程序使用的账户信息数据库中trick的密码,不是系统用户trick的Miami) 

 可以执行查看、写入、更名、删除文件操作

Linux 挂载共享

Samba 服务程序还可以实现 Linux 系统之间的文件共享。

# dnf install cifs-utils

安装好软件包后,在 Linux 客户端创建一个用于挂载 Samba 服务共享资源的目录。这个
目录可以与服务器上的共享名称同名,

mount 命令中的-t 参数用于指定协议类型,

-o 参数用于指定用户名和密码,最后追加上服务器 IP 地址、共享名称和本地挂载目录即可。

 mkdir /database
mount -t cifs -o username=linuxprobe,password=redhat //192.168.2.100/database /database

可以按照 Samba 服务的用户名、密码、共享域的顺序将相关信息写入一个认证文
件中,然后让/etc/fstab 文件和系统自动加载它 

vim auth.smb
username=trick
password=trick
domain=SAMBA

将挂载信息写入/etc/fstab 文件中,以确保共享挂载信息在服务器重启后依然生效

//192.168.2.100/database database cifs credentials=/root/auth.smb 0 0

 NFS(网络文件系统)

 autofs 自动挂载服务

        autofs 自动挂载服务可以帮我们解决。与 mount 命令不同,autofs 服务程序是一种 Linux 系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统,autofs 服务程序则是在用户需要使用该文件系统时才去动态挂载,从而节约了网络资源和服务器的硬件资源。

 安装

dnf install autofs

在 autofs 服务程序的主配置文件中需要按照“挂载目录 子配置文件”的格式进行填写。挂载目录是设备挂载位置的上一级目录。

例如,光盘设备一般挂载到/media/cdrom 目录中,那么挂载目录写成/media 即可。

对应的子配置文件则是对这个挂载目录内的挂载设备信息作进一步的说明。子配置文件需要用户自行定义,文件名字没有严格要求,但后缀建议以.misc 结束。

vim /etc/auto.master1 #2 # Sample auto.master file3 # This is a 'master' automounter map and it has the following format:4 # mount-point [map-type[,format]:]map [options]5 # For details of the format look at auto.master(5).6 #7 /media /etc/iso.misc8 /misc   /etc/auto.misc

        在子配置文件(iso.misc)中,应按照“挂载目录 挂载文件类型及权限 :设备名称”的格式进行填写。
        例如,要把光盘设备挂载到/media/iso 目录中,可将挂载目录写为 iso,而-fstype 为文件系统格式参数,iso9660 为光盘设备格式,ro、nosuid 及 nodev 为光盘设备具体的权限参数,/dev/cdrom则是定义要挂载的设备名称。

vim /etc/iso.misc
iso -fstype=iso9660,ro nosuid,nodev, :/dev/cdrom

配置完成后再顺手将 autofs 服务程序启动并加入到系统启动项中:

systemctl start autofs
systemctl enable autofs

 我们可以使用 cd 命令切换到这个 iso 子目录中,而且光盘设备会被立即自动挂载上,然后也就能顺利查看光盘内的内容了。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/457209.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

leetcode 算法 69.x的平方根(python版)

需求 给你一个非负整数 x ,计算并返回 x 的 算术平方根 。 由于返回类型是整数,结果只保留 整数部分 ,小数部分将被 舍去 。 注意:不允许使用任何内置指数函数和算符,例如 pow(x, 0.5) 或者 x ** 0.5 。 示例 1&#…

Python HTTP隧道在远程通信中的应用:穿越网络的“魔法门”

在这个数字化时代,远程通信就像是我们日常生活中的“魔法门”,让我们可以随时随地与远方的朋友、同事或服务器进行交流。而在这扇“魔法门”的背后,Python HTTP隧道技术发挥着举足轻重的作用。 想象一下,你坐在家里的沙发上&…

基于 NXP S32K344 的汽车通用评估板方案

S32K3xx 系列是 NXP 基于 ARMCortex-M7 的汽车工业级 MCU,符合 ISO26262 ASIL-D 汽车功能安全等级,支持 ASIL B/D 安全应用,提供了一个可扩展的平台,具有下一代安全性、可扩展性、连接性和低功耗特性。适用于可能会在严酷环境下工…

股市反转数据分析

20240206是一个很好的股市反转数据分析的样本。因为之前的1月份2月前3个交易日也就是2月1日,2月2日和2月5日基本都是大跌。数据记录如下: 指数名称指数代码收盘价 [日期] 20231229 [单位] 元收盘价 [日期] 20240205 [单位] 元区间涨跌幅上证指数000001.…

tomcat部署zrlog

1.下载zrlog包,并添加到虚拟机中 1)进入/opt/apache-tomcat-8.5.90/webapps目录 cd /opt/apache-tomcat-8.5.90/webapps2)下载zrlog包 wget http://dl.zrlog.com/release/zrlog-1.7.1-baaecb9-release.war 3)重命名包 mv zrlog-1.7.1-baaecb9-release zrblog 2…

React+Antd实现省、市区级联下拉多选组件(支持只选省不选市)

1、效果 是你要的效果,咱们继续往下看,搜索面板实现省市区下拉,原本有antd的Cascader组件,但是级联组件必须选到子节点,不能只选省,满足不了页面的需求 2、环境准备 1、react18 2、antd 4 3、功能实现 …

ChatGPT学习第一周

📖 学习目标 掌握ChatGPT基础知识 理解ChatGPT的基本功能和工作原理。认识到ChatGPT在日常生活和业务中的潜在应用。 了解AI和机器学习的基本概念 获取人工智能(AI)和机器学习(ML)的初步了解。理解这些技术是如何支撑…

数据结构之堆排序

对于几个元素的关键字序列{K1,K2,…,Kn},当且仅当满足下列关系时称其为堆,其中 2i 和2i1应不大于n。 { K i ≤ K 2 i 1 K i ≤ K 2 i 或 { K i ≥ K 2 i 1 K i ≥ K 2 i {\huge \{}^{K_i≤K_{2i}} _{K_i≤K_{2i1}} …

提升你的PHP开发效率:探索JetBrains PhpStorm 2022的全新特性

在当今快速发展的软件开发领域,选择一个强大且高效的开发工具对于提升开发效率、保证代码质量至关重要。对于PHP开发者来说,JetBrains PhpStorm一直是市场上最受欢迎的IDE之一。随着JetBrains PhpStorm 2022的发布,这款工具带来了一系列创新功…

【tgcalls】webrtc::Call的使用

call 是MediaManager的成员 G:\CDN\P2P-DEV\tdesktop-offical\Telegram\ThirdParty\tgcalls\tgcalls\MediaManager.hstd::unique_ptr<webrtc::Call> _call;MediaManager 内置网络模块:NetworkInterfaceImpl class NetworkInterfaceImpl : public cricket

酷开科技,打造非凡的生活体验

酷开科技&#xff0c;作为一家专注于智能电视操作系统研发及智能电视运营增值服务的高科技企业&#xff0c;始终致力于为消费者提供非凡的生活体验。通过不断创新的技术和产品&#xff0c;酷开科技为消费者们带来了便捷、舒适、个性化的智能生活。 首先&#xff0c;酷开科技在智…

Java LinkedList 实现栈和队列

Java LinkedList 实现栈和队列 package com.zhong.collection;import java.util.LinkedList;public class LinkedListDemo {public static void main(String[] args) {// LinkedList 创建一个队列LinkedList<String> queue new LinkedList<>();// 进队System.out…