文章目录
实验环境:【RHEL7】
Windows主机IP:192.168.1.109
Linux系统samba服务端主机[rhel7]IP:192.168.1.136
Linux系统samba客户端端主机[rhel7_1]IP:192.168.1.36
一、samba服务简介
- 为了方便的在windows系统和Linux之间进行文件共享,使用samba服务器。
Samba保证了Linux与windows之间方便快捷的共享文件。 - 作用:Windows系统共享文件时用到的协议smb
- SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。
二、amba的安装与启用
- 安装:yum install samba samba-common samba-client -y
- 启动:systemctl enable --now smb
- 启用:firewall-cmd --permanent --add-service=samba;firewall-cmd --reload
举例加深理解:当Linux系统为客户端时,查看Windows主机共享内容:
(1)在Windows主机上选择要共享的文件,添加所有人可以读取
(2)查看Windows主机IP,并且在搜索栏使用\\192.168.1.109查看共享文件,共享成功:
(3)在客户端Linux系统中,使用命令:smbclient -L //192.168.1.109 -U admin 列出共享文件
(4)使用命令进入共享软件:smbclient //192.168.1.109/DSP实验 -U admin
三、samba基本信息
- 服务启动脚本:smb.service
- 主配置目录:/etc/samba
- 主配置文件:/etc/samba/smb.conf
- 安全上下文:samba_share_t
- 端口:139、445
- 安装包:samba、samba-common
四、samba用户的建立
1. samba用户必须是本地存在的用户
2. 用户的建立:
(1)添加用户:smbpasswd -a student
(2)查看用户列表:pdbedit -L
(3)删除用户:pdbedit -x jia
五、samba用户访问家目录
- 使用命令查看用户家目录:smbclient -L //192.168.1.136 -U student
- 在Windows主机上访问Linux主机上的家目录:\\192.168.1.136
当遇到访问家目录失败时,查看selinux状态,selinux是开启状态,我们可以使用setenforce 0 修改状态为警告状态,就能查看家目录;
也可以不修改seLinux的开启状态使用命令开启权限:setsebool -P samba_enable_home_dirs on
修改成功后 再次访问,默认上次的用户student访问,不需要登录用户名称和密码。
- 如果在Windows中,想要切换用户登录访问,可以在搜索栏中输入cmb打开命令提示符,使用命令 【net use * /del】 删除访问记录,就可以在远程登录时,登录新的用户:
注意一点:切换登录用户的前提是Linux系统中samba用户有两个及其以上,如果只有一个samba用户,则在Windows下访问时,还是会使用唯一的登录的用户【student】访问。 - 在Linux下指定用户访问直接使用命令:smbclient //192.168.1.136/jia -U jia
六、samba服务共享目录
(1)新建共享目录:mkdir /smbdir;touch /smbdir/file{1…3}
(2)固定共享目录的安全上下文:semanage fcontext -a -t samba_share_t ‘/smbdir(/.*)?’
(3)刷新安全上下文生效:restorecon -RvvF /smbdir/
(4)编辑配置文件:vim /etc/samba/smb.conf
(5)重启服务:systemctl restart smb.service
测试:
七、samba的访问控制
编辑配置文件再重启服务:vim /etc/samba/smb.conf
(1)设定允许访问: hosts allow
(2)设定禁止访问:hosts deny
两个参数写在单独共享目录下,只对此共享目录生效;当写到【GLOBAL】时对samba整体生效。
- 设定单独目录【smbdir】只允许指定IP访问:
- 修改为全局目录只有指定IP可以访问,其他IP就所有目录都不可以访问:
八、samba的常用配置参数
writable=yes | 可写 |
---|---|
write list=jia | 指定用户可写 |
write list=+jia/@jia | 指定组可写 |
valid users=jia | 指定访问用户 |
valid users=+jia/@lee | 指定访问组 |
browseable=yes/no | 是否隐藏共享 |
map to guset=bad user | 写到全局设定中【设定匿名用户访问时】 |
guest ok=yes | 允许匿名用户访问 |
admin users=jia | 指定此共享的超级用户身份 |
- 将共享文件挂载到系统内部目录下,【samba用户身份为jia】修改文件权限和用户组用户者
此时不加任何参数到samba的配置文件中,不能执行任何操作
(1)对于写的权限:在配置文件中添加参数
(2)在配置文件中,指定student用户可写,重启服务后,samba用户jia不可以执行操作:
- 重新挂载共享文件,编辑指定student用户组可写:
- 指定用户jia可以访问:
- 隐藏共享目录:
- 匿名用户的访问,需要在全局设定添加参数:
九、samba的多用户挂载
- 为什么要使用多用户挂载:在客户端如果用普通的挂载方式,没有用过用户验证的人也可以访问samba服务。此时就会存在安全隐患。
可以通过设定多用户挂载,在客户端使用软件 【cifs-utils】 通过多用户认证
- 配置方式:在客户端
(1)编写认证文件,添加samba认证用户:vim /root/smbpass
(2)执行多用户挂载命令:mount -o credentials=/root/smbpass,sec=ntlmssp,multiuser //192.168.1.136/smbdir /mnt
(3)使用命令让客户端用户通过认证:cifscreds add -u jia 192.168.1.136
注意:此命令需要的普通用户身份中执行 - 测试:
在客户端让student用户通过认证samba用户jia就可以访问共享文件内容,依此也可以知道,对于客户端有多个普通用户来说,只需要其他用户使用命令认证samba的用户jia后就都可以访问到共享文件,提高了安全性。