背景
在centos上安装了windows虚拟机,希望虚拟机可以访问centos文件内容。
前期准备
切换到root
安装、设置全程需要root权限,因此需要:
su
安装软件
如果系统没有安装,则安装samba和samba-client:
rpm -qa|grep samba
dnf install samba samba-client
将smb,nmb两项服务设定为开机自动
systemctl enable --now {smb,nmb}
TIPs:
- samba-client对于搭建samba服务器不是必须的,但是它提供的实用程序会很有用,最好装一下;
- smb是守护程序,它负责执行实际的传输和共享操作,而nmb则执行NetBIOS名称解析,从而允许资源在Windows上浏览网络时出现。
配置防火墙
方案一 保留防火墙服务
将服务添加到firewall白名单中:
firewall-cmd --permanent --add-service=samba
重新加载防火墙配置:
firewall-cmd --reload
确认配置正确:
firewall-cmd --list-services|grep samba
方案二 关闭防火墙
简单粗暴,直接关闭防火墙:
systemctl disable firewalld.service
配置匿名登陆账户
- 修改/etc/samba/smb.conf文件
vim /etc/samba/smb.conf
- 将[global]部分的workgroup修改为你的windows系统用户组名称(默认是WORKGROUP)
- 在[global]部分中添加下面一段话:
map to guest = bad user
- 在末尾添加你想要共享的目录及相关权限设置:
[share]
path = /mnt/shared
writeable = no
guest only = yes
意思是:将你的“/mnt/shared”目录在网络上共享为“share”名称的目录,该目录只能匿名访问,且只读。
- 重新启动守护程序
systemctl restart {smb,nmb}
TIPs:
最后你的smb.conf内容应该是:
[global]
workgroup = WORKGROUP
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
map to guest = bad user[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775[share]
path = /mnt/shared
writeable = no
guest only = yes
标记部分是修改过的内容。
配置现有账户以通过samba访问
- 修改/etc/samba/smb.conf文件
vim /etc/samba/smb.conf
- 新增或修改共享目录[shared]为如下:
[share]
path = /home/shared
guest ok = no
writeable = no
- 为账户rliu配置samba登陆密码:
smbpasswd -a sambauser
此密码仅在samba中有效,并不是系统登陆密码。
4. 重新启动守护程序
systemctl restart {smb,nmb}
配置samba专用账户
如果我想配置一个需要密码登陆的账户,但是我又不希望这个账户可以修改我的文件,那么可以配置一个samba专用账户。
- 建立一个访问账号sambauser
adduser -M sambauser -s /sbin/nologin
参数说明:
-M 不要自动建立用户的登入目录。
-s /sbin/nologin 指定用户登入后所使用的shell为空,即这个账户不允许登陆系统的。
2. 为该账号设置samba登陆密码:
smbpasswd -a sambauser
- 建立共享目录
[share]
path = /home/shared
writeable = no
guest ok = no
- 验证设置是否有效:
testparm
运行OK的结果如下:
[15:41 rliu@study ~]#testparm
Load smb config files from /etc/samba/smb.conf
Processing section “[printers]”
Processing section “[print$]”
Processing section “[Share]”
Loaded services file OK.
Server role: ROLE_STANDALONEPress enter to see a dump of your service definitions
5.为samba设置SELinux
5.1 方案一 关闭SELlinux(不建议)
修改SELinux配置文件
vim /etc/selinux/config
将SELINUX参数修改为permissive或disabled
如果修改成disabled则必须关机重启。
修改后的config内容如下
# This file controls the state of SELinux on the system.
# SELINUX= can take one of these three values:
# enforcing - SELinux security policy is enforced.
# permissive - SELinux prints warnings instead of enforcing.
# disabled - No SELinux policy is loaded.
SELINUX=permissive
# SELINUXTYPE= can take one of these three values:
# targeted - Targeted processes are protected,
# minimum - Modification of targeted policy. Only selected processes are protected.
# mls - Multi Level Security protection.
SELINUXTYPE=targeted
参数说明:
enforcing :强制模式,代表 SELinux 运作中;
permissive:宽容模式:代表 SELinux 运作中,不过仅会有警告讯息并不会实际限制存取。
disabled :关闭,SELinux 并没有实际运作
5.2 方案二 为samba配置SELlinux
5.2.1 将/mnt/shared文件夹添加到samba的安全上下文中:
chcon -R -t samba_share_t /mnt/shared
参数说明:
-R, --recursive:递归处理所有的文件及子目录。
-t, --type=类型:设置指定类型的目标安全环境。
5.2.2 将规则添加到默认策略中:
semanage fcontext -a -t samba_share_t "/mnt/shared(/.*)?"
参数说明:
-a 添加默认安全上下文配置。
-t 设定默认安全上下文的类型
5.2.3 查看设置是否生效:
semanage fcontext -l | grep /mnt/shared
运行结果如下:
[15:57 root@study rliu]#semanage fcontext -l | grep /mnt/shared
/mnt/shared(/.*)? all files system_u:object_r:samba_share_t:s0
5.2.4 列出与samba相关的所有布尔值
semanage boolean -l|grep samba
默认结果的输入如下:
[16:16 root@study rliu]#semanage boolean -l|grep samba
samba_create_home_dirs (关 , 关) Allow samba to create home dirs
samba_domain_controller (关 , 关) Allow samba to domain controller
samba_enable_home_dirs (关 , 关) Allow samba to enable home dirs
samba_export_all_ro (关 , 关) Allow samba to export all ro
samba_export_all_rw (关 , 关) Allow samba to export all rw
samba_load_libgfapi (关 , 关) Allow samba to load libgfapi
samba_portmapper (关 , 关) Allow samba to portmapper
samba_run_unconfined (关 , 关) Allow samba to run unconfined
samba_share_fusefs (关 , 关) Allow samba to share fusefs
samba_share_nfs (关 , 关) Allow samba to share nfs
sanlock_use_samba (关 , 关) Allow sanlock to use samba
tmpreaper_use_samba (关 , 关) Allow tmpreaper to use samba
use_samba_home_dirs (关 , 关) Allow use to samba home dirs
virt_use_samba (关 , 关) Allow virt to use samba
5.2.5 激活以启用主目录共享
setsebool samba_enable_home_dirs=1