Samba 文件共享服务安装教程
一. 介绍
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 技术交流群。

上一篇: Linux 挂载磁盘
下一篇: 谈谈自己对于 AOP 的了解
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论