Samba 文件共享服务安装教程

发布于 2024-06-01 12:03:48 字数 6605 浏览 37 评论 0

一. 介绍

Samba 是一个能让 Linux 系统应用 Microsoft 网络通讯协议的软件,而 SMB 是 Server Message Block 的缩写,即为服务器消息块 ,SMB 主要是作为 Microsoft 的网络通讯协议,后来 Samba 将 SMB 通信协议应用到了 Linux 系统上,就形成了现在的 Samba 软件。后来微 软又把 SMB 改名为 CIFS(Common Internet File System),即公共 Internet 文件系统,并且加入了许多新的功能,这样一来,使得 Samba 具有了更强大的功能。

Samba 最大的功能就是可以用于 Linux 与 windows 系统直接的文件共享和打印共享,Samba 既可以用于 windows 与 Linux 之间 的文件共享,也可以用于 Linux 与 Linux 之间的资源共享,由于 NFS(网络文件系统)可以很好的完成 Linux 与 Linux 之间的数据共享,因而 Samba 较多的用在了 Linux 与 windows 之间的数据共享上面。

SMB 是基于客户机/服务器型的协议,因而一台 Samba 服务器既可以充当文件共享服务器,也可以充当一个 Samba 的客户端,例如,一台在 Linux 下已经架设好的 Samba 服务器,windows 客户端就可以通过 SMB 协议共享 Samba 服务器上的资源文件,同时,Samba 服务器也可以访问网络中 其它 windows 系统或者 Linux 系统共享出来的文件。
Samba 在 windows 下使用的是 NetBIOS 协议,如果你要使用 Linux 下共享出来的文件,请确认你的 windows 系统下是否安装了 NetBIOS 协议。

组成 Samba 运行的有两个服务,一个是 SMB,另一个是 NMB;SMB 是 Samba 的核心启动服务,主要负责建立 Linux Samba 服务器与 Samba 客户机之间的对话,验证用户身份并提供对文件和打印系统的访问,只有 SMB 服务启动,才能实现文件的共享,监听 139 TCP 端口;而 NMB 服务是负责解析用的,类似与 DNS 实现的功能,NMB 可以把 Linux 系统共享的工作组名称与其 IP 对应起来,如果 NMB 服务没有启 动,就只能通过 IP 来访问共享文件,监听 137 和 138 UDP 端口。

例如,某台 Samba 服务器的 IP 地址为 192.168.126.15,对应的工作组名称为 MYWORKGROUP,那么在 Windows 的 IE 浏览器输入下面两条指令都可以访问共享文件。其实这就是 Windows 下查看 Linux Samba 服务器共享文件的方法。

二. 安装 Samba

2.1 准备工作

2.1.1 关闭 SeLinux

查看 SeLinux 状态:

[root@localhost ~]# sestatus
SELinux status:                 enabled
SELinuxfs mount:                /sys/fs/selinux
SELinux root directory:         /etc/selinux
Loaded policy name:             targeted
Current mode:                   enforcing
Mode from config file:          error (Success)
Policy MLS status:              enabled
Policy deny_unknown status:     allowed
Max kernel policy version:      28

临时关闭 SeLinux:

setenforce 0

再次查看 SeLinux 状态

默认的,SELinux 禁止网络上对 Samba 服务器上的共享目录进行写操作,即使你在 smb.conf 中允许了这项操作。

永久关闭 SeLinux,需要重启机器

修改配置文件/etc/selinux/config,将 SELINU 置为 disabled

查看修改后:

[root@localhost ~]# cat /etc/selinux/config 

# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
#     enforcing - SELinux security policy is enforced.
#     permissive - SELinux prints warnings instead of enforcing.
#     disabled - No SELinux policy is loaded.
# SELINUX=enforcing
SELINUX=disabled
# SELINUXTYPE= can take one of three two values:
#     targeted - Targeted processes are protected,
#     minimum - Modification of targeted policy. Only selected processes are protected. 
#     mls - Multi Level Security protection.
SELINUXTYPE=targeted 

重启后,查看 SeLinux 状态

[root@localhost ~]# sestatus
SELinux status:                 disabled

2.1.2 开启端口

开启 445 端口:

firewall-cmd --zone=public --add-port=445/tcp --permanent

455 是 samba 服务所使用的端口

2.2 安装 Samba

使用包管理器安装 Samba:

yum install samba -y

2.3 启动服务

systemctl start smb

设置开机自启:

systemctl enable smb

2.4 查看服务运行状态

systemctl status smb

2.5 关闭服务

systemctl stop smb

三. 管理 Samba 用户

在配置 Samba 服务之前,我们需要创建 Samba 账户,该账户用于在网络终端在连接我们共享服务时使用。

Samba 用户必须是 Linux 用户,所以我们需要先创建一个 Linux 用户:

useradd -s /sbin/nologin smb

例如我们创建了一个 smb 的 Linux 用户,由于这个账号只需要给 Samba 服务使用,所以我们使用了 /sbin/nologin 参数,代表该用户不能登录。

3.1 添加 Samba 账户

格式:

smbpasswd -a [用户名]

例如:

smbpasswd -a smb

将 Linux 用户 smb 添加进 Samba 中。

3.2 修改 Samba 账户密码

smbpasswd [用户名]

3.3 删除 Samba 账户

smbpasswd -x [用户名]

3.4 查看 Samba 账户

pdbedit -L -v

3.5 查看 Samba 服务状态

smbstatus

通过该命令可以查看当前 Samba 服务有哪些客户端正在连接。

四. Samba 服务配置

配置文件地址: /etc/samba/smb.conf

4.1 全局配置

在 global 中添加如下配置:

log file = /var/log/samba/samba.log.%I # 日志文件路径,%I 代表为每一个客户端连接,以 IP 结尾创建一个独立的日志文件
log level = 2
max log size = 10240 #日志最大大小,单位 KB,当达到最大值时,会创建新的日志文件

除了上述配置,我们还能通过下列属性,个性化配置 Samba 服务:

hosts allow :表示允许连接到 Samba Server 的客户端,多个参数以空格隔开。可以用一个 IP 表示,也可以用一个网段表示。hosts deny 与 hosts allow 刚好相反,例如:

hosts allow=172.17.2.EXCEPT172.17.2.50 #表示允许来自 172.17.2.*的主机连接,但排除 172.17.2.50
hosts allow = 192.168.1. 192.168.10.1 #表示允许 192.168.1.*网段和 192.168.10.1 的主机连接
hosts allow=172.17.2.0/255.255.0.0 #表示容许来自 172.17.2.0/255.255.0.0 子网中的所有主机连接

max connections :指定连接 Samba Server 的最大连接数目。如果超出连接数目,则新的连接请求将被拒绝。0 表示不限制。

log file :设置 Samba Server 日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问 Samba Server 的机器都单独记录一个日志文件。如果 pc1、pc2 访问过 Samba Server,就会在/var/log/samba 目录下留下 log.pc1 和 log.pc2 两个日志文件。

max log size :设置 Samba Server 日志文件的最大容量,单位为 kB,0 代表不限制。

4.2 共享配置

[work] # 方括号中填写分享的名称
    comment = work # 该共享的描述,可以是任意字符串。
    path = /mmt/work #path 用来指定共享目录的路径
    public = no #是否能被匿名账户访问,默认值 no
    read only = no #是否只读
    valid users = smb # 特定 Samba 用户才能访问该共享,多个用户使用空格分开,如果为空,则代表所有 Samba 用户都能访问该共享,如果要加入一个组就用“@组名”表示。
    write list = smb # read only = no 用于控制所有用户都有读写权限,如果想控制只有指定用户有写权限,即可使用 write list,多个用户之间使用空格隔开
    browsable = no # 是否允许所有用户浏览该共享,默认为 yes,no 代表隐藏

共享配置始终以 [共享名称] 作为开头,下面的每一行代表该共享的配置。

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。
列表为空,暂无数据

关于作者

聊慰

暂无简介

文章
评论
27 人气
更多

推荐作者

櫻之舞

文章 0 评论 0

弥枳

文章 0 评论 0

m2429

文章 0 评论 0

野却迷人

文章 0 评论 0

我怀念的。

文章 0 评论 0

    我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
    原文