工程师技术(四):配置SMB文件夹共享、多用户Samba挂载、普通NFS共享的实现、安全NFS共享的实现
一、配置SMB文件夹共享
目标:
本例要求在虚拟机 server0 上发布两个共享文件夹,具体要求如下:
1> 此服务器必须是 STAFF 工作组的一个成员
2> 发布目录 /common,共享名为 common
3> 发布目录 /devops,共享名为 devops
4> 这两个共享必须是可浏览的,只有 example.com 域内的客户端可以访问
5> 用户 harry 对共享 common 只读,密码是 migwhisk
6> 用户 kenji 对共享 devops 只读,密码是 atenorth
7> 用户 chihiro 对共享 devops 可读写,密码是atenorth
方案:
Samba的用途:为多个客户机提供共享使用的文件夹。
Samba服务端:软件包samba、系统服务smb
Samba客户端:软件包samba-client和cifs-utils、客户端工具smbclient
传输协议及端口:TCP 139、TCP 445
Samba服务端配置文件:/etc/samba/smb.conf
Samba共享账号:存在独立的账号数据文件里,必须有同名系统账号(方便给权限)
Samba账号管理工具:
- pdbedit -a 用户名
- pdbedit -L [用户名]
- pdbedit -x 用户名
测试Samba共享资源:
- smbclient -L 服务器地址 【密码为空(直接回车)】
- smbclient -U 用户名 //服务器地址/共享名 【需要密码】
步骤:
步骤一:在服务器server0发布Samba共享文件夹
1)安装软件包samba
[root@server0 ~]# yum -y install samba
.. ..
2)创建共享账号
添加共享账号harry,密码为migwhisk:
[root@server0 ~]# useradd harry
[root@server0 ~]# pdbedit -a harry //根据提示设好密码migwhisk
new password:
retype new password:
添加共享账号kenji,密码为atenorth:
[root@server0 ~]# useradd kenji
[root@server0 ~]# pdbedit -a kenji //根据提示设好密码atenorth
new password:
retype new password:
添加共享账号chihiro,密码为atenorth:
[root@server0 ~]# useradd chihiro
[root@server0 ~]# pdbedit -a chihiro //根据提示设好密码atenorth
new password:
retype new password:
确认共享账号:
[root@server0 ~]# pdbedit -L
harry:1003:
chihiro:1005:
kenji:1004:
3)准备共享文件夹
[root@server0 ~]# mkdir /common
[root@server0 ~]# mkdir /devops
[root@server0 ~]# setfacl -m u:chihiro:rwx /devops //配置写入权限
4)调整SELinux开关策略,允许发布可写的Samba共享资源
[root@server0 ~]# getsebool -a | grep ^samba_exp //默认配置
samba_export_all_ro --> off
samba_export_all_rw --> off
[root@server0 ~]# setsebool -P samba_export_all_rw=on //永久打开设置
[root@server0 ~]# getsebool -a | grep ^samba_exp //查看结果
samba_export_all_ro --> off
samba_export_all_rw --> on
5)配置共享目录
[root@server0 ~]# vim /etc/samba/smb.conf
[global]
workgroup = STAFF
.. ..
[common]
path = /common
hosts allow = 172.25.0.0/24
[devops]
path = /devops
hosts allow = 172.25.0.0/24
write list = chihiro
6)启动系统服务smb,并设置开机自启
[root@server0 ~]# systemctl restart smb
[root@server0 ~]# systemctl enable smb
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
[root@server0 ~]# netstat -antpu | grep smb
tcp 0 0 0.0.0.0:445 0.0.0.0:* LISTEN 4709/smbd
tcp 0 0 0.0.0.0:139 0.0.0.0:* LISTEN 4709/smbd
步骤二:在客户机desktop0测试Samba共享资源
1)安装软件包samba-client
[root@server0 ~]# yum -y install samba-client
.. ..
2)浏览目标主机提供了哪些共享资源
[root@desktop0 ~]# smbclient -L server0.example.com
Enter root's password: //此处无需输入密码,直接回车
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Sharename Type Comment
--------- ---- -------
common Disk
devops Disk
IPC$ IPC IPC Service (Samba Server Version 4.1.1)
Anonymous login successful
Domain=[MYGROUP] OS=[Unix] Server=[Samba 4.1.1]
Server Comment
--------- -------
Workgroup Master
--------- -------
3)连接到目标主机的共享目录
[root@desktop0 ~]# smbclient -U harry //server0.example.com/common
Enter harry's password: //输入harry的密码
Domain=[STAFF] OS=[Unix] Server=[Samba 4.1.1]
smb: \> ls //检查是否可列出目录内容
. D 0 Sun Nov 27 03:07:29 2016
.. D 0 Sun Nov 27 03:07:32 2016
40913 blocks of size 262144. 27826 blocks available
smb: \> quit //退出smb:\>交互环境
[root@desktop0 ~]#
二、多用户Samba挂载
目标:
本例要求在虚拟机 desktop0 上访问 server0 提供的共享 devops,特性如下:
1> 将此共享永久挂载在 /mnt/dev 目录
2> 挂载时以用户 kenji 作为认证
3>必要的时候,任何普通用户都可以通过用户 chihiro 来临时获取写的权限
方案:
Samba客户端的multiuser挂载:支持切换访问Samba共享的用户身份,但不需要重新挂载共享资源。挂载参数需要添加“multiuser,sec=ntlmssp”,客户机上的普通用户可以通过cifscreds命令提交新的身份凭据。
在客户端挂载Samba共享目录,需要软件包cifs-utils的支持。
为访问网络资源配置开机挂载时,注意添加参数“_netdev”,表示等客户机网络配置可用以后才挂载对应资源。
步骤:
步骤一:挂载Samba共享目录
1)创建挂载点
[root@desktop0 ~]# mkdir /mnt/dev
2)安装cifs-utils软件包
[root@desktop0 ~]# yum -y install cifs-utils
.. ..
3)配置开机挂载
[root@desktop0 ~]# vim /etc/fstab
.. ..
//server0.example.com/devops /mnt/dev cifs username=kenji,password=atenorth,_netdev 0 0
4)测试挂载配置
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -hT /mnt/dev
Filesystem Type Size Used Avail Use% Mounted on
//server0.example.com/devops cifs 10G 3.2G 6.8G 32% /mnt/dev
步骤二:启用multiuser多用户支持
1)修改挂载配置,添加多用户支持
[root@desktop0 ~]# vim /etc/fstab
.. ..
//server0.example.com/devops /mnt/dev cifs username=kenji,password=atenorth,multiuser,sec=ntlmssp,_netdev 0 0
[root@desktop0 ~]# umount /mnt/dev //卸载此共享
[root@desktop0 ~]# mount /mnt/dev //重新挂载此共享
2)验证多用户访问
切换到普通用户student验证,无权访问挂载点/mnt/dev:
[root@desktop0 ~]# su - student
Last login: Sun Nov 27 03:51:32 CST 2016 on pts/0
[student@desktop0 ~]$ ls /mnt/dev
ls: cannot access /mnt/dev: Permission denied
以共享用户chihiro身份提交新的访问凭据,再次验证,对挂载点/mnt/dev可读写:
[student@desktop0 ~]$ cifscreds -u chihiro add server0.example.com
Password: //输入共享账号chihiro的密码
[student@desktop0 ~]$ touch /mnt/dev/a.txt
[student@desktop0 ~]$ ls /mnt/dev/a.txt
/mnt/dev/a.txt
三、普通NFS共享的实现
目标:
本例要求在虚拟机 server0 上配置NFS服务,完成以下任务:
1> 只读的方式共享目录 /public,只能被 example.com 域中的系统访问
2> 可读写共享目录/protected,能被 example.com 域中的系统访问
然后在虚拟机 desktop0 上访问NFS共享目录
1> 将 server0 的 /public 挂到本地 /mnt/nfsmount
2> 这些文件系统在系统启动时自动挂载
方案:
对于普通NFS共享来说:
1> 服务端需要运行系统服务 nfs-server.service
2> 客户端不需要运行特定的系统服务
配置NFS共享目录的记录格式:
文件夹绝对路径 客户地址1(ro或rw等控制参数) 客户地址2(ro或rw等控制参数) .. ..
步骤:
步骤一:在server0上发布NFS共享目录
1)准备需要共享的文件夹
[root@server0 ~]# mkdir /public
[root@server0 ~]# mkdir /protected
2)建立NFS共享配置
[root@server0 ~]# vim /etc/exports
/public 172.25.0.0/24(ro)
/protected 172.25.0.0/24(rw)
3)启动系统服务nfs-server,并设置开机自启
[root@server0 ~]# systemctl restart nfs-server
[root@server0 ~]# systemctl enable nfs-server
ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'
步骤二:在desktop0上挂载NFS共享目录/public
1)创建挂载点
[root@desktop0 ~]# mkdir /mnt/nfsmount
2)列出server0上提供的NFS共享资源
[root@desktop0 ~]# showmount -e server0.example.com
Export list for server0.example.com:
/protected 172.25.0.0/24
/public 172.25.0.0/24
3)配置开机挂载server0的NFS共享目录/public
[root@desktop0 ~]# vim /etc/fstab
.. ..
server0.example.com:/public /mnt/nfsmount nfs _netdev 0 0
4)测试挂载配置
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -hT /mnt/nfsmount/
Filesystem Type Size Used Avail Use% Mounted on
server0.example.com:/public nfs4 10G 3.2G 6.8G 32% /mnt/nfsmount
四、安全NFS共享的实现
目标:
本例要求在虚拟机 server0 上配置安全NFS服务,完成以下任务:
1> 访问 /protected 需 kerberos 加密,密钥地址:http://classroom/pub/keytabs/server0.keytab
2> 目录 /protected 下包含名为 project 的子目录
然后在虚拟机 desktop0 上访问NFS共享目录
1> 挂载 /mnt/nfssecure 需 kerberos加密,密钥地址:http://classroom/pub/keytabs/desktop0.keytab
2> 用户 ldapuser0 能够在 /mnt/nfssecure/project 目录下创建文件,其密码为 kerberos
方案:
对于安全NFS共享来说:
- 服务端需要运行系统服务 nfs-server.service、nfs-secure-server.service
- 客户端需要运行系统服务 nfs-secure.service
kerberos认证/加密:一次认证(获取通行证),多次免密码登录。
客户机密钥部署位置:/etc/krb5.keytab 。
参与kerberos认证/加密的客户机需要加入同一个kerberos领域,在教学环境虚拟机中可通过执行lab nfskrb5 setup操作来实现。
步骤:
步骤一:将server0、desktop0加入kerberos认证领域
教学环境虚拟机按以下操作处理。
1)初始化server0
[root@server0 ~]# lab nfskrb5 setup
Installing packages ...
Updating authconfig for ldap & krb5 ...
SUCCESS
2)初始化desktop0
[root@desktop0 ~]# lab nfskrb5 setup
Installing packages ...
Updating authconfig for ldap & krb5 ...
SUCCESS
3)验证初始化结果
可以使用网络账号ldapuser0登入到server0或desktop0,其密码是kerberos:
[root@server0 ~]# ssh ldapuser0@desktop0.example.com
The authenticity of host 'desktop0.example.com (172.25.0.10)' can't be established.
ECDSA key fingerprint is eb:24:0e:07:96:26:b1:04:c2:37:0c:78:2d:bc:b0:08.
Are you sure you want to continue connecting (yes/no)? yes //接受密钥
Warning: Permanently added 'desktop0.example.com,172.25.0.10' (ECDSA) to the list of known hosts.
ldapuser0@desktop0.example.com's password: //输入密码kerberos
Creating home directory for ldapuser0.
[ldapuser0@desktop0 ~]$ //成功登入
[ldapuser0@desktop0 ~]$ exit //返回原环境
logout
Connection to desktop0.example.com closed.
[root@server0 ~]#
步骤二:为server0、desktop0部署kerberos密钥
1)为server0下载及部署密钥
[root@server0 ~]# wget http://classroom/pub/keytabs/server0.keytab -O /etc/krb5.keytab
.. ..
2016-11-27 04:26:38 (83.7 MB/s) - ‘/etc/krb5.keytab’ saved [1242/1242]
[root@server0 ~]# file /etc/krb5.keytab //检查部署结果
/etc/krb5.keytab: data
2)为desktop0下载及部署密钥
[root@desktop0 ~]# wget http://classroom/pub/keytabs/desktop0.keytab -O /etc/krb5.keytab
.. ..
2016-11-27 04:27:25 (68.4 MB/s) - ‘/etc/krb5.keytab’ saved [1242/1242]
[root@desktop0 ~]# file /etc/krb5.keytab //检查部署结果
/etc/krb5.keytab: data
步骤三:在server0上调整/protected共享配置
1)创建指定的子目录
[root@server0 ~]# mkdir /protected/project
[root@server0 ~]# chown ldapuser0 /protected/project //赋予可写权限
2)调整共享目录的安全控制类型
[root@server0 ~]# vim /etc/exports
/public 172.25.0.0/24(ro)
/protected 172.25.0.0/24(rw,sec=krb5p) //指定安全类型
3)重启系统服务nfs-server、nfs-secure-server,设置开机自启
[root@server0 ~]# systemctl restart nfs-server nfs-secure-server
[root@server0 ~]# systemctl enable nfs-server nfs-secure-server
ln -s '/usr/lib/systemd/system/nfs-secure-server.service' '/etc/systemd/system/nfs.target.wants/nfs-secure-server.service'
步骤四:在desktop0上挂载安全NFS共享/protected
1)创建挂载点
[root@desktop0 ~]# mkdir /mnt/nfssecure
2)启动系统服务nfs-secure,并配置开机自启
[root@desktop0 ~]# systemctl restart nfs-secure
[root@desktop0 ~]# systemctl enable nfs-secure
ln -s '/usr/lib/systemd/system/nfs-secure.service' '/etc/systemd/system/nfs.target.wants/nfs-secure.service'
3)配置开机挂载安全NFS共享
[root@desktop0 ~]# vim /etc/fstab
.. ..
server0.example.com:/public /mnt/nfsmount nfs _netdev 0 0
server0.example.com:/protected /mnt/nfssecure nfs sec=krb5p,_netdev 0 0
4)验证挂载配置
[root@desktop0 ~]# mount -a
[root@desktop0 ~]# df -hT /mnt/nfs*
Filesystem Type Size Used Avail Use% Mounted on
server0.example.com:/public nfs4 10G 3.3G 6.8G 33% /mnt/nfsmount
server0.example.com:/protected nfs4 10G 3.3G 6.8G 33% /mnt/nfssecure
5)测试对挂载点的写入权限
以用户ldapuser0通过SSH的方式登入desktop0,验证密码(kerberos)以获取通行证:
[root@desktop0 ~]# ssh ldapuser0@desktop0.example.com
ldapuser0@desktop0.example.com's password: //输入密码kerberos
Last login: Sun Nov 27 04:39:52 2016 from desktop0.example.com
[ldapuser0@desktop0 ~]$ //成功登入
访问desktop0的挂载点/mnt/nfssecure/的子目录project,测试可写入:
[ldapuser0@desktop0 ~]$ touch /mnt/nfssecure/project/a.txt
[ldapuser0@desktop0 ~]$ ls -lh /mnt/nfssecure/project/a.txt
-rw-rw-r--. 1 ldapuser0 ldapuser0 0 Nov 27 04:43 /mnt/nfssecure/project/a.txt
工程师技术(四):配置SMB文件夹共享、多用户Samba挂载、普通NFS共享的实现、安全NFS共享的实现的更多相关文章
- Thinkphp5笔记五:配置data文件夹
如果你看项目下的各种文件,有种乱七八糟的感觉的话,你就可以进行以下配置. 配置data文件夹的,整理各种文件,让看起来舒服些. 一.设置runtime文件夹 index.php define('RUN ...
- 关于Tomcat的点点滴滴(体系架构、处理http请求的过程、安装和配置、文件夹结构、设置压缩和对中文文件名称的支持、以及Catalina这个名字的由来……等)
总结Tomcat的体系架构.处理http请求的过程.安装和配置.文件夹结构.设置压缩和对中文文件名称的支持.以及Catalina这个名字的由来--等. Tomcat和JVM: 一个Tomcat仅仅会启 ...
- maven项目自动创建src/main/resources等四个资源文件夹
如何使maven项目自动创建这四个文件夹:src/main/resources.src/main/java.src/test/java.src/test/resources 网传甚广的在Config ...
- svn Server authz 配置示例(文件夹权限配置)
[aliases] [groups] admin = jiangzhehao technology = chenlei,liulei,xunzheng,qiaomingjie sales = chen ...
- windows server 2012 FTP SMB 文件夹权限继承
被坑了..win默认的权限继承,有继承就没有smb目录继承,有smb目录继承 父级文件夹的权限就删不掉.. 换ftp轻松愉快...
- Apache配置虚拟文件夹
作为一个Android开发人员,一直以为,至少应该有一个server语言,最近慢慢学习php,当然学习Apache使用.本文介绍Win7环境下,怎样配置Apache的虚拟文件夹. 首先,找到我们Apa ...
- mongodb配置数据库文件夹,创建服务
配置步骤 1.新建data文件夹,并在data下创建db及log文件夹 2.在mongodb安装目录下新增mongod.cfg文件,配置如下 systemLog: destination: fi ...
- nginx二级域名配置到文件夹
user root; worker_processes ; events { worker_connections ; } http { include mime.types; default_typ ...
- Windows 配置网络文件夹映射
mklink /D D:\temp\pythonmxds2 \\192.168.190.186\bigdata\kaoyanmxds
随机推荐
- Python3解leetcode Binary Tree PathsAdd Digits
问题描述: Given a non-negative integer num, repeatedly add all its digits until the result has only one ...
- PHP curl_file_create函数
curl_file_create — 创建一个 CURLFile 对象. 说明 CURLFile curl_file_create ( string $filename [, string $mime ...
- JS中数据结构之链表
1.链表的基本介绍 数组不总是组织数据的最佳数据结构,在很多编程语言中,数组的长度是固定的,所以当数组已被数据填满时,再要加入新的元素就会非常困难.在数组中,添加和删除元素也很麻烦,因为需要将数组中的 ...
- <三剑客> 老三:grep命令用法
grep(global search regular expression(RE) and print out the line,全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正 ...
- python的os.path.join()
在python中,os.path.join()是用来拼接目录路径得.同类型得还有join(),os.path.spilt(),spilt()三个函数.1,os.path.join(),将join()里 ...
- js中的投掷筛子的小游戏
代码 <!DOCTYPE html><html lang="en"><head> <meta charset="UTF-8&qu ...
- Unity Shader之模板测试
Unity Shader之模板测试 一沙一世界,一花一天堂 一.Stencil testing 渲染管线 当片段着色器处理完一个片段之后,模板测试(Stencil Test)会开始执行,和深度 ...
- 用Python实现一个大数据搜索引擎
用Python实现一个大数据搜索引擎 搜索是大数据领域里常见的需求.Splunk和ELK分别是该领域在非开源和开源领域里的领导者.本文利用很少的Python代码实现了一个基本的数据搜索功能,试图让大家 ...
- js判断客户端是pc还是移动端
navigator.userAgentNavigator 对象包含有关浏览器的信息.没有应用于 navigator 对象的公开标准,不过所有浏览器都支持该对象.userAgent 属性是一个只读的字符 ...
- 如何在列表,字典,集合中,根据条件筛选数据 -- Python数据结构与算法相关问题与解决技巧
实际案例: 1.过滤掉列表 [3,9,-1,10,20,-2..]的负数 2.筛出字典{'LiLei':79,'Jim':88,'Lucy':92...}中值高于90的项 3.筛出集合 {77,89, ...