Windows 与 Linux 之间的文件夹的共享

Linux服务器成为企业部署应用的主要操作系统,但是企业办公主要的操作平台是Windows。因此,Linux与Windows之间的文件夹共享就显得尤为重要,本文在虚拟机中实现了Linux 与  Windows 之间的文件夹的共享。

以下为linux 和windows中的文件夹之间的共享问题的解决方法:

  1. 首先更新软件包库,sudo apt-get update
  2. 安装软件包,sudo apt-get install samba samba-commom
  3. 查看是否安装完成。dpkg -l samba  显示安装完成
  4. 建立共享的文件夹路径。这里建立在 /home/share 。sudo mkdir /home/share
  5. 改变新建立的文件夹的权限,改为777 权限。sudo chmod 777 /home/share
  6. 配置smb.conf 文件,这个文件为samba的配置文件。以下为这个文件中语句的作用:

包括四个设置段:

  1. [global] 设置全局环境选项
  2. [homes] 设置用户宿主目录共享
  3. [printers] 设置打印机共享
  4. [sharefiles] 设置文件共享

其中第四个段的主要作用是设置共享文件夹的各部分内容:

  • path = 可以设置要共享的目录放在哪里;
  • writeable 是否可写,这里我设置为可写;
  • browseable 是否可以浏览,可以;可以浏览意味着,我们在工作组下能看到共享文件夹。如果您不想显示出来,那就设置为browseable=no;
  • guest ok 匿名用户以guest身份是登录;

一般在配置文件的最后添加文件夹共享设置即可,成功添加后,就可以在windows中共享linux中的文件了。(注意以上的配置,是允许匿名用户进行访问linux的配置方法。)


Samba 解决了 Linux 和 Windows 之间文件共享的问题,是基于 SMB 协议开发的 SMBserver 服务程序,是一款开源的文件共享软件。

## 1. 安装

实验环境采用 Ubuntu-16.04 trustry 版本,安装指令如下:

    $ apt install -y samba

## 2. 配置

查看非注释配置文件的方法:
    
    $ grep -v "^#" /etc/samba/smb.conf  | grep -v "^$" | grep -v "^;"
    $ testparm -s /etc/samba/smb.conf  

### 2.1 创建账户信息

创建一个能够访问 Samba 服务的用户,名称为 docker(或者是已经存在的用户) ,注意第一次创建用户需要使用 -a 参数写进数据库。

    $ pdbedit -a -u docker
    
注意:这里的账户必须在系统中存在才行,若系统中不存在这个用户的话,会报如下错误:
    
    Failed to add entry for user docker.

补充指令如下(可以使用 pdbedit --help 查看):

    $ pdbedit -x docker (delete the user)
    $ pdbedit -Lv (list the detailed information of users)

### 2.2 创建共享文件夹

创建共享文件时,需要考虑的问题有:
1. 考虑读写权限的问题。
2. 考虑由于SELinux 的问题。

    $ mkdir /home/database # 创建共享文件夹
    $ chown -Rf docker:docker /home/database # 设置共享文件夹的权限

### 2.3 配置文件修改

配置文件在 /etc/samba/smb.conf 文件下,我们需要对配置文件中的一些信息进行修改,其中,[homes] 参数是配置家目录的共享信息,[prints] 是用来访问打印机的共享信息。添加共享配置信息如下:

    [share]
    comment = Share Folder require password
    browseable = yes
    path = /home/database
    create mask = 0777
    directory mask = 0777
    valid users = docker # 这里的用户设置为允许登录的用户
    public = yes
    writable = yes
    available = yes

重新启动 samba 服务。

    $ /etc/init.d/smbd restart (reload)

### 2.4 Windows 客户端进行访问

访问步骤如下:

1. 右键计算机,选择映射网络驱动器。
2. 在对话框中输入 Samba 服务器的共享目录:\\192.168.2.13\share ,文件夹是在配置文件中[share]中的内容,不是对应服务器上实际存在的目录。
3. 输入用户名及密码,访问成功。

## 3. 错误汇总

以下为在服务器配置的过程中,遇到的问题积累如下:

    drwxrwxrwx  3 docker docker 4096 4月  15 22:00 database/

权限问题,如上述代码。文件夹属主: docker 属组: docker ,且属主权限为读写执行,属组权限为读写执行,这里为了方便配置和访问设置为完全权限。

### 3.1 Windows 访问时提示: 找不到网络路径

1. 文件夹的权限问题。(多级目录时,只要修改最后一级目录的权限即可)
2. 查看访问路径的是不是共享文件夹,还是访问了虚机中实际存在的文件夹。

### 3.2 Windows 访问时提示: 拒绝访问

1. 一般为文件夹的权限问题,查看权限。

## 4. 参考资料

[1] [https://www.samba.org/](https://www.samba.org/ "Samba 官方文档")

[2] [https://www.samba.org/samba/docs/Samba24Hc13.pdf](https://www.samba.org/samba/docs/Samba24Hc13.pdf "Troubleshooting Samba 官方问题排查文档")

你可能感兴趣的:(linux运维)