Linux 下的文件共享

LINUX 下有好多种共享,分享 nfs 和 samba 这二种共享方式。

SAMBA 共享

Samba 最大的功能可用于 Linux 与 Windows 系统直接的文件共享和打印共享,Samba 既可用于 Windows 与 Linux 之间的文件共享,也可用于 Linux 与 Linux 之间的资源共享,由于 NFS 的出现,因而 Samba 更多用在 Linux 与 Windows 之间的数据共享上面。
Samba 服务器可实现如下功能:

  • WINS 和 DNS 服务;
  • 网络浏览服务;
  • Linux 和 Windows 域之间的认证和授权;
  • UNICODE 字符集和域名映射;
  • 满足 CIFS 协议的 UNIX 共享等。

安装 SAMBA 服务

执行下面的安装命令:

1
2
yum install samba -y  #Cenots
apt-get install samba -y #debian

配置 SAMBA

编辑配置文件:/etc/samba/smb.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
[global]
workgroup = WORKGROUP #设置工作组
security=user #使用用户名和密码登陆。
netbios name=centos #NMB名字
printcap name =/etc/printercap #指定打印机配置文件的位置。读取printcap文件中的配置信息,监视打印机的工作情况.
[共享名]
path = /mnt/ #共享文件路径
valid users = 用户名1,用户名2 #只共享给哪个用户
write list = 用户名,用户名2 #给用户写权限
browseable = yes #是否出现在共享目录中
public = yes #是否可以公共访问
write only = yes #只读

#下面部分是配置SAMBA打印机部份,不需要可以不写。
[printers]
comment = All Printers #这部分用于配置打印机共享,所有用户都可以共享打印机。

path = /var/spool/samba #设置打印机队列的位置,用户必须自行创建该目录,存放打印的临时文件

browseable = no #不允许浏览共享打印机

# Set public = yes to allow user ’guest account’ to print

guest ok = no #必须用帐号和密码才可以访问共享打印机

writable = no #共享打印机,writable必须设置为no

printable = yes #允许用户更改打印机队列中的文件

[fredsprn]

comment = Fred’s Printer #该共享的打印机只允许fred私人使用

valid users = fred

path = /home/fred #打印机队列是fred的用户目录,要主义fred必须有权访问该目录。

printer = freds_printer #设置共享打印机的名称,此参数又可以写成“printer name=”,该参数如果放在[global]字段,所有打印服务用到的打印机名都将是一样的

public = no

writable = no

printable = yes

为 Windows 客户机准备打印驱动

为了给 Windows 客户机准备打印驱动,可以运行 cupsaddsmb 命令。执行如下的操作将打印机驱动程序放置在 /etc/samba/drivers 目录下。

创建 /etc/samba/drivers 目录

1
mkdir /etc/samba/drivers

运行 cupsaddsmb 命令,以 root 身份执行该命令,共享所有打印机

1
cupsaddsmb -a -U root

配置文件完成之后,还需要用 smbpasswd -a 用户名,来添加用户访问帐号。

启动 SAMBA

Centos7 环境下:

1
2
3
4
5
systemctl restart smb nmb	#重启samba
systemctl enable smb nmb #启用samba
systemctl status smb nmb #查看服务状态
systemctl stop smb nmb #停止samba
systemctl disable smb nmb #禁用samba

Debian 环境下:

1
2
3
4
5
/etc/init.d/samba restart   #重启samba
/etc/init.d/samba enable #重启samba
/etc/init.d/samba status #查看samba状态
/etc/init.d/samba stop #停止samba
/etc/init.d/samba desable #禁用samba

访问 SAMBA

windows 下直接在我的电脑里输入 \\IP地址或nmb名\

LINUX 下用 mount 挂载:

1
mount -t cifs //IP地址或nmb名/video /mnt/raye -o username=*** password=”***” iocharset=utf8

如果没有写入权限,可以试试下面这行。

1
mount -t cifs //IP地址或nmb名/video /mnt/raye/video -o username=***,password="***",gid=””,uid=””,rw,fmask=775,dmask=777

NFS 共享

NFS 做为 LINUX 之间共享文件用的比较多。

安装 NFS

根据 linux 系统选择安装命令

1
2
apt-get install -y nfs-common nfs-kernel-server #debian
yum install -y rpc-bind nfs-utils #centos

配置 NFS

编辑 /etc/exports 文件

1
2
3
4
/opt/test 192.168.1.0/24(rw,sync)

/opt/test1/ *(rw,sync)

配置说明:
/opt/test 为共享目录
192.168.1.0/24 可以为一个网段,一个 IP,也可以是域名,域名支持通配符 如: *.qq.com
rw:read-write,可读写;
ro:read-only,只读;
sync:文件同时写入硬盘和内存;
async:文件暂存于内存,而不是直接写入内存;
no_root_squash:NFS 客户端连接服务端时如果使用的是 root 的话,那么对服务端分享的目录来说,也拥有 root 权限。显然开启这项是不安全的。
root_squash:NFS 客户端连接服务端时如果使用的是 root 的话,那么对服务端分享的目录来说,拥有匿名用户权限,通常他将使用 nobody 或 nfsnobody 身份;
all_squash:不论 NFS 客户端连接服务端时使用什么用户,对服务端分享的目录来说都是拥有匿名用户权限;
anonuid:匿名用户的 UID 值,可以在此处自行设定。
anongid:匿名用户的 GID 值。

启动 NFS

Centos7 环境下:

1
2
3
4
5
systemctl restart nfs   #重启samba
systemctl enable nfs #启用samba
systemctl status nfs #查看服务状态
systemctl stop nfs #停止samba
systemctl disable nfs #禁用samba

Debian 环境下:

1
2
3
4
5
/etc/init.d/nfs-kernel-server restart   #重启samba
/etc/init.d/nfs-kernel-server enable #重启samba
/etc/init.d/nfs-kernel-server status #查看samba状态
/etc/init.d/nfs-kernel-server stop #停止samba
/etc/init.d/nfs-kernel-server desable #禁用samba

访问 NFS 共享

windows 环境下,需要先安装 NFS 支持。

安装完成后,按 WIN+R 键,在运行框内输入 cmd 回车。

1
2
3
4
5
showmount    #显示开始NFS服务的主机
showmount -e #显示出可以NFS挂载的目录
showmount -d #显示被挂载的共享目录
showmount -a #显示客户端信息和共享目录
mount 192.168.1.99:/srv/upload X: #挂载到windows的X盘

LINUX 环境下:

1
2
3
4
5
6
showmount    #显示开始NFS服务的主机
showmount -e #显示出可以NFS挂载的目录
showmount -d #显示被挂载的共享目录
showmount -a #显示客户端信息和共享目录
mount 192.168.1.99:/srv/upload /mnt/upload #挂载到/mnt/upload。
192.168.1.99:/srv/upload /mnt/upload nfs rsize=8192,wsize=8192,timeo=14,intr #客户端每次启动时自动挂载NFS