智传网优云课堂,专注分享IT技术
与IT技术爱好者一起共同学习进步

centos 7 samba安装与配置(10分钟完成)

1. 了解Samba协议

Samba用于向网络上的其他计算机共享文件和打印机的一种网络协议。由客户端与服务端组成。
Samba由两个主要程序组成,它们是smbd和nmbd。他们共享一个配置文件smb.conf,一般位于/etc/下。

samba共享出来的文件和打印服务,可以直接被Windows系统使用,可以简单理解为Windows共享文件夹。

Samba提供了基于CIFS的四个服务:文件和打印服务、授权与被授权、名称解析、浏览服务。前两项服务由smbd提供,后两项服务则由nmbd提供。 简单地说,smbd进程的作用是处理到来的SMB软件包,为使用该软件包的资源与Linux进行协商,nmbd进程使主机(或工作站)能浏览Linux服务器。

2. 安装Samba套件

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

安装Samba套件

启动samba服务

[root@zcwyou ~]# systemctl start smb nmb

查看Samba服务进程

[root@zcwyou ~]# ps -ef | grep -E 'smb|nmb'

查看Samba服务进程

检查两个端口139和445

[root@zcwyou ~]# ss -tln | grep -E '139|445'

如果两个端口都启用了,证明samba已经启动成功。
查看Samba服务端口

3. 配置防火墙

配置firewalld,开放139和445端口

[root@zcwyou ~]# firewall-cmd --permanent --zone=public --add-port=139/tcp
[root@zcwyou ~]# firewall-cmd --permanent --zone=public --add-port=445/tcp
[root@zcwyou ~]# firewall-cmd --reload

4. 修改samba配置文件

[root@zcwyou ~]# vi /etc/samba/smb.conf

在[global]字段加下以下内容:

hosts allow = 127.  192.168.13.  192.168.1. 172.16.87.
username map = /etc/samba/smbusers
unix charset = UTF-8 
dos charset = cp936 

修改samba配置文件全局参数

在[homes]字段加入以下内容:

[homes]
comment = Home Directories
valid users = %S, %D%w%S
invalid users = root
browseable = No
public = No
read only = No
inherit acls = Yes
create mask = 0664
directory mask =0775
writable = yes

修改samba共享目录参数

5. 设置账号与密码

创建不可登录系统的账户

[root@zcwyou ~]# useradd -s /sbin/nologin xingzheng

设置该账号密码:

[root@zcwyou ~]# smbpasswd -a xingzheng

设置账号与密码

smbpasswd命令的其它选项如下:
smbpasswd -a 增加用户(要增加的用户必须以是系统用户)
smbpasswd -d 冻结用户,就是这个用户不能在登录了
smbpasswd -e 恢复用户,解冻用户,让冻结的用户可以在使用
smbpasswd -n 把用户的密码设置成空. 要在global中写入 null passwords -true
smbpasswd -x 删除用户

6. 创建虚拟用户

[root@zcwyou ~]# vi /etc/samba/smbusers

添加以下内容:

xingzheng = user01

即把系统中的用户名xingzheng映射为user01,用于隐藏真实的系统用户名。

7. 启动samba服务

[root@zcwyou ~]# systemctl restart smb nmb

设置开机自启动

[root@zcwyou ~]# systemctl enable smb nmb

输出提示即表示设置成功:

Created symlink from /etc/systemd/system/multi-user.target.wants/smb.service to /usr/lib/systemd/system/smb.service.
Created symlink from /etc/systemd/system/multi-user.target.wants/nmb.service to /usr/lib/systemd/system/nmb.service.

8. 测试

打开我的电脑,
输入

\\172.16.87.137

在Windows系统中连接共享服务器

输入刚才的虚拟账号user01,密码用的是账号xingzheng对应的密码
输入samba虚拟账号

9. samba共享目录提示权限不足

如果输入密码后,提示没有权限,一般是由SElinux策略引起,请继续往下看第10步操作。
samba共享目录提示权限不足

10. 修改SELinux策略

10.1 修改SElinux策略

推荐的方法是修改SElinux策略,允许samba读写:

[root@zcwyou ~]# setsebool -P samba_export_all_ro=1 samba_export_all_rw=1

检查:

[root@zcwyou ~]# getsebool -a | grep samba_export

应该可以看到两个on。

[root@zcwyou ~]# yum -y install policycoreutils-python
[root@zcwyou ~]# semanage fcontext -at samba_share_t "/home(/.*)?"
[root@zcwyou ~]# restorecon /home

或者使用以下两种方法之一禁用SELinux,并不推荐

10.2 临时关闭SElinux

[root@zcwyou ~]# setenforce 0

10.3 永久关闭SElinux

增加以下配置:

[root@zcwyou ~]# vi /etc/selinux/config 

SELINUX=enforcing

改为

SELINUX=disabled

下次重启才能生效。

11. 总结

本文只是演示了在CentOS7上如何搭建samba服务器,samba服务一般提供给Windows用户使用,即一般情况下,Windows为客户端。