redhat 7中配置samba服务实现文件共享

redhat 7中配置samba服务实现文件共享

SMB(全称是Server Message Block)是一个网络协议名,它能被用于Web连接和客户端与服务器之间的信息沟通。SMB最初是IBM的贝瑞·费根鲍姆(Barry Feigenbaum)研制的,其目的是将DOS操作系统中的本地文件接口“中断13”改造为网络文件系统。

实验准备
软件:VMware Workstation Pro
虚拟机:Red Hat Enterprise Linux 7 64 位

实例一
已知,某公司需要构建一台Samba服务器,该计算机IP地址为192.168.1.X,现在要求配置

  1. 根据自己的学号设置服务器IP地址和windows的IP地址(同一网段);
  2. Samba服务器新建三个目录:公共目录/share,结算中心/counter,技术部/tech。
    公司员工情况如下:
    主管:总经理lizhang
    结算中心:结算中心主任lisan,员工lisi,员工liwu。
    技术部:技术部经理zhangsan,员工zhangsi,员工zhangwu
    要求:公共目录/share所有人可以访问,权限只读。结算中心目录/counter和技术部目录/tech 分别只允许总经理和对应部门员工访问(本部门员工对应目录有写入权限),并且公司员工无法在网络邻居查看到非本部共享目录。
  3. 通过windows正常访问三个共享目录;

1、配置网络环境,设置服务器模式为NAT模式,在VMware中设置虚拟网络编辑器中NAT模式子网IP为192.168.1.0

请添加图片描述

[root@localhost 桌面]# nmtui

在这里插入图片描述

[root@localhost Desktop]# nmcli device connect eno16777736 
Device 'eno16777736' successfully activated with '303e763d-da53-48bf-a882-efc83be3551d'.
[root@localhost Desktop]# ifconfig 
eno16777736: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.1.10  netmask 255.255.255.0  broadcast 192.168.1.255
        inet6 fe80::20c:29ff:feb2:532c  prefixlen 64  scopeid 0x20<link>
        ether 00:0c:29:b2:53:2c  txqueuelen 1000  (Ethernet)
        RX packets 39  bytes 4865 (4.7 KiB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 75  bytes 9240 (9.0 KiB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

2、挂载镜像,配置YUM源,下载安装samba软件包

[root@localhost Desktop]# mkdir /mnt/cdrom
[root@localhost Desktop]# mount /dev/sr0 /mnt/cdrom/
mount: /dev/sr0 is write-protected, mounting read-only
[root@localhost Desktop]# vim /etc/yum.repos.d/a.repo
[a]
name=a
baseurl=file:///mnt/cdrom
enabled=1
gpgcheck=0
[root@localhost 桌面]# yum install samba -y

samba服务器默认的配置文件为smb.conf,该文件存放在/etc/samba目录下。编辑完毕后,可以利用restparm命令测试配置的正确性。smb.conf根据功能上划分,大致可以分为三个部分,即配置简介,全局变量和共享服务。
在配置简介部分的行首出现两个符号,即“#”和“;”,其含义如下所示:
(1)以“#”开头的为注释,为用户提供相关的配置解释信息,方便用户参考,不用修改它。
(2)以“;”开头的为 samba 配置的格式范例,默认是不生效的,可以通过去掉相关行前面的“;”并加以修改来设置需要使用的功能。需要注意的是“;”是英文字符下的“;”
在这里插入图片描述
配置文件利用“字段=设定值”格式实现对相应功能的设置,利用grep过滤出有效参数。

[root@localhost 桌面]# grep "#" -v /etc/samba/smb.conf | grep ";" -v | grep "^$" -v
[global]
	workgroup = MYGROUP
	server string = Samba Server Version %v
	log file = /var/log/samba/log.%m
	max log size = 50
	security = user
	passdb backend = tdbsam
	load printers = yes
	cups options = raw
[homes]
	comment = Home Directories
	browseable = no
	writable = yes
[printers]
	comment = All Printers
	path = /var/spool/samba
	browseable = no
	guest ok = no
	writable = no
	printable = yes

上述代码详细的注释说明

参数作用
[global]全局参数
workgroup = MYGROUP工作组名称
server string = Samba Server Version %v设定 Samba的注释,可以是任何字符串,也可以不填。宏%v表示显示Samba的版本号
log file = /var/log/samba/log.%m设置Samba日志文件的存储位置以及日志文件名称。在文件名后加个宏%m(主机名),表示对每台访问Samba的机器都单独记录一个日志文件。
max log size = 50设置Samba 日志文件的最大容量,单位为kB,0代表不限制
security = user安全验证的方式,总共有4种*(1)
passdb backend = tdbsam说明:passdb backend就是用户后台的意思。目前有三种后台:smbpasswd、tdbsam和ldapsam。sam应该是security account manager(安全账户管理)的简写。
load printers = yes设置是否在启动Samba时就共享打印机。
cups options = raw打印机相关设置
[homes]共享名称
comment = Home Directories描述信息
browseable = no指定共享信息是否在“网上邻居”中可见
writable = yeswritable用来指定该共享路径是否可写。
[printers]共享名称
comment = All Printers描述信息
path = /var/spool/samba共享路径
browseable = no指定共享信息是否在“网上邻居”中可见
guest ok = no意义同“public”用来指定该共享是否允许guest账户访问。
writable = nowritable用来指定该共享路径是否可写。
printable = yes是否可打印
(1)security = user的4种安全验证的方式。
1. share:用户访问Samba不需要提供用户名和口令, 安全性能较低。
2. user:Samba共享目录只能被授权的用户访问。
3. server:依靠其他Windows NT/2000或Samba来验证用户的账号和密码,是一种代理验证。此种安全模式下,系统管理员可以把所有的Windows用户和口令集中到一个NT系统上,使用Windows NT进行Samba认证, 远程服务器可以自动认证全部用户和口令,如果认证失败,Samba将使用用户级安全模式作为替代的方式。
4. domain:域安全级别,使用主域控制器(PDC)来完成认证。
(2)
1.smbpasswd:该方式是使用smb自己的工具smbpasswd来给系统用户(真实用户或者虚拟用户)设置一个Samba密码,客户端就用这个密码来访问Samba的资源。smbpasswd文件默认在/etc/samba目录下,不过有时候要手工建立该文件。
2.tdbsam:该方式则是使用一个数据库文件来建立用户数据库。数据库文件叫passdb.tdb,默认在/etc/samba目录下。passdb.tdb用户数据库可以使用smbpasswd –a来建立Samba用户,不过要建立的Samba用户必须先是系统用户。我们也可以使用pdbedit命令来建立Samba账户。pdbedit命令的参数很多,我们列出几个主要的。
pdbedit –a username:新建Samba账户。
pdbedit –x username:删除Samba账户。
pdbedit –L:列出Samba用户列表,读取passdb.tdb数据库文件。
pdbedit –Lv:列出Samba用户列表的详细信息。
pdbedit –c “[D]” –u username:暂停该Samba用户的账号。
pdbedit –c “[]” –u username:恢复该Samba用户的账号。
3.ldapsam:该方式则是基于LDAP的账户管理方式来验证用户。首先要建立LDAP服务,然后设置“passdb backend = ldapsam:ldap://LDAP Server”
常用的其他参数
valid users = 允许访问该共享的用户
说明:valid users用来指定允许访问该共享资源的用户。
例如:valid users = bobyuan,@bob,@tech(多个用户或者组中间用逗号隔开,如果要加入一个组就用“@+组名”表示。)

invalid users = 禁止访问该共享的用户
说明:invalid users用来指定不允许访问该共享资源的用户。
例如:invalid users = root,@bob(多个用户或者组中间用逗号隔开。)

write list = 允许写入该共享的用户
说明:write list用来指定可以在该共享下写入文件的用户。
例如:write list = bobyuan,@bob

public = yes/no
说明:public用来指定该共享是否允许guest账户访问

3.创建好需要的用户账号和共享目录

部门管理员账号部门员工账号1部门员工账号2共享目录权限
主管总经理lizhang公共目录/share所有人可以访问,权限只读
结算中心结算中心主任lisanlisiliwu/counter只允许总经理和本部门员工访问,权限读写
技术部技术部经理zhangsanzhangsizhangwu/tech只允许总经理和本部门员工访问,权限读写
[root@localhost opt]# groupadd share
[root@localhost opt]# groupadd counter
[root@localhost opt]# groupadd tech
[root@localhost opt]# cd /opt
[root@localhost opt]# vim userlist
[root@localhost opt]# cat userlist 
lizhang
lisan
lisi
liwu
zhangsan
zhangsi
zhangwu
[root@localhost opt]# vim a.sh 
[root@localhost opt]# cat a.sh 
for a in $(cat /opt/userlist)
do
useradd  -G share $a
echo redhat | passwd --stdin $a
done
[root@localhost opt]# chmod 777 a.sh 
[root@localhost opt]# ./a.sh 
[root@localhost /]# gpasswd -M lizhang,zhangsan,zhangsi,zhangwu tech
[root@localhost /]# gpasswd -M lizhang,lisan,lisi,liwu counter
[root@localhost Desktop]# mkdir /share
[root@localhost Desktop]# mkdir /counter
[root@localhost Desktop]# mkdir /tech
[root@localhost opt]# chown lizhang:share /share
[root@localhost opt]# ll -d /share/
drwxr-xr-x. 2 lizhang share 6 Nov 19 01:24 /share/
[root@localhost opt]# chown lizhang:counter /counter
[root@localhost opt]# ll -d /counter/
drwxr-xr-x. 2 lizhang counter 6 Nov 19 01:25 /counter/
[root@localhost opt]# chown lizhang:tech /tech
[root@localhost opt]# ll -d /tech/
drwxr-xr-x. 2 lizhang tech 6 Nov 19 01:25 /tech/
[root@localhost opt]# chmod 550 /share
[root@localhost opt]# chmod 770 /counter
[root@localhost opt]# chmod 770 /tech

4. 修改Samba的主配置文件,配置共享的目录。

[root@localhost 桌面]# vim /etc/samba/smb.conf 
        [share]
        path = /share
        browseable = yes
        writable = no

        [counter]
        path = /counter
        browseable = no
        writable = yes
        valid users = @counter

        [tech]
        path = /tech
        browseable = no
        writable = yes
        valid users = @tech
[root@localhost opt]# systemctl start smb

5. 转化系统用户为Samba用户

[root@localhost opt]# yum install -y samba-client.x86_64 
[root@localhost opt]# smbpasswd -a lizhang
New SMB password:
Retype new SMB password:
Added user lizhang.
[root@localhost opt]# smbpasswd -a lizhang
New SMB password:
Retype new SMB password:
Added user lizhang.
[root@localhost opt]# smbpasswd -a lisan
New SMB password:
Retype new SMB password:
Added user lisan.
[root@localhost opt]# smbpasswd -a zhangsan
New SMB password:
Retype new SMB password:
Added user zhangsan.
[root@localhost opt]# smbpasswd -a lisi
New SMB password:
Retype new SMB password:
Added user lisi.
[root@localhost opt]# smbpasswd -a liwu
New SMB password:
Retype new SMB password:
Added user liwu.
[root@localhost opt]# smbpasswd -a zhangsi
New SMB password:
Retype new SMB password:
Added user zhangsi.
[root@localhost opt]# smbpasswd -a zhangwu
New SMB password:
Retype new SMB password:
Added user zhangwu.
[root@localhost opt]# pdbedit -L
lizhang:1001:
zhangsan:1005:
liwu:1004:
lisan:1002:
lisi:1003:
zhangsi:1006:
zhangwu:1007:

6.设置防火墙

在这里插入图片描述
设置SEliunx安全策略
[root@localhost /]# getsebool -a | grep samba
samba_create_home_dirs --> off
samba_domain_controller --> off
samba_enable_home_dirs --> off
samba_export_all_ro --> off
samba_export_all_rw --> off
samba_portmapper --> off
samba_run_unconfined --> off
samba_share_fusefs --> off
samba_share_nfs --> off
sanlock_use_samba --> off
use_samba_home_dirs --> off
virt_sandbox_use_samba --> off
virt_use_samba --> off
[root@localhost /]# chcon -t samba_share_t /share
[root@localhost /]# chcon -t samba_share_t /counter
[root@localhost /]# chcon -t samba_share_t /tech
[root@localhost /]# setsebool -P samba_enable_home_dirs on

7.测试

开启一台liunx客户机,设置好网络,配置yum软件源,安装好samba-client.x86_64客户端程序 。
1、/share,各部门都可以访问
[root@localhost Desktop]# smbclient //192.168.1.10/share -U lizhang
Enter lizhang’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: > exit
[root@localhost Desktop]# smbclient //192.168.1.10/share -U lisan
Enter lisan’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: > exit
[root@localhost Desktop]# smbclient //192.168.1.10/share -U zhangsan
Enter zhangsan’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: > exit
2、/counter,技术部员工不能访问
[root@localhost Desktop]# smbclient //192.168.1.10/counter -U lizhang
Enter lizhang’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: > exit
[root@localhost Desktop]# smbclient //192.168.1.10/counter -U zhangsan
Enter zhangsan’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
tree connect failed: NT_STATUS_ACCESS_DENIED
[root@localhost Desktop]# smbclient //192.168.1.10/counter -U lisan
Enter lisan’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: >
3、/tesh,结算中心员工不能访问
[root@localhost Desktop]# smbclient //192.168.1.10/tech -U lizhang
Enter lizhang’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: > exit
[root@localhost Desktop]# smbclient //192.168.1.10/tech -U lisan
Enter lisan’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
tree connect failed: NT_STATUS_ACCESS_DENIED
[root@localhost Desktop]# smbclient //192.168.1.10/tech -U zhangsan
Enter zhangsan’s password:
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
smb: > mkdir 1
smb: > mkdir 2
smb: > ls
. D 0 Sun Nov 19 02:39:40 2023
… D 0 Sun Nov 19 01:25:13 2023
1 D 0 Sun Nov 19 02:32:35 2023
2 D 0 Sun Nov 19 02:39:40 2023

8、windows挂载

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述

  • 1
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值