背景:

相较于windows、unix等OS,Linux因为其开源、安全、稳定、性能优越等优点,已越来越受到互联网的青睐。而我们在学习和使用Linux也就会考虑到Linux机器和我们日常用的windows之间的通信,文件共享等问题。

问题定位:

1、如何实现Linux OS共享文件?

  2、如何在日常使用的windows上get到Linux服务器上的文件?

  3、如何做到Linux服务器之间的文件共享?

解决办法:

常见方法:samba共享NFS共享

一、samba共享

  实现Linux的文件共享,也就是说在linux机器上共享文件,在windows机器上可以对Linux共享的文件进行下载。

实验前提:

  1、关闭防火墙:service iptables stop

  2、关闭selinux:setenforce 0  #临时有效,修改/etc/sysconfig/selinux

  3、Windows IP:172.16.12.24

  4、Linux IP:172.16.11.99

1、安装samba服务

[root@localhost ~]# rpm -qa | grep samba

[root@localhost ~]# yum install samba

2、创建smb登录用户名和密码

[root@localhost ~]# useradd smbuser  #新创建用户

[root@localhost ~]# smbpasswd -a smbuser

回车后会提示输入密码  #设置远程主机(windows)登录时需要的密码

  #删除smb用户:smbpasswd -x smbuser

3、创建共享目录

[root@localhost ~]# mkdir -m 777 /home/smbuser/share

  #共享目录可以随意设置,不过要与配置文件相匹配

  #共享的文件放于此处

  #设置权限,共享目录的权限

4、修改samba服务的配置文件/etc/samba/smb.conf

[root@localhost ~]# vim /etc/samba/smb.conf

workgroup = WORKGROUP  #windows工作组模式

#hosts allow = 172.16.12.24  #允许访问的windows的IP地址

  视情况而定是否指定访问主机,无论是有没指定,前提条件是机器彼此间互通,也就是说能够ping通。

注意:默认配置文件里,是会共享[homes],注释掉,避免重复

在文件的结尾添加:

[share]   //(共享名,就是windows访问时会显示的名称)
comment = Public Stuff  //(注释)
path = /home/smbuser/share  //(创建的共享目录的共享名)
public = yes  //(公开)
writable = yes  //(可写)
printable = no
write list = +staff

  其他的参数根据情况设置,比如会出现乱码,还要指定编码格式。

  设置权限,这很重要,读写权限:读,就只能下载;写,可上传可下载

5、重启smb服务

[root@localhost ~]# service smb restart

6、windows下连接,启动运行,输入\\172.16.11.99,输入smb帐号密码

至此,即实现了Linux共享文件……

二、NFS共享

  通过NFS来访问主机端共享文件。

  NFS(Network File System):网络文件系统。

  NFS允许一个系统在网络上与他人共享目录和文件。通过使用NFS,用户和程序可以像访问本地文件一样访问远端系统上的文件。(Linux、Unix之间的共享)

1、Server端

  1、安装nfs

  [root@server ~]# rpm -qa|grep "nfs"

  ……

  如果没有安装

  [root@server ~]# yum install nfs-utils

  安装:centos 6.x之后的系统一个命令yum install nfs-utils 全部搞定

  2、开启rpcbind服务

    (取代之前的portmap---需要单独安装的服务)

  [root@server ~]# service rpcbind status

  rpcbind (pid 1885) is running...

  3、配置NFS的配置文件etc/exports

  [root@server ~]# vim /etc/exports

  /home/share 172.16.0.0/16(rw,sync)

  解析:

    1、/home/share为共享目录(共享文件存放的目录,可以是随意的)

    2、rw:具有读写权限

    3、sync:文件同步写入到内存和硬盘

  [root@server ~]# exportfs  #生效配置文件

  4、重启NFS服务

  [root@server ~]# service nfs restart

  [root@server ~]# service rpcbind restart

  5、查看NFS的共享状态

  [root@server home]# showmount -e

  Export list for server.chinaitsoft.com:

  /home/share 172.16.0.0/16

2、Client端

  在nfs客户端需要安装nfs-utils软件包:yum install nfs-utils

  1、查看可得到的NFS共享状态

    #showmount -e NFS服务器IP

  [root@client ~]# showmount -e 172.16.11.99

  Export list for 172.16.11.99:

  /home/share 172.16.0.0/16

  2、挂载NFS服务器中的共享目录

    #mount NFS服务器IP:共享目录 本地挂载点目录

  [root@client ~]# mount 172.16.11.99:/home/share /mnt

  [root@client ~]# mount | grep "nfs"

  sunrpc on /var/lib/nfs/rpc_pipefs type rpc_pipefs (rw)

  172.16.11.99:/home/share on /mnt type nfs (rw,vers=4,addr=172.16.11.99,clientaddr=172.16.3.16)

  ……挂载成功

3、如此,client和server建立文件共享机制

[root@server share]# pwd
/home/share
[root@server share]# touch file ; mkdir dir
[root@server share]# ll
total
drwxr-xr-x root root Mar : dir
-rw-r--r-- root root Mar : file
[root@client mnt]# ls
dir file
[root@client mnt]# cd dir
[root@client dir]#
[root@client mnt]# mkdir dir_client
mkdir: cannot create directory `dir_client': Permission denied  //权限不够,原因共享目录本来就没有给其他用户打开写的权限 [root@server share]# ll -d
drwxr-xr-x root root Mar : .
[root@server share]# chmod -R /home/share
[root@server share]# ll -d
drwxrwxrwx root root Mar : .

注意:

  1、虽然通过权限设置可以让普通用户访问,但是挂载的时候默认情况下只有root可以去挂载,普通用户可以执行sudo。

  2、NFS server 关机的时候一点要确保NFS服务关闭,没有客户端处于连接状态!通过showmount -a 可以查看,如果有的话用kill killall pkill 来结束(-9 强制结束)

4、相关命令

  1、exportfs:启动了NFS之后又修改了/etc/exports,可以用exportfs 命令来使改动立刻生效

  命令格式如下:

shell> exportfs [-aruv]
  -a  全部挂载或卸载 /etc/exports中的内容
  -r  重新读取/etc/exports 中的信息 ,并同步更新/etc/exports、/var/lib/nfs/xtab
  -u  卸载单一目录(和-a一起使用为卸载所有/etc/exports文件中的目录)
  -v  在export的时候,将详细的信息输出到屏幕上。 例:
  shell> exportfs -au  #卸载所有共享目录
  shell> exportfs -rv  #重新共享所有目录并输出详细信息

  2、nfsstat 查看NFS的运行状态

  3、rpcinfo 查看rpc执行信息

  4、showmount

    -a  #显示已经于客户端连接上的目录信息

    -e  IP或者hostname  #显示此IP地址分享出来的目录

  5、netstat

  Print network connections, routing tables, interface statistics, masquerade connections, and multicast memberships

  #使用netstat命令,查看出nfs服务开启的端口,其中nfs 开启的是2049,portmap 开启的是111,其余则是rpc开启的。

Linux OS共享文件的更多相关文章

  1. 基于samba实现win7与linux之间共享文件_阳仔_新浪博客

    基于samba实现win7与linux之间共享文件_阳仔_新浪博客 然后启动samba执行如下指令: /dev/init.d/smb start 至此完成全部配置.

  2. Automatic logon configuration on Linux OS

    Automatic logon configuration on Linux OS 1. Regarding to DSA: a) ssh-keygen -t dsa  b) cat ~/.ssh/i ...

  3. 使用vmtools来设置windows和linux的共享文件夹

    目的:通过vmtools来实现windows和linux的共享文件夹 步骤: 1.前提条件是vmtools已经安装 2.在windows任意磁盘新建一个共享文件夹 3.进入虚拟机->设置-> ...

  4. node js linux / OS 安装

    rm -rf 删除文件夹名字rm -rf 软连接名称 1.安装taryum install -y tar 3. 下载node https://nodejs.org/en/download/ 4. 拷贝 ...

  5. wchar_t string on Linux, OS X and Windows

    Making wchar_t work on Linux, OS X and Windows for CMarkup release 10.1 I learned a couple of humble ...

  6. LINUX OS 正常关机失败

    描述:LINUX OS运行命令shutdown now显示:Telling INIT to go to single user mode....   解决方法:运行命令exit重新登录,再运行 hal ...

  7. ViewTool Hollong BLE Sniffer Support Linux OS Introduction

    ViewTool Hollong BLE Sniffer Support Linux OS Introduction 1. Download Software:http://www.viewtool. ...

  8. linux 挂载共享文件夹

    1.背景 通常会有这样的场景,开发人员在Windows编写代码,然后放在linux环境编译,我们通过mount命令就可以实现将代码直接挂到linux环境上去,使Windows上的共享文件夹就像linu ...

  9. [Linux] - Windows与Linux网络共享文件夹挂载方法

    Windows与Linux网络SMB方式文件夹共享挂载 本示例系统: Windows 2003+ Linux-Centos/Ubuntu 本示例全为命令行操作,如何使用Windows.Linux命令行 ...

随机推荐

  1. Doctype 文档类型,标准模式,混杂模式

    HTML4.01和XHTML1.0 基于 SGML,支持DTD声明,HTML5不是,但是需要 doctype 来规范浏览器的行为. 标准模式是指,DTD声明定义了标准文档的类型后,浏览器按W3C标准解 ...

  2. file_get_contents HTTP request failed! Internal Server Error

    使用file_get_contents报错 Severity: WarningMessage: file_get_contents(http://geetest.com:8000/select?gid ...

  3. 烧录口被初始化为普通IO

    烧录口被初始化为普通IO后如果复位端没有的烧录口会导致不能识别烧录器不能下载与调试,因为程序一开始就把端口初始化了,烧录器不能识别,添加复位端口到烧录器(前提是你的烧录器有复位端). 有了复位段之后, ...

  4. 2017河工大校赛补题CGH and 赛后小结

    网页设计课上实在无聊,便开始补题,发现比赛时候僵着的东西突然相通了不少 首先,"追妹"这题,两个队友讨论半天,分好多种情况最后放弃(可是我连题目都没看啊),今天看了之后试试是不是直 ...

  5. 使用Express开发个人网站(一)

    Express,基于Node.js平台,快速.开放.极简的 web 开发框架. Node的出现,让js有了运行在服务器端的可能,基于此的Express,可以快速,简单的搭建起一个服务器与个人网站. 安 ...

  6. Azure IoT 技术研究系列5-Azure IoT Hub与Event Hub比较

    上篇博文中,我们介绍了Azure IoT Hub的使用配额和缩放级别: Azure IoT 技术研究系列4-Azure IoT Hub的配额及缩放级别 本文中,我们比较一下Azure IoT Hub和 ...

  7. Failed to read artifact descriptor for xxx:jar 的Maven项目jar包依赖配置的问题解决

    在开发的过程中,尤其是新手,我们经常遇到Maven下载依赖jar包的问题,也就是遇到“Failed to read artifact descriptor for xxx:jar”的错误. 对于这种非 ...

  8. C# Webclient 和 Httpclient如何通过iis authentication 身份验证。

    前言: 该博客产生的背景是客户那边有部署网站的方法是iis windows authentication身份验证,而系统中使用Webclient来调用别的系统的方法.在此情况下,原本可以使用的功能,都 ...

  9. 2.let 和 const

    Babel 是一个广泛使用的 ES6 转码器,可以将 ES6 代码转为 ES5 代码,从而在现有环境执行. Babel 提供一个REPL在线编译器,可以在线将 ES6 代码转为 ES5 代码.转换后的 ...

  10. 第二章 基本图像处理(Image Processing)

    主要内容: 图像的表示----介绍图像是如何表示的,以及所有基本操作的作用对象 高斯滤波-----滤波操作的原理与应用 图像金字塔-----高斯和拉普拉斯 边缘检测-----Sobel算子和Lapla ...