一、目标

centos7下samba服务安装和设置。

二、平台

centos7.6,

三、解析

smbd:提供文件共享和打印机共享,利用TCP 139,445端口
nmbd:提供NetBios名称解析,udp137
挂载时用cifs协议。
smb配置文件:/etc/samba/smb.conf

四、服务端主要步骤

1.服务端安装SMB相关组件

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

2.配置samba配置文件/etc/samba/smb.conf,在最后加上以下内容

[kahnSMB]
        comment = kahnSMB_3721_xDescribe
        path = /kahnSMB
        browseable = yes
        guest ok = no
        writable = yes

[kahnSMB]是共享名,comment是描述,path是共享文件夹物理路径,broweable是否所有人可见,guest ok 匿名用户是否能访问,writable是否可写

3.修改selinux参数(chcon -t samba_share_t /kahnSMB   照抄就行了,最后/kahnSMB是共享文件夹的路径)

[root@localhost ~]# chcon -t samba_share_t /kahnSMB
[root@localhost ~]# setenforce 0

4.创建samba共享访问账户
   useradd -s /sbin/nologin xuser1    #创建用户
   smbpasswd -a xuser1         #给用户xuser1创建smb访问密码 (必须安装samba-client才行)
           -a添加smb账户并设置密码,-x删除smb用户,-d禁用smb账户,-e启用smb账户

[root@localhost ~]# useradd -s /sbin/nologin xuser1
[root@localhost ~]# smbpasswd -a xuser1
New SMB password:
Retype new SMB password:
Added user xuser1.

5.启动smb相关服务(可以一次性启动多个服务,空格分开服务即可),并设置开机自动启动。

[root@localhost ~]# systemctl restart smb nmb
[root@localhost ~]# 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.

6.防火墙放行smb服务

[root@localhost ~]# 
[root@localhost ~]# firewall-cmd --permanent --add-service=samba
success
[root@localhost ~]# firewall-cmd --reload 
success

五、windows端访问SMB

1.windows端访问samba共享文件夹,除了能访问到samba共享文件夹,还能自动访问到该用户的家目录。此时是用xuser1用户登录的,这个时候仅对xuser1文件夹有读写权限,对kahnSMB文件夹是只读。

sambaclient 离线安装 centos centos7 samba服务器的配置与安装_客户端

2.服务器端修改共享文件夹权限,让客户端能有写权限。(即将共享文件夹kahnSMB的属主改成xuser1)

[root@localhost ~]# chown xuser1 /kahnSMB/ -R

六、linux客户端访问SMB

1.客户端安装软件

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

2.尝试使用命令去连接一下smb共享文件夹
命令:smbclient -U xuser1 //10.100.100.210/kahnSMB

[root@localhost ~]# smbclient -U xuser1 //10.100.100.210/kahnSMB
Enter SAMBA\xuser1's password: 
Try "help" to get a list of possible commands.
smb: \> ls
  .                                   D        0  Mon Aug 26 06:33:41 2019
  ..                                 DR        0  Mon Aug 26 06:32:54 2019
  ka.txt                              N       24  Mon Aug 26 06:33:41 2019

		29036696 blocks of size 1024. 24277112 blocks available

3.在客户端创建挂载点文件夹:mkdir /externalSMB
4.临时挂载smb到本地文件夹/externalSMB:mount -t cifs //10.100.100.210/kahnSMB /externalSMB/ -o    username=xuser1,password=ILoveSH021 。注意cisf是挂载协议,后面跟共享路径,挂载点,-o是字母欧,跟上用户名和密码

[root@localhost ~]# mkdir /externalSMB
[root@localhost ~]# 
[root@localhost ~]# mount -t cifs //10.100.100.210/kahnSMB /externalSMB/ -o username=xuser1,password=ILoveSH021
[root@localhost ~]# 
[root@localhost ~]# df -hT
Filesystem               Type      Size  Used Avail Use% Mounted on
/dev/sda3                xfs        18G  4.7G   14G  27% /
devtmpfs                 devtmpfs  896M     0  896M   0% /dev
tmpfs                    tmpfs     911M     0  911M   0% /dev/shm
tmpfs                    tmpfs     911M   11M  901M   2% /run
tmpfs                    tmpfs     911M     0  911M   0% /sys/fs/cgroup
/dev/sda1                xfs       297M  148M  150M  50% /boot
10.100.100.210:/kahnNFS  nfs4       28G  4.6G   24G  17% /mnt/kahnC7share
tmpfs                    tmpfs     183M   12K  183M   1% /run/user/42
tmpfs                    tmpfs     183M     0  183M   0% /run/user/0
//10.100.100.210/kahnSMB cifs       28G  4.6G   24G  17% /externalSMB
[root@localhost ~]# 
[root@localhost ~]# cd /externalSMB/
[root@localhost externalSMB]# ls
ka.txt
[root@localhost externalSMB]# cat ka.txt 
this is my sambaFolder.
[root@localhost externalSMB]# echo "这是在Linux客户端上写入的文件内容,写到smb共享文件夹中去" > /externalSMB/kClient.txt
[root@localhost externalSMB]# ls
ka.txt  kClient.txt
[root@localhost externalSMB]#

5.smb永久挂载在linux客户端

   //10.100.100.210/kahnSMB        /externalSMB    cifs    defaults,username=xuser1,password=IloveSh021    0 0

别忘记还要mount -a挂载上去。

再可用df -hT查看是否挂载成功

sambaclient 离线安装 centos centos7 samba服务器的配置与安装_共享文件夹_02

七、案例简述

某公司有若干部门:销售部、人事部、it部、设计部,每个部门有自己的共享文件夹,自己部门的共享文件夹仅仅能自己部门访问。有个公共文件夹大家都能访问,但仅仅只有自己部门组的人能修改。

1. 创建共享文件夹
   mkdir -p /xsmb/{sales,design.human,it,share/{sales,design,human,it}}   执行后可以用tree /xsmb 目录结果,
2.给每个部门创建一个用户组
   groupadd itGroup,只举一个例子
3.给每个部门创建几个账户
   useradd -M -s /sbin/nologin -g itGroup itUser1     ,只举一个梨子。
4.selinux设置权限给文件夹,别问我为啥,我也不知道。
   chcon -t samba_share_t /xsmb{sales,design.human,it}
5.给每个文件夹设定权限:chmod 1770 /xsmb{sales,design.human,it}
6.给公共共享文件夹设定权限:chmod 1777 /xsmb/share/
7.将各自部门的共享文件夹属组权限改成自己部门组:chown :itGroup /xsmb/it/
8.编辑smb配置文件vim /etc/samba/smb.conf  ,添加对应下列行,每行意思我也不能完全清楚,做的时候百度不迟。

[sales]
        comment = xiaoshouBU ShareFolder
        path = /xsmb/sales
        browseable = yes
        guest ok = no
        writable = yes
	write list = @sales
[design]
        comment = design ShareFolder
        path = /xsmb/design
        browseable = yes
        guest ok = no
        writable = yes
        write list = @designGroup
[it]
        comment = it ShareFolder
        path = /xsmb/it
        browseable = yes
        guest ok = no
        writable = yes
        write list = @itGroup
[human]
        comment = human ShareFolder
        path = /xsmb/human
        browseable = yes
        guest ok = no
        writable = yes
        write list = @humanGroup
[share]
        comment = everyone  ShareFolder
        path = /xsmb/share
        browseable = yes
        guest ok = no
        writable = yes

9.开启各种smb服务和关闭防火墙
   systemctl restart smb nmb
   systemctl enable smb nmb
   firewall-cmd --permanent --add-service=samba
   setenforce 0

到此为止,在windows上好测试共享文件夹了。应该没啥问题。