两台虚拟机,均要检测
1. Yum是否可用
2. 防火墙默认区域修改为trusted
3. IP地址是否配置
-----------------------------------------------------------------------------------------
samba 文件共享(共享文件夹)
Samba 软件项目
– 用途:为客户机提供共享使用的文件夹
– 协议:SMB(TCP 139)、CIFS(TCP 445)
所需软件包:samba
系统服务:smb
一、搭建基本samba服务
1.安装samba软件包
2.创建samba的共享帐号。与系统相同用户名,不同密码
·samba用户:专门用来访问共享文件的用户
-采用独立设置的密码
-提前创建同名的系统用户,可以不设密码
·pdbedit管理工具
-添加用户:pdbedit -a 用户名
-查询用户:pdbedit -L 用户名
-删除用户:pdbedit -x 用户名
若密码设错了,可以先删除再添加
[root@server0 ~]# useradd -s /sbin/nologin harry
[root@server0 ~]# useradd -s /sbin/nologin kenji
[root@server0 ~]# useradd -s /sbin/nologin chihiro
#添加用户,但不能访问本地系统用户,只供访问共享服务
[root@server0 ~]# pdbedit -a harry #添加samba帐号,设置密码
[root@server0 ~]# pdbedit -a kenji #添加samba帐号,设置密码
[root@server0 ~]# pdbedit -a chihiro #添加samba帐号,设置密码
[root@server0 ~]# pdbedit -L #列出所有有效的samba帐号
harry:1001:
chihiro:1003:
kenji:1002:
3.修改服务配置文件 /etc/samba/smb.conf
补充:vim 末行模式(Esc :) set nu 显示行号
89行 workgroup = STAFF #可不做修改
末行插入:
321行 [common] #共享名
322行 path = /common #共享实际路径(绝对路径)
[root@server0 ~]# mkdir /common #创建共享目录
[root@server0 ~]# echo haha > /common/abc.txt #重定向写入共享文本
4. 重起smb服务,设置为开机自起
[root@server0 ~]# systemctl restart smb
[root@server0 ~]# systemctl enable smb
虚拟机Desktop0
所需软件包:samba-client
[root@desktop0 ~]# smbclient -L //172.25.0.11 #列出共享资源
Enter root's password: #直接回车不需密码
[root@desktop0 ~]# smbclient -U harry //172.25.0.11/common #连接到共享文件夹
Enter harry's password:
Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls #不能访问到,因为SElinux访问权限限制
NT_STATUS_ACCESS_DENIED listing \* #之前要将selinux权限设置为enforcing
思路:客户端访问服务端资源
1.防火墙是否限制
2.服务本身的访问控制
3.SELinux 是否限制
SELinux: 布尔值 (功能的开关)
getsebool 查看 SELinux 开关
[root@server0 ~]# getsebool -a | grep samba
samba_export_all_ro --> off
samba_export_all_rw --> off
setsebool 控制 SELinux 开关
– 需要加 -P 选项才能实现永久设置,教学环境中可以不用加-P,因为永久设置会占用内核资源有点卡
[root@server0 ~]# setsebool samba_export_all_ro=on
[root@server0 ~]# getsebool -a | grep samba
虚拟机Desktop0
[root@desktop0 ~]# smbclient -U harry //172.25.0.11/common
Enter harry's password:
Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls #此时能访问到共享文件
. D 0 Mon Nov 6 19:47:57 2017
.. D 0 Mon Nov 6 19:47:54 2017
abc.txt N 5 Mon Nov 6 19:47:57 2017
40913 blocks of size 262144. 28569 blocks available
--------------------------------------------------------------------------------------
使用mount挂载
所需软件包:cifs-utils
_netdev: 开启网络服务后再挂载该设备
虚拟机desktop0
1.安装软件包cifs-utils
2.修改/etc/fstab
[root@desktop0 ~]# mkdir /mnt/samba #创建挂载点目录
[root@desktop0 ~]# vim /etc/fstab #设置开机自动挂载
//172.25.0.11/common /mnt/samba cifs user=harry,pass=123,_netdev 0 0
3. mount -a 验证
df -h #查看挂载信息
-------------------------------------------------------------------------------
Samba读写的共享
虚拟机server0上
1.修改配置文件/etc/samba/smb.conf
[devops]
path = /devops
write list = chihiro #允许chihiro对共享文件/devops可写
[root@server0 /]# mkdir /devops
[root@server0 /]# echo hahaxixi > /devops/123.txt
2.重起smb服务
[root@server0 ~]# systemctl restart smb
3.客户端验证:
[root@desktop0 ~]# smbclient -L 172.25.0.11
Enter root's password:
4.客户端挂载验证
[root@desktop0 ~]# mkdir /mnt/dev #创建挂载目录
[root@desktop0 ~]# vim /etc/fstab
//172.25.0.11/devops /mnt/dev cifs user=chihiro,pass=123,_netdev 0 0
[root@desktop0 ~]# mount -a #很卡,在server0上重起smb服务
[root@desktop0 ~]# df -h
---------------------------------------------------------------------------------------
实现读写Samba共享的其他操作
思路:客户端访问服务端资源
1.防火墙是否限制
2.服务本身的访问控制
3.SELinux 是否限制
4. 服务端目录本地权限
一、修改服务端SELinux布尔值,开放读写
[root@server0 /]# getsebool -a | grep samba
[root@server0 /]# setsebool samba_export_all_rw=on
[root@server0 /]# getsebool -a | grep samba
#客户端desktop0上写不了,/mnt/dev下创建不了文档,因为服务端目录本地权限受限
二、目录本地权限
[root@server0 /]# ls -ld /devops/
[root@server0 /]# setfacl -m u:chihiro:rwx /devops/
[root@server0 /]# getfacl /devops/
三、客户端验证
[root@desktop0 ~]# touch /mnt/dev/test.txt
---------------------------------------------------------------------------------------
共享文件的方式有4种:samba,nfs,http,ftp
multiuser多用户访问(只需了解,只支持普通用户)
– multiuser,提供对客户端多个用户身份的区分支持
– sec=ntlmssp,提供NT局域网管理安全支持
客户端完成:
[root@desktop0 /]# vim /etc/fstab
//172.25.0.11/devops /mnt/dev cifs user=kenji,pass=123,_netdev,multiuser,sec=ntlmssp 0 0 #不是追加写
[root@desktop0 /]# umount /mnt/dev/
[root@desktop0 /]# mount -a
[root@desktop0 /]# df -h
[root@desktop0 /]# su - student
[student@desktop0 dev]$ cd /mnt/dev
[student@desktop0 dev]$ cifscreds add -u chihiro 172.25.0.11 #使用cifscreds提交新的用户凭据并测试
Password:
[student@desktop0 dev]$ ls
[student@desktop0 dev]$ touch abc.txt #写测试
[student@desktop0 dev]$ ls #验证结果
abc.txt
[student@desktop0 dev]$ exit
-------------------------------------------------------------------------------------------
配置NFS共享
Network File System,网络文件系统
– 用途:为客户机提供共享使用的文件夹
– 协议:NFS(TCP/UDP 2049)、RPC(TCP/UDP 111)
所需软件包: nfs-utils
系统服务: nfs-server
搭建基本的只读NFS服务
1.在虚拟机server0上,检测nfs-utils是否安装
[root@server0 /]# rpm -q nfs-utils
2.修改配置文件/etc/exports
[root@server0 /]# mkdir /public #创建共享文件夹目录
[root@server0 /]# echo hehelele > /public/nsd.txt
[root@server0 /]# vim /etc/exports
/public 172.25.0.0/24(ro) #文件夹路径 客户端地址(权限)
3.重起nfs-server服务,设置开机自起
[root@server0 /]# systemctl restart nfs-server
[root@server0 /]# systemctl enable nfs-server
4.客户端 访问nfs-server服务
[root@desktop0 /]# mkdir /mnt/nfs #创建挂载点
[root@desktop0 /]# showmount -e 172.25.0.11 #列出有哪些NFS共享资源
[root@desktop0 /]# vim /etc/fstab
172.25.0.11:/public /mnt/nfs nfs _netdev 0 0
[root@desktop0 /]# mount -a
[root@desktop0 /]# ls /mnt/nfs
----------------------------------------------------------------------------------------
读写nfs-server服务
一.客户端root用户的读写
服务端:
[root@server0 /]# mkdir /abc
[root@server0 /]# echo 123 > /abc/a.txt
[root@server0 /]# vim /etc/exports
/abc 172.25.0.0/24(rw)
[root@server0 /]# systemctl restart nfs-server
客户端:
[root@desktop0 /]# vim /etc/fstab
追加写入
172.25.0.11:/abc /mnt/nsd nfs _netdev 0 0
[root@desktop0 /]# mkdir /mnt/nsd
[root@desktop0 /]# mount -a
[root@desktop0 /]# df -h #没有显示abc的挂载点,改为df -ah
服务端:
[root@server0 /]# vim /etc/exports
/abc 172.25.0.0/24(rw,no_root_squash) #不压榨客户端root权限 (?看视频)
[root@server0 /]# systemctl restart nfs-server
客户端:
[root@desktop0 /]# systemctl restart nfs #重起客户端服务
[root@desktop0 /]# touch /mnt/nsd/5.txt #前面服务端压榨客户端root权限就不能创建
---------------------------------------------------------------------------------------
二、普通用户(必须还原环境)
客户端普通用户访问服务端nfs-server服务,
服务端会以客户端相同UID身份的本地用户进行权限判定
举例:客户端用户A的UID为1000,服务端只以本地UID为1000的用户进行权限判定!
LDAP : 网络用户,提供用户名
kerberos : 密码验证,实现“一次密码认证,多次免密登录”的通行证机制
1.两台虚拟机都运行脚本,加入LDAP与kerberos
# lab nfskrb5 setup
2.服务端修改配置文件,创建读写的共享
[root@server0 ~]# mkdir /test
[root@server0 ~]# vim /etc/exports
/test *(rw,sec=krb5p)
3.服务端部署加密的密钥
# wget http://172.25.254.254/pub/keytabs/server0.keytab -O /etc/krb5.keytab
# ls /etc/krb5.keytab
4.服务端 重起 nfs-server 与 nfs-secure-server
# systemctl restart nfs-server nfs-secure-server
5.服务端保证ldapuser0用户有写权限,设置本地权限
[root@server0 ~]# setfacl -m u:ldapuser0:rwx /test
[root@server0 ~]# getfacl /test
6.客户端访问与挂载共享
[root@desktop0 ~]# showmount -e 172.25.0.11
[root@desktop0 ~]# mkdir /mnt/nfs
[root@desktop0 ~]# vim /etc/fstab
172.25.0.11:/test /mnt/nfs nfs _netdev,sec=krb5p 0 0
7.客户端部署密钥文件,重起相关的服务
# wget http://172.25.254.254/pub/keytabs/desktop0.keytab -O /etc/krb5.keytab
# systemctl restart nfs nfs-secure
8.客户端验证挂载,写入(必须采用ssh方式,su不经过kerberos验证)
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -h
[root@desktop0 ~]# ssh [email protected]
[ldapuser0@desktop0 ~]$ cd /mnt/nfs/
[ldapuser0@desktop0 nfs]$ touch 1.txt
[ldapuser0@desktop0 nfs]$ ls
1.txt
[ldapuser0@desktop0 nfs]$ exit