实验环境:
修改两台虚拟机防火墙默认区域为trusted:
[root@server0 ~]# firewall-cmd --set-default-zone=trusted
[root@desktop0 ~]# firewall-cmd --set-default-zone=trusted
1、samba
1.1简述
Samba共享服务,跨平台的共享(Windows与Linux)
– 用途:为客户机提供共享使用的文件夹
– 协议:SMB(TCP 139)、CIFS(TCP 445)
• 所需软件包:samba
• 系统服务:smb
• Samba用户 —— 专用来访问共享文件夹的用户
– 采用独立设置的密码
– 但需要提前建立同名的系统用户(可以不设密码)
• 使用 pdbedit 管理工具
– 添加用户:pdbedit -a 用户名
– 查询用户:pdbedit -L [用户名]
– 删除用户:pdbedit -x 用户名
• 配置文件路径 /etc/samba/smb.conf
[自定共享名]
path = 文件夹绝对路径
public = no|yes //默认no
browseable = yes|no //默认yes
read only = yes|no //默认yes
write list = 用户1 .. .. //默认无
valid users = 用户1 .. .. //默认任何用户
hosts allow = 客户机地址 .. ..
hosts deny = 客户机地址 .. ..
装包、配置(修改主配置文件)、起服务
1.2具体操作
实验1:通过samba发布共享目录,并满足以下条件
共享名称和共享目录为/common;工作组为STAFF;
允许172.25.0.0网段访问;用户harry能够读取共享中的内容
在服务端Server0上的操作:
1.安装samba软件,服务端软件
2.建立Samba账户
[root@server0 ~]# useradd -s /sbin/nologin harry
[root@server0 ~]# pdbedit -a harry #添加设置Samba帐号
输入密码123
[root@server0 ~]# pdbedit -L #查看所有Samba账户
3.修改 /etc/samba/smb.conf(vim命令模式,/workgroup 全文查找)
[root@server0 ~]# mkdir /common #创建共享目录
[root@server0 ~]# echo 123 > /common/a.txt #创建测试文件
[root@server0 ~]# vim /etc/samba/smb.conf
.......
workgroup = STAFF #设置工作组
.......
[common] #设置共享名
path = /common #设置共享的实际路径
hosts allow = 172.25.0.0/24 #允许这个网段的访问
4.启动smb服务,设置为开机自起
[root@server0 ~]# systemctl restart smb
[root@server0 ~]# systemctl enable smb
在客户端Desktop0上的操作
1.安装软件包:samba-client
2.列出共享资源
– smbclient -L 服务器地址
[root@desktop0 ~]# smbclient -L 172.25.0.11
Enter root's password: 直接回车
可以看到服务端共享出来的文件目录
3.连接到共享文件夹
– smbclient -U 用户名 //服务器地址/共享目录名
[root@desktop0 ~]# smbclient -U harry //172.25.0.11/common
Enter harry's password: 输入密码123
Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]
smb: \>ls
NT_STATUS_ACCESS_DENIED listing \* #权限不够访问被拒
客户端访问服务端资源
1.服务端,服务的访问控制
2.服务端,防火墙
3.服务端,SELinux策略
4.服务端,本地权限
SELinux策略,布尔值(开启或关闭)
虚拟机Server0:开启SELinux功能的开关
• getsebool 查看 SELinux 开关
[root@server0 ~]# getsebool -a | grep samba
samba_export_all_ro --> off
samba_export_all_rw --> off
• setsebool 控制 SELinux 开关
– 需要加 -P 选项才能实现永久设置
[root@server0 ~]# setsebool samba_export_all_ro on #开启可读权限
[root@server0 ~]# getsebool -a | grep samba
客户端Desktop方便的访问
[root@desktop0 ~]# mkdir /mnt/nsd01
[root@desktop0 ~]# ls /mnt/nsd01
安装一个可以支持挂载Samba的软件cifs-utils
[root@desktop0 ~]# yum -y install cifs-utils
mount -o username=harry,password=123 //172.25.0.11/common /mnt/nsd01/ #手动挂载
df -h
完成开机自动挂载
_netdev:在开机启动时,先启动完网络服务,在挂载该设备
[root@desktop0 ~]# vim /etc/fstab
//172.25.0.11/common /mnt/nsd01 cifs username=harry,password=123,_netdev 0 0
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
[root@desktop0 ~]# touch /mnt/samba/d.txt
touch: 无法创建"/mnt/samba/d.txt": 权限不够
实验2:完成读写的Samba共享
服务端Server0
1.安装samba软件,服务端软件
2.建立Samba账户
[root@server0 ~]# useradd -s /sbin/nologin chihiro
[root@server0 ~]# useradd -s /sbin/nologin kenji
[root@server0 ~]# pdbedit -a chihiro
[root@server0 ~]# pdbedit -a kenji
3.修改配置文件/etc/samba/smb.conf
[root@server0 ~]# mkdir /devops
[root@server0 ~]# touch /devops/b.txt
[root@server0 ~]# vim /etc/samba/smb.conf
[devops]
path = /devops
write list = chihiro #允许chihiro可以写
4.重起smb服务
5.修改SELinux开关
[root@server0 ~]# getsebool -a | grep samba
[root@server0 ~]# setsebool samba_export_all_rw on
[root@server0 ~]# getsebool -a | grep samba
6.赋予chihiro本地权限
[root@server0 ~]# setfacl -m u:chihiro:rwx /devops/
[root@server0 ~]# getfacl /devops/
客户端Desktop完成开机自动挂载
[root@desktop0 ~]# mkdir /mnt/nsd02
[root@desktop0 ~]# vim /etc/fstab
//172.25.0.11/devops /mnt/nsd02 cifs username=chihiro,password=123,_netdev 0 0
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
[root@desktop0 ~]# touch /mnt/samba/d.txt #成功
multiuser机制(多用户的Samba挂载)
– multiuser,提供对客户端多个用户身份的区分支持
– sec=ntlmssp,提供NT局域网管理安全支持
客户端Desktop完成开机自动挂载
[root@desktop0 /]# vim /etc/fstab (man mount.cifs)
//172.25.0.11/devops /mnt/nsd02 cifs username=kenji,password=123,_netdev,multiuser,sec=ntlmssp 0 0
[root@desktop0 /]# umount /mnt/nsd02
[root@desktop0 /]# mount -a
[root@desktop0 /]# df -h
[root@desktop0 /]# su - student
[student@desktop0 ~]$ touch /mnt/nsd02/10.txt #不成功 权限不够
[student@desktop0 ~]$ cifscreds add -u chihiro 172.25.0.11 #以chihiro的身份连接
[student@desktop0 ~]$ touch /mnt/nsd02/10.txt #成功
[student@desktop0 ~]$ ls /mnt/nsd02
[student@desktop0 ~]$ exit
Sticky Bit
• 附加在其他人的 x 位上
– 其他人的权限标识会变为 t
– 适用于开放 w 权限的目录,可以阻止用户滥用 w 写入
权限(禁止操作别人的文档)
[root@server0 ~]# mkdir /public
[root@server0 ~]# chmod u=rwx,g=rwx,o=rwx /public
[root@server0 ~]# ls -ld /public
[root@server0 ~]# chmod o+t /public
[root@server0 ~]# ls -ld /public
服务端:netstat -antp | grep smb
mount error 13 :permission deny 用户名密码不一致