一、目标
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文件夹是只读。
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查看是否挂载成功
七、案例简述
某公司有若干部门:销售部、人事部、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上好测试共享文件夹了。应该没啥问题。