本次实验环境是redhat 7.0系统 1987年,微软公司和英特尔公司共同制定了SMB(server messages block,服务器消息块)协议,旨在解决局域网内的文件或打印机等资源的共享问题,这也使得在多个主机之间共享文件变得越来越简单。1991年,Tridgwell为了解决linux系统与windows系统之间的文件共享问题,基于SMB写协议开发出了SMBServer服务程序,Tridgwell想把这款软件的名字SMBServer注册成为商标,但是被商标局以SMB是没有意义的字符而被拒绝了申请,后台Tridgwell看到了一个拉丁舞蹈的名字---Samba,而且这个名字又恰好包含了“SMB”,于是Samba服务程序的名字由此诞生。
1. 服务器端
1.1 安装
[root@localhost Desktop]# yum install samba -y
1.2 创建用户
创建用户访问共享资源的账户信息,samba服务程序默认使用的是用户口令认证模式,Samba服务程序的数据库要求账户必须在房钱系统中存在,否则日后创建文件时将导致文件的权限属性混乱,引发错误。
# 创建系统用户
[root@localhost Desktop]# useradd developer
# 创建samba账户
[root@localhost Desktop]# pdbedit -a developer
new password: 【输入密码】
retype new password: 【输入密码】
Unix username: developer
NT username:
Account Flags: [U ]
User SID: S-1-5-21-1517496949-173283904-49759889-1000
Primary Group SID: S-1-5-21-1517496949-173283904-49759889-513
Full Name:
Home Directory: \\localhost\developer
HomeDir Drive:
Logon Script:
Profile Path: \\localhost\developer\profile
Domain: LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Sun, 16 Feb 2020 14:48:29 CST
Password can change: Sun, 16 Feb 2020 14:48:29 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
1.3 创建共享资源的目录
# 创建目录
[root@localhost Desktop]# mkdir /var/sambadir
# 设置共享目录的属性
[root@localhost Desktop]# chown -fR developer:developer /var/sambadir
# 设置selinux的安全上下文策略,并加载策略
[root@localhost Desktop]# semanage fcontext -a -t samba_share_t /var/sambadir
[root@localhost Desktop]# restorecon -Rv /var/sambadir
restorecon reset /var/sambadir context unconfined_u:object_r:var_t:s0->unconfined_u:object_r:samba_share_t:s0
# 查看和samba服务相关的selinux域策略
[root@localhost Desktop]# 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
# 开启samba_enable_home_dirs策略,允许samba服务访问共享目录
[root@localhost Desktop]# setsebool -P samba_enable_home_dirs=on
1.4 设置主配置文件
[root@localhost samba]# vim smb.conf
[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
[sambadir] # 共享名称
comment = do not arbitraiily modify the sambadir file # 用户连接samba服务时的提示信息
path = /var/sambadir # 共享目录的路径
public = no # 关闭“所有人可见”
writable = yes # 允许写入操作
1.5 启动
[root@localhost samba]# systemctl restart smb
[root@localhost samba]# systemctl enable smb
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
# 设置防火墙
[root@localhost samba]# firewall-cmd --permanent --add-service=samba
success
[root@localhost samba]# firewall-cmd --reload
success
服务器端配置完成
2.使用windows测试
3. 使用linux客户端测试
安装cifs-utils
yum install cifs-utils -y
将samba服务的用户名和密码写到一个文件中,挂载的时候使用,权限设置成仅root用户可以读写:
[root@localhost sambadir]# vim /root/user
username=developer
password=redhat
domain=MYGROUP
[root@localhost sambadir]# chmod 600 /root/user
将挂载共享目录写入到/etc/fstab文件中,开机自动挂载。
[root@localhost sambadir]# vim /etc/fstab
\\192.168.137.10/sambadir /sambadir cifs credentials=/root/user 0 0
[root@localhost ~]# mount -a
[root@localhost ~]# df -TH
Filesystem Type Size Used Avail Use% Mounted on
/dev/mapper/rhel-root xfs 19G 3.2G 16G 17% /
devtmpfs devtmpfs 1.1G 0 1.1G 0% /dev
tmpfs tmpfs 1.1G 181k 1.1G 1% /dev/shm
tmpfs tmpfs 1.1G 9.3M 1.1G 1% /run
tmpfs tmpfs 1.1G 0 1.1G 0% /sys/fs/cgroup
/dev/sda1 xfs 521M 118M 404M 23% /boot
/dev/sr0 iso9660 3.8G 3.8G 0 100% /media/cdrom
\\192.168.137.10/sambadir cifs 19G 3.2G 16G 17% /sambadir
挂载成功