在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
相对于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