SAMBA文件共享服务

通过Yum软件仓库来安装Samba服务程序

[root@zhangjh ~]# yum install samba -y

Samba 配置文件注释信息较多,为了便于配置,因此先把主配置文件改个名字,然后使用cat命令读入主配置文件,再在grep命令后面添加-v参数(反向选择),分别去掉所有以井号(#)和分号(;)开头的注释信息行,

对于剩余的空白行可以使用^$参数来表示并进行反选过滤,最后把过滤后的可用参数信息通过重定向符覆盖写入到原始文件名称中。

[root@zhangjh ~]# mv /etc/samba/smb.conf /etc/samba/smb.conf.bak
[root@zhangjh ~]# cat /etc/samba/smb.conf.bak | grep -v "#" | grep -v ";" | grep -v "^$" > /etc/samba/smb.conf
[root@zhangjh ~]# cat /etc/samba/smb.conf
[global]    
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[homes]
comment = Home Directories
browseable = no
writable = yes
[printers]
comment = All Printers
path = /var/spool/samba
browseable = no
guest ok = no
writable = no
printable = yes

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服务程序的参数以及作用:

参数 作用
[database] 共享名称为database
comment = Do not arbitrarily modify the database file 警告用户不要随意修改数据库
path = /home/database 共享目录为/home/database
public = no 关闭“所有人可见”
writable = yes 允许写入操作

第1步:创建用于访问共享资源的账户信息。

  在RHEL 7系统中,Samba服务程序默认使用的是用户口令认证模式(user)。这种认证模式可以确保仅让有密码且受信任的用户访问共享资源,而且验证过程也十分简单。不过,只有建立账户信息数据库之后,才能使用用户口令认证模式。另外,Samba服务程序的数据库要求账户必须在当前系统中已经存在,否则日           后创建文件时将导致文件的权限属性混乱不堪,由此引发错误。

  pdbedit命令用于管理SMB服务程序的账户信息数据库,格式为“pdbedit [选项] 账户”。在第一次把账户信息写入到数据库时需要使用-a参数,以后在执行修改密码、删除账户等操作时就不再需要该参数了。

用于pdbedit命令的参数以及作用:

参数 作用
-a 用户名 建立Samba用户
-x 用户名 删除Samba用户
-L 列出用户列表
-Lv 列出用户详细信息的列表
[root@zhangjh ~]# pdbedit -a -u jianghua
new password:
retype new password:
Unix username: jianghua
NT username:
Account Flags: [U ]
User SID: S-1-5-21-3165414194-1039364885-2898766718-1000
Primary Group SID: S-1-5-21-3165414194-1039364885-2898766718-513
Full Name:
Home Directory: \\zhangjh\jianghua
HomeDir Drive:
Logon Script:
Profile Path: \\zhangjh\jianghua\profile
Domain: ZHANGJH
Account desc:
Workstations:
Munged dial:
Logon time: 0
Logoff time: Wed, 06 Feb 2036 23:06:39 CST
Kickoff time: Wed, 06 Feb 2036 23:06:39 CST
Password last set: Thu, 14 Jun 2018 16:58:13 CST
Password can change: Thu, 14 Jun 2018 16:58:13 CST
Password must change: never
Last bad password : 0
Bad password count : 0
Logon hours : FFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFFF

第2步:创建用于共享资源的文件目录。

   注意关闭SElinux。

[root@zhangjh ~]# mkdir /home/database
[root@zhangjh ~]# chown -Rf jianghua:jianghua /home/database/
[root@zhangjh ~]# setenforce 0

第3步:在Samba服务程序的主配置文件中,写入共享信息。在原始的配置文件中,[homes]参数为来访用户的家目录共享信息,[printers]参数为共享的打印机设备。这两项如果在今后的工作中不需要,可以手动删除。

[root@zhangjh ~]# vim /etc/samba/smb.conf
[global]
workgroup = MYGROUP
server string = Samba Server Version %v
log file = /var/log/samba/log.%m
max log size = 50
security = user
passdb backend = tdbsam
load printers = yes
cups options = raw
[database]
comment = Do not arbitrarily modify the database file
path = /home/database
public = no
writable = yes

第4步:重启Samba 并清空iptables防火墙,然后就可以检验配置效果了。

[root@zhangjh ~]# systemctl restart smb
[root@zhangjh ~]# systemctl enable smb
ln -s '/usr/lib/systemd/system/smb.service' '/etc/systemd/system/multi-user.target.wants/smb.service'
[root@zhangjh ~]# iptables -F
[root@zhangjh ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

Windows挂载共享

现在可以在共享目录创建文件以及文件夹,可以修改文件,删除文件的操作。

Linux挂载共享

linux客户端安装支持文件共享服务的软件包(cifs-utils)。

[root@zhangjh ~]# yum install cifs-utils -y

在Linux客户端,按照Samba服务的用户名、密码、共享域的顺序将相关信息写入到一个认证文件中。

为了保证不被其他人随意看到,最后把这个认证文件的权限修改为仅root管理员才能够读写:

[root@zhangjh ~]# vim auth.smb
username=jianghua
password=password
domain=MYGROUP
[root@zhangjh ~]# chmod -Rf 600 auth.smb

在Linux客户端上创建一个用于挂载Samba服务共享资源的目录,并把挂载信息写入到/etc/fstab文件中,以确保共享挂载信息在服务器重启后依然生效:

[root@zhangjh ~]# mkdir /database
[root@zhangjh ~]# vim /etc/fstab
#
# /etc/fstab
# Created by anaconda on Sun May 6 05:50:56 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=d33701cc-d80c-40b5-aa87-c07011414e1d /boot xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
#/dev/md0 /raid_mount ext4 defaults 0 0
#/dev/storage/zjh_dir /root/linshiceshi ext4 defaults 0 0
/dev/cdrom /media/cdrom iso9660 defaults 0 0
//192.168.38.251/database /database cifs credentials=/root/auth.smb 0 0
[root@zhangjh ~]# mount -a

Linux客户端成功地挂载了Samba服务的共享资源。

进入到挂载目录/database后就可以看到Windows系统访问Samba服务程序时留下来的文件了(即文件1111.txt)。也可以对文件进行编辑,删除操作。

[root@zhangjh ~]# df -h
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.1G 15G 18% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 918M 80K 918M 1% /dev/shm
tmpfs 918M 8.9M 909M 1% /run
tmpfs 918M 0 918M 0% /sys/fs/cgroup
/dev/sr0 3.5G 3.5G 0 100% /media/cdrom
/dev/sda1 497M 119M 379M 24% /boot
//192.168.38.251/database 18G 3.1G 15G 18% /database
[root@zhangjh ~]# cd /database/
[root@zhangjh database]# ls
新建文件夹
[root@zhangjh database]# cd 新建文件夹/
[root@zhangjh 新建文件夹]# ls
1111.txt
[root@zhangjh 新建文件夹]# cat 1111.txt
111111
[root@zhangjh 新建文件夹]#

NFS网络文件系统

NFS(网络文件系统)服务可以将远程Linux系统上的文件共享资源挂载到本地主机的目录上,从而使得本地主机(Linux客户端)基于TCP/IP协议,像使用本地主机上的资源那样读写远程Linux系统上的共享文件。

安装NFS软件包:

[root@zhangjh ~]# yum install nfs-utils -y

第1步:清空NFS服务器上面iptables防火墙的默认策略,以免默认的防火墙策略禁止正常的NFS共享服务。

[root@zhangjh ~]# iptables -F
[root@zhangjh ~]# service iptables save
iptables: Saving firewall rules to /etc/sysconfig/iptables:[ OK ]

第2步:在NFS服务器上建立用于NFS文件共享的目录,并设置足够的权限确保其他人也有写入权限。

[root@zhangjh ~]# mkdir /nfsfile
[root@zhangjh ~]# chmod -Rf 777 /nfsfile/
[root@zhangjh ~]# echo "welcome to nfspublic files" > /nfsfile/readme

第3步: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 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据
[root@zhangjh ~]# vim /etc/exports
/nfsfile 192.168.38.*(rw,sync,root_squash)

第4步:启动和启用NFS服务程序。

   由于在使用NFS服务进行文件共享之前,需要使用RPC(Remote Procedure Call,远程过程调用)服务将NFS服务器的IP地址和端口号等信息发送给客户端。因此,在启动NFS服务之前,还需要顺带重启并启用rpcbind服务程序,并将这两个服务一并加入开机启动项中。

[root@zhangjh ~]# systemctl restart rpcbind.service
[root@zhangjh ~]# systemctl enable rpcbind.service
[root@zhangjh ~]# systemctl start nfs-server
[root@zhangjh ~]# systemctl enable nfs-server
ln -s '/usr/lib/systemd/system/nfs-server.service' '/etc/systemd/system/nfs.target.wants/nfs-server.service'

第5步:linux客户端配置

使用showmount命令(以及必要的参数)查询NFS服务器的远程共享信息,其输出格式为“共享的目录名称 允许使用客户端地址”。

showmount命令中可用的参数以及作用:

参数 作用
-e 显示NFS服务器的共享列表
-a 显示本机挂载的文件资源的情况NFS资源的情况
-v 显示版本号
[root@zhangjh ~]# showmount -e 192.168.38.251
Export list for 192.168.38.251:
/nfsfile 192.168.38.*

然后在NFS客户端创建一个挂载目录。使用mount命令并结合-t参数,指定要挂载的文件系统的类型,并在命令后面写上服务器的IP地址、服务器上的共享目录以及要挂载到本地系统(即客户端)的目录。

[root@zhangjh ~]# mkdir /nfsfile
[root@zhangjh ~]# mount -t nfs 192.168.38.251:/nfsfile/ /nfsfile/

可以访问服务端的共享文件了

[root@zhangjh ~]# cd /nfsfile/
[root@zhangjh nfsfile]# ls
readme
[root@zhangjh nfsfile]# cat readme
welcome to nfspublic files

如果希望NFS文件共享服务能一直有效,则需要将其写入到fstab文件中:

[root@zhangjh ~]# vim /etc/fstab
# /etc/fstab
# Created by anaconda on Sun May 6 05:50:56 2018
#
# Accessible filesystems, by reference, are maintained under '/dev/disk'
# See man pages fstab(5), findfs(8), mount(8) and/or blkid(8) for more info
#
/dev/mapper/rhel-root / xfs defaults 1 1
UUID=d33701cc-d80c-40b5-aa87-c07011414e1d /boot xfs defaults 1 2
/dev/mapper/rhel-swap swap swap defaults 0 0
#/dev/md0 /raid_mount ext4 defaults 0 0
#/dev/storage/zjh_dir /root/linshiceshi ext4 defaults 0 0
/dev/cdrom /media/cdrom iso9660 defaults 0 0
192.168.38.251:/nfsfile /nfsfile nfs defaults 0 0

  

AutoFs自动挂载服务

autofs服务程序是一种Linux系统守护进程,当检测到用户试图访问一个尚未挂载的文件系统时,将自动挂载该文件系统。

安装autofs:

[root@zhangjh ~]# yum install autofs -y

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

[root@zhangjh ~]# vim /etc/auto.master
#
# Sample auto.master file
# This is an automounter map and it has the following format
# key [ -mount-options-separated-by-comma ] location
# For details of the format look at autofs(5).
#
/media /etc/iso.misc   #增加一行
/misc /etc/auto.misc
#
# NOTE: mounts done from a hosts map will be mounted with the
# "nosuid" and "nodev" options unless the "suid" and "dev"
# options are explicitly given.
#
/net -hosts
#
# Include /etc/auto.master.d/*.autofs
#
+dir:/etc/auto.master.d
#
# Include central master map if it can be found using
# nsswitch sources.
#
# Note that if there are entries for /net or /misc (as
# above) in the included master map any keys that are the
# same will not be seen as the first read key seen takes
# precedence.
#
+auto.master

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

例如,要把光盘设备挂载到/media/iso目录中,可将挂载目录写为iso,而-fstype为文件系统格式参数,iso9660为光盘设备格式,ro、nosuid及nodev为光盘设备具体的权限参数,/dev/cdrom则是定义要挂载的设备名称。配置完成后再顺手将autofs服务程序启动并加入到系统启动项中:

[root@zhangjh ~]# vim /etc/iso.misc
iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom
[root@zhangjh ~]# systemctl start autofs
[root@zhangjh ~]# systemctl enable autofs
ln -s '/usr/lib/systemd/system/autofs.service' '/etc/systemd/system/multi-user.target.wants/autofs.service'

接下来将发生一件非常有趣的事情。我们先查看当前的光盘设备挂载情况,确认光盘设备没有被挂载上,而且/media目录中根本就没有iso子目录。

但是,我们却可以使用cd命令切换到这个iso子目录中,而且光盘设备会被立即自动挂载上。我们也就能顺利查看光盘内的内容了。

[root@zhangjh ~]# df -h
df: ‘/media/cdrom’: No such file or directory
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.1G 15G 18% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 918M 80K 918M 1% /dev/shm
tmpfs 918M 8.9M 909M 1% /run
tmpfs 918M 0 918M 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
//192.168.38.251/database 18G 3.1G 15G 18% /database
[root@zhangjh ~]# cd /media/
[root@zhangjh media]# ls
[root@zhangjh media]# cd iso
[root@zhangjh iso]# ls -l
total 812
dr-xr-xr-x. 4 root root 2048 May 7 2014 addons
dr-xr-xr-x. 3 root root 2048 May 7 2014 EFI
-r--r--r--. 1 root root 8266 Apr 4 2014 EULA
-r--r--r--. 1 root root 18092 Mar 6 2012 GPL
dr-xr-xr-x. 3 root root 2048 May 7 2014 images
dr-xr-xr-x. 2 root root 2048 May 7 2014 isolinux
dr-xr-xr-x. 2 root root 2048 May 7 2014 LiveOS
-r--r--r--. 1 root root 108 May 7 2014 media.repo
dr-xr-xr-x. 2 root root 774144 May 7 2014 Packages
dr-xr-xr-x. 24 root root 6144 May 7 2014 release-notes
dr-xr-xr-x. 2 root root 4096 May 7 2014 repodata
-r--r--r--. 1 root root 3375 Apr 1 2014 RPM-GPG-KEY-redhat-beta
-r--r--r--. 1 root root 3211 Apr 1 2014 RPM-GPG-KEY-redhat-release
-r--r--r--. 1 root root 1568 May 7 2014 TRANS.TBL
[root@zhangjh iso]# df -h
df: ‘/media/cdrom’: No such file or directory
Filesystem Size Used Avail Use% Mounted on
/dev/mapper/rhel-root 18G 3.1G 15G 18% /
devtmpfs 909M 0 909M 0% /dev
tmpfs 918M 80K 918M 1% /dev/shm
tmpfs 918M 8.9M 909M 1% /run
tmpfs 918M 0 918M 0% /sys/fs/cgroup
/dev/sda1 497M 119M 379M 24% /boot
//192.168.38.251/database 18G 3.1G 15G 18% /database
/dev/sr0 3.5G 3.5G 0 100% /media/iso

  

Samba和NFS文件共享的更多相关文章

  1. 第12章 使用Samba或NFS实现文件共享

    章节简述: 本章节为读者讲述文件共享系统的作用,了解Samba与NFS服务程序的开发背景以及用法. 详细逐条讲解Samba服务配置参数,演示安全共享文件的配置策方法,并使用autofs服务程序自动挂载 ...

  2. 《Linux就该这么学》培训笔记_ch12_使用Samba或NFS实现文件共享

    <Linux就该这么学>培训笔记_ch12_使用Samba或NFS实现文件共享 文章最后会post上书本的笔记照片. 文章主要内容: SAMBA文件共享服务 配置共享资源 Windows挂 ...

  3. 《linux就该这么学》第十三节课:第11章和第12章,vsftpd服务与samba和nfs服务

    第十一章 (借鉴请改动) 11.1.文件传输协议 FTP文件穿数协议,端口20用于数据传输,21端口用于传输相关FTP命令 ftp协议的两种工作模式: 主动模式:ftp向客户端发起 被动模式(默认): ...

  4. 2-5-NFS服务器配置和autofs自动挂载-配置Samba服务器配置现实文件共享

    大纲: NFS服务器运行原理 实战配置NFS服务器 配置Samba服务器配置现实文件共享 ----------------------------------------------- 问题: # 怎 ...

  5. [转帖]使用Gnome文件管理器连接到服务器:FTP/SFTP、Samba、NFS的方法

    使用Gnome文件管理器连接到服务器:FTP/SFTP.Samba.NFS的方法 2019-05-09 16:28:44作者:雷增线稿源:云网牛站 https://ywnz.com/linuxyffq ...

  6. linux入门系列16--文件共享之Samba和NFS

    前一篇文章"linux入门系列15--文件传输之vsftp服务"讲解了文件传输,本篇继续讲解文件共享相关知识. 文件共享在生活和工作中非常常见,比如同一团队中不同成员需要共同维护同 ...

  7. RHEL6.4 NFS文件共享服务搭建

    NFS文件共享服务 1 实验方案 使用2台RHEL6.4虚拟机,其中一台作为NFS共享服务器(192.168.100.1).另外一台作为测试用的NFS客户机(192.168.100.2) 2.实现 2 ...

  8. NFS文件共享

    NFS文件共享 简介 NFS即网络文件系统(network file system),监听在TCP 2049端口. 服务器需要记住客户端的ip地址以及相应的端口信息,这些信息可以委托给RPC(remo ...

  9. Linux 环境部署记录(二) - NFS文件共享

    NFS文件共享服务 假设现有两台服务器IP地址分别为 192.168.0.2 和 192.168.0.3,192.168.0.2作为Server,192.168.0.3为Client,则: 两台机器都 ...

随机推荐

  1. html5 chrome 摄像头 &&bootstrap

    <!DOCTYPE html> <html> <head> <meta http-equiv="Content-Type" content ...

  2. 百度开源项目插件 - Echarts 图表

    <!DOCTYPE html> <html xmlns="http://www.w3.org/1999/xhtml"> <head> <m ...

  3. Python基础学习之字符串(2)

    字符串常用方法 1.s.capitalize() 描述:返回字符串s的副本,并将首字符变为大写. 示例: >>> s='yesterday when I was Young!' &g ...

  4. Python基础学习之序列(2)

    通用序列操作 所有序列类型都可以进行某些特定的操作.这些操作包括:索引(indexing).分片(sliceing).加(adding).乖(multiplying)以及检查某个元素是否属于序列的成员 ...

  5. C#WinFrom写的拼图游戏

    1.窗口载入时自动生成拼图按钮 ;//按钮的行.列数 Button[,] buttons = new Button[N, N];//按钮的数组 ;//记录步数 private void Form3_L ...

  6. Seafile开源私有云自定义首页Logo图片

    Seafile是一个开源.专业.可靠的云存储平台:解决文件集中存储.共享和跨平台访问等问题,由北京海文互知网络有限公司开发,发布于2012年10月:除了一般网盘所提供的云存储以及共享功能外,Seafi ...

  7. Altium_Designer-如何放置总线

    在绘制原理图时我们避免不了要用到总线,但是在我们使用Altium Designer绘制总线时总是出现一些问题,导致总线无法使用.下面我就来帮助大家绘制出一条的总线,希望能够帮助在这方面摸索的人们. 第 ...

  8. 如何创建一个新浪微博应用以及获得Access token

    前提条件是您得先有一个新浪微博帐号. 打开网页http://open.weibo.com/wiki/%E9%A6%96%E9%A1%B5 点击新手引导->开发者页面: 会自动跳转到页面:http ...

  9. Oracle数据库几种启动方式及查询当前状态

    Oracle数据库几种启动方式 1.startup nomount: 非安装启动,这种方式下启动可执行:重建控制文件.重建数据库,读取init.ora文件,启动instance,即启动SGA和后台进程 ...

  10. RHEL/CentOS 6.x使用EPEL6与remi的yum源安装MySQL 5.5.x

    PS:如果既想获得 RHEL 的高质量.高性能.高可靠性,又需要方便易用(关键是免费)的软件包更新功能,那么 FedoraProject 推出的 EPEL(Extra Packages for Ent ...