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服务
[root@zcwyou ~]# systemctl start smb nmb
查看Samba服务进程
[root@zcwyou ~]# ps -ef | grep -E 'smb|nmb'
检查两个端口139和445
[root@zcwyou ~]# ss -tln | grep -E '139|445'
如果两个端口都启用了,证明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
在[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
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
输入刚才的虚拟账号user01,密码用的是账号xingzheng对应的密码
9. samba共享目录提示权限不足
如果输入密码后,提示没有权限,一般是由SElinux策略引起,请继续往下看第10步操作。
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为客户端。
评论前必须登录!
注册