《Linux就该这么学》培训笔记_ch12_使用Samba或NFS实现文件共享
《Linux就该这么学》培训笔记_ch12_使用Samba或NFS实现文件共享
文章最后会post上书本的笔记照片。
文章主要内容:
SAMBA文件共享服务
FTP协议的本质是传输文件,而非共享文件。
Samba是一款开源的文件共享软件,经过简单配置就能够实现Linux系统与Windows系统之间的文件共享工作。
安装Samba服务程序:yum install -y samba。
Samba服务的主配置文件:/etc/samba/smb.conf。
实例1:配置Samba服务前,先删掉Samba服务主配置文件中的注释和空行。
通过grep命令,添加-v参数(反向选择),分别去掉所有以井号(#)和分号(;)开头的注释信息行,对于剩余的空白行可以使用^$参数来表示并进行反选过滤,最后把过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中。
cd /etc/samba
cat smb.conf #过滤注释行和空行前,查看samba主配置文件,有300多行
mv smb.conf smb.conf_bak #将samba主配置文件smb.conf重命名为smb.conf_bak
grep -v "#" smb.conf_bak | grep -v ";" | grep -v "^$" > smb.conf #过滤掉smb.conf_bak文件的注释行和空行,再把剩余的信息重定向到smb.conf
cat smb.conf #查看过滤注释行和空行后的smb.conf文件,只有20行。
Samba服务程序中的参数以及作用:
[global] | #全局参数。 | |
workgroup = MYGROUP | #工作组名称 | |
server string = Samba Server Version %v | #服务器介绍信息,参数%v为显示SMB版本号 | |
log file = /var/log/samba/log.%m | #定义日志文件的存放位置与名称,参数%m为来访的主机名 | |
max log size = 50 | #定义日志文件的最大容量为50KB | |
security = user | #安全验证的方式,总共有4种 | |
#share:来访主机无需验证口令;比较方便,但安全性很差 | ||
#user:需验证来访主机提供的口令后才可以访问;提升了安全性 | ||
#server:使用独立的远程主机验证来访主机提供的口令(集中管理账户) | ||
#domain:使用域控制器进行身份验证 | ||
passdb backend = tdbsam | #定义用户后台的类型,共有3种 | |
#smbpasswd:使用smbpasswd命令为系统用户设置Samba服务程序的密码 | ||
#tdbsam:创建数据库文件并使用pdbedit命令建立Samba服务程序的用户 | ||
#ldapsam:基于LDAP服务进行账户验证 | ||
load printers = yes | #设置在Samba服务启动时是否共享打印机设备 | |
cups options = raw | #打印机的选项 | |
[homes] | #共享参数 | |
comment = Home Directories | #描述信息 | |
browseable = no | #指定共享信息是否在“网上邻居”中可见 | |
writable = yes | #定义是否可以执行写入操作,与“read only”相反 | |
[printers] | #打印机共享参数 | |
comment = All Printers | ||
path = /var/spool/samba | #共享文件的实际路径(重要)。 | |
browseable = no | ||
guest ok = no | #是否所有人可见,等同于"public"参数。 | |
writable = no | ||
printable = yes |
配置共享资源
Samba服务程序的主配置文件包括全局配置参数和区域配置参数。全局配置参数用于设置整体的资源共享环境,对里面的每一个独立的共享资源都有效。区域配置参数则用于设置单独的共享资源,且仅对该资源有效。
用于设置Samba服务程序的参数以及作用
参数 | 作用 |
[share_dir] | 共享文件夹的名称。share_dir |
comment = heheda | 共享文件夹的备注内容。heheda |
path = /home/niubi | 共享文件夹在Linux中的实际目录。/home/niubi |
public = no | 关闭“所有人可见” |
writable = yes | 允许写入操作 |
在RHEL 7系统中,Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。
要使用用户口令认证模式,必须建立账户信息数据库,且这些账户必须在当前系统中已经存在,不过密码不一定要与系统对应账户的密码一致(可以为空),否则日后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。
pdbedit命令:用于管理SMB服务程序的账户信息数据库,格式:pdbedit [选项] 账户。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。
pdbedit命令中使用的参数以及作用:
参数 | 作用 |
-a 用户名 | 建立Samba用户 |
-x 用户名 | 删除Samba用户 |
-L | 列出用户列表 |
-Lv | 列出用户详细信息的列表 |
实例2:在实例1基础上,配置samba服务共享文件夹。
#.创建用于访问共享资源的账户信息。账户必须在当前系统已经存在
id linuxprobe #确认用户linuxprobe是否存在
pdbedit -a -u linuxprobe #生成账户信息数据库,添加一名用户,以供samba共享文件夹的登录验证
new password:此处输入该账户在Samba服务数据库中的密码
retype new password:再次输入密码进行确认
#.创建用于共享资源的文件目录。在创建时,不仅要考虑到文件读写权限的问题,还需要考虑应用于该目录的SELinux安全上下文所带来的限制。
mkdir /home/niubi chown -Rf linuxprobe:linuxprobe /home/niubi
semanage fcontext -a -t samba_share_t /home/niubi
restorecon -Rv /home/niubi
#。设置SELinux服务与策略,使其允许通过Samba服务程序访问普通用户家目录。
getsebool -a | grep samba
setsebool -P samba_enable_home_dirs on
#.在Samba服务程序的主配置文件中,追加共享文件夹配置参数信息。
vim /etc/samba/smb.conf
...
[share_dir]
comment = heheda
path = /home/niubi
public = no
writable = yes
#.重启Samba服务并加入开机启动项。为避免防火墙妨碍,清空iptables防火墙。
systemctl restart smb
systemctl enable smb
iptables -F
service iptables save
Windows挂载共享
要在Windows系统中访问共享资源,只需在Windows的“运行”命令框中输入两个反斜杠,然后再加服务器的IP地址即可。输入上面实例用于samba验证的帐号密码,登录进去后的共享文件夹的效果:
在RHEL 7系统中,Samba服务程序使用的是独立的账户信息数据库。所以,即便Samba服务程序使用的账户名字必须是Linux系统中已存在的用户,但两者的帐号密码是独立的,要分清楚各自所对应的密码。
Linux挂载共享
Samba服务程序还可以实现Linux系统之间的文件共享。
Linux客户端需要安装支持文件共享服务的软件包:yum install -y cifs-utils
实例3:在实例2基础上,实现Linux客户端挂载Samba服务的共享文件夹。
#.按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中,降低文件权限提高安全性。
vim /root/auth.smb
username=linuxprobe #samba账户
password=redhat #samba账户密码
domain=MYGROUP #与samba主配置文件中的对应参数要一致
chmod -Rf auth.smb
#.创建一个用于挂载Samba服务共享资源的目录,并把挂载信息写入到/etc/fstab文件中以永久挂载。
mkdir /liwh
vim /etc/fstab
...
//192.168.10.10/share_dir /liwh cifs credentials=/root/auth.smb 0 0 #把服务端的共享文件夹挂载到客户端的/liwh目录里,共享文件夹格式为cifs,权限设置为以认证文件进行验证
mount -a
客户端进入到挂载目录/liwh后就可以对目录里的文件进行增删改操作了。
NFS网络文件系统
凡是Linux之间的文件共享都涉及到挂载步骤。
NFS(网络文件系统)服务专用于Linux系统主机之间的文件共享,它可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。
RHEL 7系统中默认已经安装了NFS服务,安装nfs:yum install -y nfs-utils。
NFS服务程序的配置文件为/etc/exports,默认情况下里面没有任何内容。可以按照“共享目录的路径 允许访问的NFS客户端(共享权限参数)”的格式,定义要共享的目录与相应的权限。
用于配置NFS服务程序配置文件的参数:
参数 | 作用 |
ro | 只读 |
rw | 读写 |
root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的匿名用户 |
no_root_squash | 当NFS客户端以root管理员访问时,映射为NFS服务器的root管理员 |
all_squash | 无论NFS客户端使用什么账户访问,均映射为NFS服务器的匿名用户 |
sync | 同时将数据写入到内存与硬盘中,保证不丢失数据 |
async | 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据 |
服务端192.168.10.10配置:
#.清空iptables防火墙策略,永久保存。
iptables -F
service iptables save
#.建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限。
mkdir /nfsfile
chmod -Rf /nfsfile
echo "welcome to linuxprobe.com" > /nfsfile/test.txt
#.编辑NFS服务程序的配置文件/etc/exports,把/nfsfile目录共享给192.168.10./24网段内的所有主机,让这些主机都拥有读写权限。
vim /etc/exports
/nfsfile 192.168..*(rw,sync,root_squash) #NFS客户端地址与权限之间没有空格
#.重启rpcbind和nfs服务程序,并将它们加入开机启动项。(在使用NFS服务进行文件共享之前,需要使用RPC服务将NFS服务器的IP地址和端口号等信息发送给客户端)
systemctl restart rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server
客户端192.168.10.20配置:
showmount -e 192.168.10.10 #使用showmount命令查询NFS服务器的远程共享信息,输出结果:/nfsfile 192.168.10.*
mkdir /liwh
vim /etc/fstab
...
192.168.10.10:/nfsfile /liwh nfs defaults 0 #留意共享文件夹目录的书写格式和Samba是不同的,目录格式也不同。
...
mount -a
showmount命令:用于查询NFS服务器的远程共享信息。格式:showmount [选项] [ip地址]输出格式为“共享的目录名称 允许使用客户端地址”。
showmount命令中可用的参数以及作用
参数 | 作用 |
-e | 显示NFS服务器的共享列表 |
-a | 显示本机挂载的文件资源的情况NFS资源的情况 |
-v | 显示版本号 |
AutoFs自动挂载服务
无论是Samba服务还是NFS服务,都要把挂载信息写入到/etc/fstab中,这样远程共享资源就会自动随服务器开机而进行挂载。虽然方便,但是如果挂载的远程资源太多,则会给网络带宽和服务器的硬件资源带来很大负载。如果在资源挂载后长期不使用,也会造成服务器硬件资源的浪费。
autofs自动挂载服务与mount命令不同,autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。
mount命令与autofs服务的区别:
- 将挂载信息填入/etc/fstab文件后,系统在每次开机时都自动将其挂载;
- autofs服务程序在用户需要使用该文件系统时才去动态挂载,从而节约网络资源和服务器的硬件资源。
安装autofs自动挂载服务:yum install -y autofs。
autofs服务的主配置文件:/etc/auto.master。记录要自动挂载的目录和对应的子配置文件。更加详细具体的挂载目录内的挂载设备信息则记录在用户自定义的子配置文件中。子配置文件后缀必须为.misc。
autofs服务的子配置文件应按照“挂载目录 挂载文件类型及权限 主机ip地址:设备名称”的格式进行填写。
例如:iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
把本机光盘设备挂载到/media/iso目录中,可将挂载目录写为iso(上级目录写在主配置文件中),而-fstype为文件系统格式参数,iso9660为光盘设备格式,ro、nosuid及nodev为光盘设备具体的权限参数,/dev/cdrom则是定义要挂载的设备名称。
实例4:在实例3基础上,在客户端安装autofs服务,实现对服务端的nfs共享目录的自动挂载。
#.编辑autofs主配置文件,指定设备挂载位置的上一级目录和对应的子配置文件。
vim /etc/auto.master
...
/nice /etc/test.misc
...
#.编辑自定义的autofs子配置文件test.misc。
vim /etc/test.misc
nice -fstype=nfs,rw,nosuid,nodev 192.168.10.10:/nfsfile
#.重启autofs服务并加入开机启动项
systemctl restart autofs
systemctl enable autofs
当用df -h查看设备挂载情况时,确认共享目录没有被挂载上,而且/nice目录里根本不存在test目录,但却可以使用cd命令进入test目录中,说明autofs服务配置成功。
书本笔记
《Linux就该这么学》培训笔记_ch12_使用Samba或NFS实现文件共享的更多相关文章
- Linux笔记16 使用Vsftpd服务传输文件;使用Samba或NFS实现文件共享。
FTP协议有下面两种工作模式. 1.主动模式:FTP服务器主动向客户端发起连接请求. 2.被动模式:FTP服务器等待客户端发起连接请求(FTP的默认工作模式).Vsftpd服务程序vsftpd作为更加 ...
- LInux 就该这么学 笔记分享
看了Linux就该这么学的前部分书,觉得写的还可以,就在网上找了下面这个同学写的笔记,觉得很详细,所以保存地址,供以后查阅参看.这里对作者表示感谢!!! 博客地址: https://www.cnblo ...
- Linux就该这么学笔记
https://www.linuxprobe.com/========================================================================= ...
- linux-RHEL7.0 —— 《Linux就该这么学》阅读笔记
目录 linux-RHEL7.0 安装部署 修改root密码 RPM(红帽软件包管理器) YUM(软件仓库) Systemd初始化进程 总结 linux命令 帮助命令 man 系统工作命令 echo ...
- 《Linux就该这么学》
参加了第19期课程的培训,感谢刘老师的辛苦付出,课程讲的很好,真心推荐老刘的这本书真是<Linux就该这么学>!!! 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的 ...
- 《Linux就该这么学》第二期视频
Linux就该这么学--第二期学习笔记... ------------- 你的未来取决于你现在点点滴滴的努力 需要用到的一些工具: Vm11激活码 ---------- root在Linux系统中相当 ...
- 《Linux就该这么学》day3
ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...
- 《Linux就该这么学》day1-day2
ps:原谅我的书法出自鲁迅的<野草> <Linux就该这么学>书本介绍: 本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极 ...
- 今天我给你们推荐一本书《Linux就该这么学》!!!
本书是由全国多名红帽架构师(RHCA)基于最新Linux系统共同编写的高质量Linux技术自学教程,极其适合用于Linux技术入门教程或讲课辅助教材,目前是国内最值得去读的Linux教材,也是最有价值 ...
随机推荐
- 【开发笔记】- Grails框架定义一个不是数据库字段得属性
实体类 class Book{ String name String author // myfiled 我不想他在数据库中生成book表的字段 String myfield } 添加声明 class ...
- vue pc客户端项目总结
https://blog.csdn.net/oumaharuki/article/details/78861778
- 一、VUE基础回顾1
1.v-if和v-show v-if 和v-show都可以显示和隐藏元素: 区别:(1)v-if初始值为false那么这个元素不会被渲染 ,v-show不管初始值为何值都会被渲染 (2)v-if是控制 ...
- 响应式开发 纯CSS实现隐藏菜单栏
// 将要隐藏的菜单设置 display: block; // 然后在菜单上面设置一个点击选项,如“菜单”<label for="toggle-checkbox" id=&q ...
- 达梦DCI
/************************************************************************/ /* DCI编程实例 */ /********** ...
- 源码升级SUSE openssh
1.check old opensslrpm -q opensslopenssl versionwhich opensslwhereis opensslls /etc/ssl 2.backup old ...
- ETL DAG调度策略
1.目前etl的fetch task策略是基于任务子孙任务数和任务优先级获得task list 2.然后遍历task list 查看任务是否具备执行条件 集群资源校验(yarn/hdfs)<如果 ...
- atlas笔记
目录 环境 Mysql+Atlas配置 atlas:mysql-proxy扩展,mysql中间件,可以实现分表.分库(sharding版本).读写分离.数据库连接池等功能! Atlas类似于Twemp ...
- 第一部分day03-元组、字典、字符串
-----元组-----元组查询 a = (1,2,3,4) print(a[1:2]) #(2,) 购物车练习(列表方法练习) product_list=[ ['Mac',9000], ['kind ...
- Vuex中mapState的用法
Vuex中mapState的用法 今天使用Vuex的时候遇到一个坑,也可以说是自己的无知吧,折腾了好久,终于发现自己代码的错误了.真是天雷滚滚~~~~~~ index.js import Vue ...