在CentOS 7/RHEL 7上安装和设置samba服务器
Samba简介
Samba服务器广泛用于文件和打印机服务器。用于文件共享。
随着Samba版本3的到来,Samba服务器的定义发生了变化。
现在我们称之为samba是一个根据GNU通用公共许可证版本3授权的免费软件套件。
它通常用于使用SMB/CIFS的所有客户端的文件和打印服务协议。
从Samba版本3,我们可以作为主域控制器(PDC)或者域成员与Windows服务器域集成。
它也可以是Active Directory域的一部分。
项目网址:http://www.samba.org/
如何在CentOS 7和RHEL 7(Red Hat Enterprise Linux 7)上安装和设置samba服务器(文件共享服务器)。
我们要共享一个sharedrepo目录,在这个目录中,我们将允许用户test和组名staff访问共享目录,并可以读写其中文件。
Samba服务器的信息
操作系统:CentOS 7
架构:x86_64
Samba版本:Samba 4.1.1(CentOS repo默认)
内核版本:3.10.0-123.el7.x86_64
IP地址:192.168.1.102
网络子网:192.168.1.0/24
Samba服务器端口号
137/tcp
137/udp
138/tcp
138/udp
udp/139协议
139/udp
445/tcp协议
445/udp协议
Samba服务器中使用的守护进程
Samba服务有两个守护进程:
smbd它提供文件和打印机共享服务。
nmbd提供NetBIOS到IP地址名服务。TCP/IP上的NetBIOS通过某种方法将NetBIOS计算机名映射到TCP/IP网络的IP地址。
如何安装和配置samba服务器
使用yum命令安装samba包
- policycoreutils-python提供semanage命令
- samba-client提供smbpasswd命令
- cups-libs:打印机服务
- samba和samba-commons:samba服务器
yum install -y samba samba-commons cups-libs policycoreutils-python samba-client
创建要共享的目录
在/(主根目录)中创建一个名为sharedrepo的目录。此目录将与客户端共享。
mkdir /sharedrepo
新建用户组
指定一个用户组用于对共享目录访问的控制。
可以选择已有的用户组
这里新建一个staff组。
groupadd staff
更改共享文件夹的组和权限
chgrp -R staff /sharedrepo chmod -R 777 /sharedrepo
更改selinux安全上下文
如果系统禁用了selinux,则忽略。
chcon -R -t samba_share_t /sharedrepo/ semanage fcontext -a -t samba_share_t /sharedrepo/ setsebool -P samba_enable_home_dirs on
创建用户,添加到用户组,设置samba密码
创建用户并将其添加到staff组中。并为该用户设置samba密码。
useradd test usermod -G staff test smbpasswd -a test
编辑/etc/samba/smb.conf
首先备份/etc/samba/smb.conf文件
cd /etc/samba/ cp -p smb.conf smb.conf.orig
然后进行编辑,在/etc/samba/smb.conf的最后一行中添加以下内容:
vi /etc/samba/smb.conf
[sharedrepo] comment = shared-directory path = /sharedrepo public = no valid users = test, @staff writable = yes browseable = yes create mask = 0765
设置允许连接Samba服务器的网络
编辑文件 /etc/samba/smb.conf
interfaces = lo enp0s8 192.168.1.00/24 hosts allow = 127. 192.168.1.
注意:对于windows用户,如果网络中的所有PC都使用不同的工作组名称,则在smb.conf中使用工作组名称。默认情况下,Windows的工作组是WORKGROUP。请先尝试,如果需要更改工作组名称,再进行更改。
workgroup = MYGROUP
在/etc/services文件中添加服务
vi /etc/services netbios-ns 137/tcp # netbios name service netbios-ns 137/udp # netbios name service netbios-dgm 138/tcp # netbios datagram service netbios-dgm 138/udp # netbios datagram service netbios-ssn 139/tcp # netbios session service netbios-ssn 139/udp # netbios session service
启动smb和服务
systemctl start smb.service systemctl start nmb.service
系统启动时启用smb和nmb服务
systemctl enable smb.service systemctl enable nmb.service
添加firewalld规则,允许samba访问
在RHEL7/CentOS 7中,默认情况下会提供firewalld。
现在,我们建议我们使用firewalld而不是iptables。
这里,我们允许源网络192.168.1.0/24连接到samba服务,而在日志记录中使用samba前缀。
添加永久防火墙规则
firewall-cmd --permanent --add-rich-rule='rule family="ipv4" source address="192.168.1.0/24" service name="samba" log prefix="samba" level="info" limit value="1/m" accept'
现在重新加载防火墙
firewall-cmd --reload
以上过程必须运行防火墙服务。要启动firewalld,请使用systemd命令,即
systemctl start firewalld.service
如何连接到Samba服务器
在Windows上
在Windows操作系统中,按WIN+R组合键打开运行窗口。
然后键入\samba服务器ip\共享目录
比如:
2.168.1.102\sharedrepo
在Linux上
安装先在系统上安装smbclient。
列出samba服务器中可用的共享文件或者目录
smbclient -L 192.168.1.102 -U test
其中:
-L用于列出共享对象。
192.168.1.102Samba服务器IP地址
test可以访问samba服务的用户名
使用smb控制台访问
smbclient //192.168.1.102/sharedrepo -U test
登录后,我们将获得smb控制台。我们可以使用get和put命令来获取/放置文件。
挂载samba共享目录
在机器上挂载samba共享目录,系统必须支持cifs文件系统
mount -t cifs //192.168.1.102/sharedrepo -o username=test /mnt/
在Ubuntu中,可以在导航栏上简单地访问samba服务器
smb://192.168.1.102/