文件共享服务 Samba NFS

在FTP协议下使用vsftp进行文件传,也可以方便从linux传输文件到windos,但是这个毕竟是一个主要用来传输文件的工具,而不是文件共享的工具(不能直接修改文件)。下面介绍一下一个专业的用于文件分享的软件

Samba是一款用来在Windows和Linux下共享文件的一款工具,他使用TCP的139号端口

Samba服务的配置文件位于/etc/samba
他的配置文件分为两部分,全局配置参数和区域配置参数


服务建立

我在centos7基础设置安装下下发现已经默认装好了
yum -y install samba

[root@centos7 samba]# uname -a
Linux centos7 3.10.0-514.el7.x86_64 #1 SMP Tue Nov 22 16:42:41 UTC 2016 x86_64 x86_64 x86_64 GNU/Linux
[root@centos7 samba]# pwd
/etc/samba
[root@centos7 samba]# rpm -qa | grep samba
samba-libs-4.4.4-9.el7.x86_64
samba-4.4.4-9.el7.x86_64
samba-common-4.4.4-9.el7.noarch
samba-client-libs-4.4.4-9.el7.x86_64
samba-common-libs-4.4.4-9.el7.x86_64
samba-common-tools-4.4.4-9.el7.x86_64
[root@centos7 samba]# grep -Ev '^$|^[#;]' smb.conf.example > smb.conf

配置

1.配置共享资源 vi /etc/samba/smb.conf
2.创建用于访问共享资源的账户信息samba账户 pdbedit -a -u samba
3.重启动 systemctl restart smb
4.测试 ubuntu&windows10

[root@centos7 samba]# 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

[sam-data]
        comment = Do not arbitrarily modify the database file
        path = /home/samba
        public = no
        writable = yes
[root@centos7 samba]# useradd samba
[root@centos7 samba]# pdbedit -a -u samba
new password:
retype new password:
Unix username:        samba
NT username:
Account Flags:        [U          ]
User SID:             S-1-5-21-1514789427-945433464-1398532984-1000
Primary Group SID:    S-1-5-21-1514789427-945433464-1398532984-513
Full Name:
Home Directory:       \\centos7\samba
HomeDir Drive:
Logon Script:
Profile Path:         \\centos7\samba\profile
Domain:               CENTOS7
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:    Tue, 23 Jul 2019 15:05:30 CST
Password can change:  Tue, 23 Jul 2019 15:05:30 CST
Password must change: never
Last bad password   : 0
Bad password count  : 0
root@ubuntus:~# apt install cifs-utils
root@ubuntus:~# cat auth.smb
username=samba
password=1
domain=MYGROUP
root@ubuntus:~# chmod 600 auth.smb
root@ubuntus:/# cat /etc/fstab
UUID=92570294-99b9-11e9-b465-000c29aeee2d / ext4 defaults 0 0
/swap.img       none    swap    sw      0       0
//192.168.0.112/sam-data      /mnt    cifs credentials=/root/auth.smb 0       0
Win+ R
windows

相对于NFS来说,samba的配置还是用点多,只在Linux下文件共享的情况下NFS不要太方便!

NFS的建立

yum install nfs-utils

mkdir /nfsfile #nfs的共享目录
chmod -Rf 777 /nfsfile/
echo 'nfs test'> /nfsfile/nfstest

编写nfs主配置文件

[alex@centos7 ~]$ cat /etc/exports
/nfsfile        *(rw,sync,root_squash)
#共享目录的路径 允许访问的NFS客户端(共享权限参数)

用于配置 NFS 服务程序配置文件的共享参数

参数 作用
ro 只读
rw 读写
root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的匿名用户
no_root_squash 当 NFS 客户端以 root 管理员访问时,映射为 NFS 服务器的 root 管理员
all_squash 无论 NFS 客户端使用什么账户访问,均映射为 NFS 服务器的匿名用户
sync 同时将数据写入到内存与硬盘中,保证不丢失数据
async 优先将数据保存到内存,然后再写入硬盘;这样效率更高,但可能会丢失数据

启动和启用 NFS 服务程序

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

systemctl restart rpcbind
systemctl enable rpcbind
systemctl start nfs-server
systemctl enable nfs-server

测试

在客户机上首先要装有nfsyum -y install nfs-utils rpcbind
mount -t nfs 192.168.0.102:/nfsfile/ /mnt/

我们可以使用showmount查看nfs的信息

[root@centos7 /]# showmount -e 192.168.0.102
Export list for 192.168.0.102:
/nfsfile *
[root@centos7 /]# showmount -v
showmount for 1.3.0
[root@centos7 /]# mount -t nfs 192.168.0.102:/nfsfile/ /mnt/
[root@centos7 /]# ll /mnt/
total 4
-rw-r--r--. 1 nfsnobody nfsnobody 10 Jul 23 21:38 nfstest
[root@centos7 /]# cat /mnt/nfstest
nfs test
[root@centos7 /]# echo '192.168.0.102:/nfsfile /mnt nfs defaults 0 0' >> /etc/fstab

autofs自动挂载服务

这里还要介绍一下这个autofs。把这些远程挂载点写入/etc/fstab的确可行,但是如果机器上挂载点太多也会导致一定的浪费,autofs的作用就是检测到用户需要使用了才会进行挂载。autofs有著配置文件/etc/auto.master,引导副配置文件/etc/auto.misc

PS:主文件的挂载点是实际挂载点的上一级目录

yum install autofs
echo '/media /etc/auto.misc' >> /etc/auto.master
echo "iso -fstype=iso9660,ro,nosuid,nodev :/dev/cdrom" >> /etc/auto.misc
echo " nfs -type=nfs4,rw,sync 192.168.0.102:/nfsfile" >> /etc/auto.misc
systemctl start autofs
systemctl enable autofs

实际使用时会发现我们查看挂载点时没有被挂载上,但是进入挂载点时发现有文件

PS:
如何清除Windows共享登录的用户名密码
Ubuntu下的NFS共享目录以及挂载(mount)问题
使用Samba或NFS实现文件共享
shell实现开机自动挂载本地YUM仓库程序

#!/bin/bash
#自动搭建yum本地仓库
#
cdrom () {
mount /dev/cdrom /media/cdrom &> /dev/null
[ $? -eq 0 ] && echo "挂载成功"
}

[ -d /media/cdrom ] || mkdir /media/cdrom
mount | grep -q /dev/sr0
if [ $? -eq 0 ]
then
umount /dev/sr0
cdrom
else
cdrom
fi

[ -d /etc/yum.repos.d/bak ] || mkdir /etc/yum.repos.d/bak
ls -l /etc/yum.repos.d/ | grep *repo > /dev/null
if [ $? -ne 0 ]
then
echo "正在移动文件到目录下"
mv /etc/yum.repos.d/*repo bak
else
echo "文件已经移动目录!"
fi
[ -e /etc/yum.repos.d/centos-media.repo ] || echo "[media]
name=CentOS-$releasever - Media
baseurl=file:///media/cdrom/
gpgcheck=0
enabled=1" > /etc/yum.repos.d/centos-media.repo

echo "清除yum缓存"
yum clean all &> /dev/null
echo "YUM已经搭建完成"
echo -n  "共有软件包:" 
yum repolist | tail -1 | awk -F':' '{print $2}' 

cat /etc/fstab | grep /dev/sr0 &> /dev/null
if [ $? -ne 0 ]
then
echo "正在写入开机自动挂载光盘"
echo "/dev/sr0     /media/cdrom       iso9660 defaults 0 0 ">> /etc/fstab
fi

你可能感兴趣的:(文件共享服务 Samba NFS)