> CentOS > CentOS服务器 > 文件同步 >

CentOS 7安装配置Samba

最近新学Linux,本来想用RedHat Linux来做学习平台,但是发现RedHat Linux ISO文件实在是太难下载了。因为CentOS和RedHat Linux极其相似,所以选择下载CentOS Linux 7 DVD ISO. 这个镜像4个多GB,但是下载只用了30多分钟。

网络上大量配置samba的文章,但是发现没有一篇照着做是可以实现的。所以我决定写一篇完整的配置。虽然安全性不能保证,但是功能可以实现,安全性以后再研究了。

  1. 安装

安装的过程我不再具体写,百度一下有大把文档,稍微有点Linux基础的人我相信都能安装的了。我装了两次,第一次用的的min install, 装完以后发现ifconfig命令运行不了。

运行which ifconfig或者是find / -name "ifconfig*.*"都没有找到文件文件。

网上找了很多,有的说是环境变量没有,文件在bin 或者sbin下面。

正解是运行下面命令:

# yum install net-tools

原因是ifconfig已经过时了,可以用ip addr或者ip link查询。

因为我是新学,所以为了排除干扰,我重新选择了file and printer server模式安装。这个模式下安装ifconfig命令是可以运行的。

2.安装samba

运行下面命令:

# yum -y install samba samba-client samba-common

安装完成后运行 rpm -qa | grep "samba",确保都安装成功了。

wKiom1QnyN3im3QMAACEg_dNi6Q211.jpg

3. 配置samba

假设我们有这样一个场景

 

共享名 路径 权限
SHAREDOC /smb/docs 所有人员包括来宾均可以访问
RDDOCS /smb/tech 仅允许特定组的用户进行读写访问
准备工作:
创建共享目录(假设共享/smb目录下的文件)
# mkdir -p /smb/docs
# mkdir -p /smb/tech
 
//创建操作系统用户
# useraddalice
# useraddjack
# useradd tom
# useradd RD
  
//修改用户的组
# usermod -a-G RD alice
# usermod -a-G RD jack
# usermod -a-G RD tom
账号创建完以后检查用户所属组,确保每个用户所属组都有1003 RD 
# id alice
uid=1000(alice) gid=1000(alice)groups=1000(alice),1003(RD)
# id jack

 

uid=1001(jack) gid=1001(jack)groups=1001(jack),1003(RD)
# id tom

 

uid=1002(tom) gid=1002(tom)groups=1002(tom),1003(RD)
# id RD

 

uid=1003(RD) gid=1000(RD)groups=1003(RD)
 
//修改目录权限
# chgrp RD /smb/tech
# chgrp RD /smb/docs
# chown RD /smb/tech
# chown RD /smb/docs
# chmod 770 /smb/tech
# chmod 770 /smb/docs
 
修改完成后再检查一下文件夹权限
# ls /smb -l
 
//备份原有的配置文件在原目录下
# cd /etc/samba
# cp smb.conf smb.conf.origin
 
 
# vi/etc/samba/smb.conf
删除原有所有内容,添加如下内容:
[global]
  workgroup=BIGCLOUD
  netbios name=ZZSRV2
  server string=Samba Server
  #security=share
  security=user
  map to guest = Bad User
[SHAREDOCS]
  path=/smb/docs
  readonly=yes
  browseable=yes
  guest ok=yes
[RDDOCS]
  path = /smb/tech/
  public = no
  writable = yes
 
  write list = @RD
  validusers = @RD

4. 重启服务

RedHat Liunx都是用service restart smb来重启的,在CentOS里面服务的操作都是用systemctl来完成了。

运行下面命令:

#  systemctl restart smb

# systemctl reload smb

# systemctl status smb

最后这条命令是检查状态的。

wKioL1Qn0hnxC41_AANT1o1nrS8028.jpg

 

5. 防火墙和SELinux

网上基本上没有文章提到这一点,所以我一直测试不成功,最后发现关闭SELinux和防火墙后就可以访问了。

关闭防火墙

wKiom1Qn046hB80lAADU-iQnisI052.jpg

关闭SELinux

wKiom1Qn06fydR1JAAHsK1ShxVY267.jpg

 

7. 客户端所属组

我成功测试的机器是一台在WORKGROUP工作组里面的windows 7,加入域的机器是访问不了的。这个可能和之前我们Samba里面设置的是workgroup有关系吧。

(责任编辑:IT)