linux-运维进阶-17 Samba服务与NFS

linux-运维进阶-17 Samba服务与NFS

概念解析

  Samba是在Linux和UNIX系统上实现SMB协议的一个免费软件,由服务器及客户端程序构成。SMB(Server Messages Block,信息服务块)是一种在局域网上共享文件和打印机的一种通信协议,它为局域网内的不同计算机之间提供文件及打印机等资源的共享服务。SMB协议是客户机/服务器型协议,客户机通过该协议可以访问服务器上的共享文件系统、打印机及其他资源。通过设置“NetBIOS over TCP/IP”使得Samba不但能与局域网络主机分享资源,还能与全世界的电脑分享资源。

  NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的文件,就像访问本地文件一样。

samba

安装samba服务

1
[root@localhost ~]# yum install samba -y
[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] #打印机共享参数

去掉配置文件中的注释

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
[root@localhost ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
[root@localhost ~]# cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
[root@localhost ~]# cat /etc/samba/smb.conf
[global]
workgroup = SAMBA
security = user
passdb backend = tdbsam
printing = cups
printcap name = cups
load printers = yes
cups options = raw
[homes]
comment = Home Directories
valid users = %S, %D%w%S
browseable = No
read only = No
inherit acls = Yes
[printers]
comment = All Printers
path = /var/tmp
printable = Yes
create mask = 0600
browseable = No
[print$]
comment = Printer Drivers
path = /var/lib/samba/drivers
write list = @printadmin root
force group = @printadmin
create mask = 0664
directory mask = 0775
[root@localhost ~]#

配置一个共享

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost ~]# vim /etc/samba/smb.conf

在文件首部插入下列代码,保存退出即可
[database]
comment = Do not arbitrarily modify the database file path = /home/database
path = /home/database
public = no
writable = yes

上述配置含义:
共享名称为database
警告用户不要随意修改数据库
共享目录为/home/database
关闭“所有人可见”
允许写入操作

1esRMQ.png

新建共享所需要的目录

1
[root@localhost ~]# mkdir /home/database

新建访问共享使用的用户(注意:此用户并非本地用户,但是本地要有一个用户与之对应)

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
新建本地用户aaa
[root@localhost ~]# useradd aaa

新建访问共享使用的用户aaa
[root@localhost ~]# pdbedit -a -u aaa
new password:
retype new password:
Unix username: aaa
NT username:
Account Flags: [U ]
User SID: S-1-5-21-2065519308-1855748627-1460656783-1000
Primary Group SID: S-1-5-21-2065519308-1855748627-1460656783-513
Full Name:
Home Directory: \\localhost\aaa
HomeDir Drive:
Logon Script:
Profile Path: \\localhost\aaa\profile
Domain: LOCALHOST
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 10:06:39 EST
Kickoff time: Wed, 06 Feb 2036 10:06:39 EST
Password last set: Wed, 30 Jan 2019 04:27:29 EST
Password can change: Wed, 30 Jan 2019 04:27:29 EST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF
[root@localhost ~]#

对共享的目录配置相应的权限

1
2
3
4
5
6
7
8
9
安装semanage管理工具
[root@localhost ~]# yum install policycoreutils-python.x86_64 -y

对共享的目录配置相应的权限
[root@localhost ~]# chown -Rf aaa:aaa /home/database/
[root@localhost ~]# semanage fcontext -a -t samba_share_t /home/database
[root@localhost ~]# restorecon -Rv /home/database/
restorecon reset /home/database context unconfined_u:object_r:home_root_t:s0->unconfined_u:object_r:samba_share_t:s0
[root@localhost ~]#

启动samba服务,配置防火墙

1
2
3
4
5
6
[root@localhost ~]# systemctl restart smb
[root@localhost ~]# firewall-cmd --add-port=445/tcp --permanent
success
[root@localhost ~]# firewall-cmd --reload
success
[root@localhost ~]#

在windows上访问samba共享,win+r 输入

1
2
3
4
\\ip

例如我的就是:
\\192.168.141.12

1esfqs.png

输入账号aaa和你刚刚设置的密码即可

1es4Zn.png

在linux客户端上访问samba共享

我们现在另外开一台虚拟机,用作客户端client,没有第二台虚拟机的可以现装一个

安装客户端需要的软件包

1
[root@localhost ~]# yum install samba-client cifs-utils -y

访问samba的共享

注意ip不要输错了,我的samba服务器ip是192.168.141.12,但是你的可不一定,用户名也是如此

1
2
3
4
5
6
7
8
9
10
[root@localhost ~]# smbclient //192.168.141.12/database -U aaa
Enter SAMBA\aaa's password:
Try "help" to get a list of possible commands.
smb: \> ls
. D 0 Wed Jan 30 17:19:02 2019
.. D 0 Wed Jan 30 17:27:16 2019

17811456 blocks of size 1024. 16474020 blocks available
smb: \> exit
[root@localhost ~]#

客户端开机自动挂载samba的共享

客户端配置:

1
2
3
4
5
[root@localhost ~]# vim auth.smb

username=aaa
password=123456
保存退出

编辑/etc/fstab文件

1
2
3
4
5
[root@localhost ~]# vim /etc/fstab

在文件最后面加入以下内容
//192.168.141.12/database /database cifs credentials=/root/auth.smb 0 0
保存退出

创建挂载文件夹/database,重载fstab测试挂载是否成功

1
2
3
4
5
[root@localhost ~]# mkdir /database
[root@localhost ~]# mount -a
[root@localhost ~]# mount | grep database
//192.168.141.12/database on /database type cifs (rw,relatime,vers=1.0,cache=strict,username=aaa,domain=,uid=0,noforceuid,gid=0,noforcegid,addr=192.168.141.12,soft,unix,posixpaths,serverino,mapposix,acl,rsize=1048576,wsize=65536,echo_interval=60,actimeo=1)
[root@localhost ~]#

看到有内容说明挂载成功

NFS

现在我们可以关掉客户端,回到samba服务器继续接下来的实验

安装nfs工具包

1
[root@localhost ~]# yum install nfs-utils.x86_64 -y

创建共享的目录,并为目录设置权限

1
2
3
4
5
[root@localhost ~]# mkdir /nfsfile
[root@localhost ~]# chmod -Rf 777 /nfsfile/
[root@localhost ~]# echo "hello nfs" /nfsfile/readme.txt
hello nfs /nfsfile/readme.txt
[root@localhost ~]#

编辑nfs共享配置文件

1
2
3
4
5
[root@localhost ~]# vim /etc/exports
[root@localhost ~]#
就写一行即可:
/nfsfile *(rw,sync,root_squash)
保存退出

启动nfs服务

1
2
3
4
5
6
[root@localhost ~]# systemctl restart rpcbind
[root@localhost ~]# systemctl enable rpcbind
[root@localhost ~]# systemctl start nfs-server.service
[root@localhost ~]# systemctl enable nfs-server.service
Created symlink from /etc/systemd/system/multi-user.target.wants/nfs-server.service to /usr/lib/systemd/system/nfs-server.service.
[root@localhost ~]#

nfs客户端配置

1
2
3
4
5
6
7
8
9
10
11
12
[root@localhost ~]# showmount -e 192.168.141.12
Export list for 192.168.141.12:
/nfsfile *
[root@localhost ~]#
[root@localhost ~]# showmount -e 192.168.141.12
Export list for 192.168.141.12:
/nfsfile *
[root@localhost ~]# mkdir /nfs
[root@localhost ~]# mount -t nfs 192.168.141.12:/nfsfile /nfs
[root@localhost ~]# cat /nfs/readme
hello nfs
[root@localhost ~]# echo "192.168.141.12:/nfsfile /nfs nfs defaults 0 0" >> /etc/fstab

autofs自动挂载服务

当检测到用户视图访问一个尚未挂载的文件系统时,autofs将自动挂载该文件系统

安装autofs

1
[root@localhost ~]# yum install autofs -y

autofs主配置文件中需要按照“挂载目录 子配置文件”的格式进行填写。

挂载目录是设备挂载位置的上一级目录。

例如,光盘设备一般挂载到/media/cdrom目录中,那么挂载目录写成/media即可。

1
2
3
4
5
[root@localhost ~]# vim /etc/auto.master
将原本的
/misc /etc/auto.misc
改为
/misc /etc/iso.misc

在子配置文件中,应按照“挂载目录 挂载文件类型及权限 :设备名称”的格式进行填写。

例如,要把光盘设备挂载到/media/iso目录中,

  • 可将挂载目录写为iso,
  • 而-fstype为文件系统格式参数,
  • iso9660为光盘设备格式,
  • ro、nosuid及nodev为光盘设备具体的权限参数,

/dev/cdrom则是定义要挂载的设备名称。配置完成后再顺手将autofs服务程序启动并加入到系统启动项中:

1
2
3
4
5
6
7
8
9
[root@localhost ~]# vi /etc/iso.misc
写入以下内容
iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
保存退出

[root@localhost ~]# systemctl restart autofs
[root@localhost ~]# systemctl enable autofs
Created symlink from /etc/systemd/system/multi-user.target.wants/autofs.service to /usr/lib/systemd/system/autofs.service.
[root@localhost ~]#

检查是否一开始没有挂载iso,但是一旦访问iso子目录,就立马被挂载上

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
[root@localhost ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/centos-root 17G 1.3G 16G 8% /
devtmpfs 476M 0 476M 0% /dev
tmpfs 488M 0 488M 0% /dev/shm
tmpfs 488M 7.7M 480M 2% /run
tmpfs 488M 0 488M 0% /sys/fs/cgroup
/dev/sda1 1014M 130M 885M 13% /boot
tmpfs 98M 0 98M 0% /run/user/0
192.168.141.12:/nfsfile 17G 1.3G 16G 8% /nfs
11. [root@localhost ~]# cd /media
12. [root@localhost media]# ls
13. [root@localhost media]# cd iso
14. [root@localhost iso]# ls
15. manifest.txt run_upgrader.sh VMwareTools-10.2.0-7259539.tar.gz vmware-tools-upgrader-32 vmware-tools-upgrader-64
欢迎打赏,谢谢
------ 本文结束------
0%