所谓文件服务器,就是指在计算机上放置许多其它计算机所需要的文件,然后“共享”出去,供其它计算机访问。
nfs--network file system(网络文件系统),他是Unix/linux中特有的一种服务,仅面向unix/linux客户机提供文件共享服务。
-----------------------------------------------------------------------------------------------
此服务配置思路:
1、准备若干目录,根据实际情况合理设置权限。
2、编辑nfs的配置文件/etc/exports,实现事先预想好的功能
3、启动nfs服务
4、用一台linux/Unix计算机测试,注意不仅仅要测试通,不一定要测试权限。
-----------------------------------------------------------------------------------------------
小实验:通过nfs共享文件
1、mkdir /var/music
2、mkdir /var/movie

2、在两个目录中创建一些文件
touch /var/music/a.mp3
touch /var/music/b.mp3
touch /var/movie/x.avi
touch /var/movie/y.avi

3、设置权限,假设音乐中的目录允许上传,但已有的文件不允许修改。
            而电影的目录不允许上传 , 更不允许修改里面的文件。
chmod 777 /var/music
chmod 444 /var/music/*
chmod 555 /var/movie
chmod 444 /var/movie/*

4、编辑/etc/exports这个配置文件,加入以下两行:
/var/music *(sync,rw)  "共享music这个目录,并指定为可读写。
/var/music *(sync,ro)  "共享movie这个目录,并指定为只读不可写。
vim /etc/example 进入配置文件
注:如果要是没有配置文件或者配置文件里面没有内容,就输入“man+配置文件的名字”,查看命令手册,
直接找EXAMPLE(例子)

5、启动或者重启nfs服务
service nfs start|restart

6、在linux和Unix的客户机中通过挂载的方式进行连接。
格式:
mount服务器IP:/共享目录的路径/共享名  本地目录

mkdir /mnt/music
mkdir /mnt/movie
mount 服务器IP:/mnt/music /mnt/music
mount 服务器IP:/mnt/movie /mnt/movie
-----------------------------------------------------------------------------------------------
在windows中,共享文件使用一种称为smb(服务消息块)的协议。linux为了能够与Windows兼容,设计了一种名为smaba的服务,安装和配置了samba服务的计算机就被模拟成了一台Windows的文件服务器。
其他的Windows计算机可以通过网上邻居访问它。
其他linux计算机也可以把这台服务器就当成一台Windows服务器。由于samba功能远比nfs强大,即使是Unix和linux之间文件的共享通常也用samba取代nfs。
-----------------------------------------------------------------------------------------------
配置samba的思路:
1、准备共享的目录,设置好权限
2、配置主配置文件/etc/samba/smb.conf
3、启动或重启samba服务
4、客户机进行校验。

Windows客户机访问方式有两种:
1)开始——运行,输入“\\服务器的IP”
2)如果samba服务已经开始一段时间了,就可以通过网上邻居找到服务器。

linux客户机访问方式
1)创建挂载点
2)挂载

回答问题:
samba为什么会取代nfs成为linux世界中共享的服务呢?

samba服务主配置文件是什么?

vim /etc/samba/smb.conf
此文件是什么格式的,注释以什么开头。
-----------------------------------------------------------------------------------------------
samba的主配置文件: /etc/samba/smb.conf
格式:布尔值格式
注释:以#开头,如果是配置项暂不适用那个的是以;开头。
手册:man smb.conf

文件内容说明:
此文件分为若干的章节,分别负责了不通的配置项目。
-----------------------------------------------------------------------------------------------
第一章:global(全球性,全局性)章节  "在每个配置行的前面是对下一行的解释。

1、workgroup=workgroup
本机所在的工作组名字。
Windows为了方便相互间的访问,为每台计算机都设置了一个工作组的名字,在同一个工作组的计算机相互访问比较容易。在实际工作中大家把所有计算机的工作组设置成相同的就可以了。
本次试验的工作组设置为Workgroupx

2、server string=This is teacherbob's linux server
针对服务器的描述信息

3、security=
这个叫共享的安全级,一共有四个安全级
share  "无需密码直接访问
user   "需要在服务器上先创建一个用户,访问此服务器需要使用这个用户账户。
server "通过一台Windows服务器进行验证
domain "通过一台Windows的域控制器进行验证
本次试验中,把共享安全级设置为share。

4、hosts allow=
这个是访问控制,默认处于关闭状态。去掉注释,在后面写一个子网或IP地址就意味着“允许指定的主机访问”。
例如:
hosts allow=192.168.0.1 192.168.1.
就意味着,除了192.168.0.1这一台机器和以192.168.1.开头的这些地址可以访问我们共享以外,其他计算机都无法访问。

5、load printers=no
是否要启动打印机共享。本次实验把这个功能关闭。

6、log file=/var/log/samba/%m.log
这一项是指定日志文件存储的位置,一般此项目不需要配置,但要理解这项配置的作用,它指明了日志文件所在的位置。

7、max log size=50
这一项指定了日志文件最多占用多少空间,以KB为单位。建议把它改大一些。
-----------------------------------------------------------------------------------------------
第二章 share difinitions
共享定义就是定义一些共享的目录,并指定共享的方式。

针对于每一个共享目录都需要有单独的一段。

默认配置:
[home]
       comment=Home directorys
       Browseable=no
       writable=no
第一行:共享名
第二行:描述
第三行:是否可以浏览
第四行:是否允许写操作
这一段是samba默认的配置信息,它无需修改,实现了每个用户通过samba都能够刚问自己的家。

[printers]
这一段实现了发布共享的打印机,如果不需要就用按照其他格式给注释掉

配置文件里的例子都是注释掉的,可以修改也可以手工编写。
-----------------------------------------------------------------------------------------------
实验例子:
[music]
       Comment=Many free mp3 here
       Path=/var/share/map3
       writeable=no
       public=yes

[movie]
       Comment=many free movies here! Welcome for your 's
       Path=/var/share/movie
       Writeable=yes
       Public=yes
       Browseable=no
       Create mask=0
-----------------------------------------------------------------------------------------------
以上命令解释:(重要)

1、comment:      描述这个共享目录的作用。
2、path:         共享目录在计算机上的实际路径。注:共享目录和共享名可以不一样
3、writeable:    是否允许客户机写入到这个目录,这是一个上传的必要条件。另外用户还需要对这个用户有读写执行的三种权限。(另一个必要条件,2个条件加载一起才能构成整个权限的实现)
4、Browseable:   是否允许客户机浏览此共享(如果允许浏览,客户机只要输入计算机名就可以浏览,如果设置为NO则不能浏览,如果知道就能访问,不知道则看不到。),如果不加此行,默认是允许浏览的。
5、public:       是否允许未经登录的用户访问,或者匿名用户访问。由于本次实验共享级设置为share,所以两段都指定为yes
6、creat mask:   支持上传的目录,如果用户上传了文件,默认的权限是什么?
例如:这个码指定为0,那么上传文件的默认权限就是000
再如:此码指定为0644,那么上传文件默认的权限就是644

要注意的问题是:这个权限必须以0开头,没0在前面补一个0,如果是多个0可以都省略掉。
如:007=
    07
    7    错误
    644  错误
    0644 正确
================================================================================================
samba相关实验:
实验一:匿名用户访问

试验要求:
1、最基本的samba共享,匿名访问的方式
2、两个共享目录,一个可浏览,一个不能。一个能上传,一个不能上传。
3、能上传的目录上传的文件,必须经过管理员审核才能下载。
-----------------------------------------------------------------------------------------------
1、创建两个目录
mkdir -p /var/share/mp3
mkdir /var/share/movie
chmod 005 /var/share/mp3
chmod 007 /var/share/movie

2、为实验效果考虑,想两个目录中添加一些文件
touch /var/share/mp3/a.mp3
touch /var/share/mp3/b.mp3
touch /var/share/movie/x.avi
touch /var/share/movie/y.avi

3、编辑主配置文件
vim /etc/samba/smb.conf
修改以下行
1)Workgroup = workgroup
2)server string = Thin is dy's linux server
3)security = share
4)load printers = no
5)hosts allow = 127. 192.168.100. 192.168.7.
6)max log size =5000
注:在共享字段,请大家把home这一段整个注释掉。因为是匿名登录所以不用在本地建立家目录。
自己加两段:
[music]
       Comment = Many free musics here ! welcome for your's
       Path = /var/share/movie
       Writable=no
       public =yes

[movie]
       Comment = Many free movies here! welcome for your's
       Path = /var/share/movie
       Writable=yes
       Public=yes
       Browseable=no
       Create mask =0

4、配置主机名(为了防止网络冲突)
vim /etc/sysconfig/network
改动
Hostname=
存盘退出后在shell中输入
hostname xxxx.xxxx.xxx
注销重新登录
注意:名字千万不要冲突

5、service smb start|restart
-----------------------------------------------------------------------------------------------
客户端测试:
Windows测试方法:
开始-运行-\\服务器的IP
开始-运行-\\服务器的IP\movie

linux客户端测试方法
mkdir /mnt/mp3
mkdir /mnt/mp3
mount //服务器的IP/mp3 /mnt/mp3
mount //服务器的IP/movie /mnt/movie

7、测试能不能想movie中写文件
提示:这一步会失败,原因系统策略问题,自行解决。
如果不能上传或者客户端访问时提示无权限时可以用一下命令:
setenforce 0(关闭掉这个防火墙的策略)

8、如果能解决第七步骤,看上传后的文件,能不能下载?如果不能则实验成功。
================================================================================================
reat mask:   支持上传的目录,如果用户上传了文件,默认的权限是什么?
例如:这个码指定为0,那么上传文件的默认权限就是000
再如:此码指定为0644,那么上传文件默认的权限就是644

要注意的问题是:这个权限必须以0开头,没0在前面补一个0,如果是多个0可以都省略掉。
如:007=
    07
    7    错误
    644  错误
    0644 正确
-----------------------------------------------------------------------------------------------
目录的权限和上传文件的默认权限
目录的权限是指能不能上传,上传文件默认权限是指能上传的目录,有人传了系统会自动为这个文件分配权限,这个码就是指定这个文件的默认权限。

由于试验中指定的码是0,也就是上传的文件系统自动分配的000的权限,自然没人可以下载。
------------------------------------------------------------------------------------------------
samba实验二:基于用户和密码的模式访问实验
实验目的:

1、共享三个目录,第一个目录所有的文件可以读、可以改,可以上传,但仅限于account组成员。这个目录叫pay,出于安全性考虑,把这个目录设置成隐藏共享。

2、第二个eng目录任何用户(不包括匿名,只能系统用户)都可以读,不可以改,不可以上传。

3、第三个mgr目录仅boss 这一个用户可以读,任何人不能上传也不能改。设计成隐藏共享。

实验步骤:
1、准备三个共享目录和文件,合理设置权限

2、创建若干文件,合理设置权限。

3、编辑主配置文件

4、创建samba用户名和密码(默认系统用户不能在samba中登录,需要手工指定才可以)

5、重新启动服务,进行测试。

-----------------------------------------------------------------------------------------------
实验的具体步骤:
1、创建共享目录和共享文件:

1)建立共享目录:
   mkdir /var/share/pay
   mkdir /var/share/eng
   mkdir /var/share/mgr

2)建立共享文件
touch /var/share/pay/a.txt
touch /var/share/pay/b.txt

touch /var/share/eng/x.jpg
touch /var/share/eng/y.jpg

touch /var/share/mgr/file1.txt
touch /var/share/mgr/file2.txt

2、创建用户和组:

1)创建管理组
groupadd account
groupadd eng
groupadd mgp

2)创建用户名
useradd -g account account1
useradd -g account account2
useradd -g eng     eng1
useradd -g eng     eng2
useradd -g mgr     boss

3)创建用户名密码
passwd account1  回车后输入密码
passwd account2  回车后输入密码
passwd eng1  回车后输入密码
passwd eng2   回车后输入密码
passwd boss   回车后输入密码

3、设置共享目录和共享文件的所有者和组

1)设置共享目录的所有者和组
chown account1 /var/share/pay 把pay这个目录的所有权交给account1这个用户
chgrp account  /var/share/pay 把pay这个目录的所有权交给sccount这个组

chown eng1     /var/share/eng
chgrp eng      /var/share/eng

chown boss     /var/share/mgr
chgrp mgr      /var/share/mgr

2)设置共享文件所有者和组
chown account1 /var/share/pay/*  把pay这个目录下全部文件的所有权交给account1这个用户
chgrp account  /var/share/pay/*  把pay这个目录下全部文件的所有权交给sccount这个组
 
chown eng1     /var/share/eng/*
chgrp eng      /var/share/eng/*

chown boss     /var/share/mgr/*
chgrp mgr      /var/share/mgr/*

4、设置目录以及目录下文件的权限
1)设置目录的权限。
chmod 770 /var/share/pay
chmod 555 /var/share/eng
chmod 500 /var/share/mgr

2)设置目录下所有文件的权限。
chmod /660 /var/share/pay/*
chmod /444 /var/share/eng/*
chmod /400 /var/share/mgr/*  

5、修改配置文件
vim /etc/samba/smb.conf
workgroup =workgroup
server string = 对服务器的描述
security =user                  “设置共享级别为用户级,也就是说必须有用户身份的用户才能访问。

创建三个共享字段:
[pay]
      comment = 描述
      path= /var/share/pay
      public =no                 不允许匿名访问
      valid users =@account      "加“@”就代表account用户组可以访问,如果不加@那就指定单独的用户可以访问。
      writeble =yes
      browseable =no  
      create mask =0660  默认这个组的成员上传文件都可以修改,但非本组成员不可以

[eng]
     comment =描述
     path =/var/share/eng
     public=no
     valid user =%s            %s所有用户都可以访问,如果不写包括匿名用户访问,如果写则只有系统用户都可以访问。

[mgr]
     comment = 描述
     path =/var/share/mgr
     public =no
     valid user =boss
     browseable =no
    
6、创建samba服务器用户
smbpasswd -a account 回车后输入密码
smbpasswd -a account2 回车后输入密码
smbpasswd -a eng1 回车后输入密码
smbpasswd -a eng2 回车后输入密码
smbpasswd -a boss 回车后输入密码

注意:
我们要建那些用户?
要建立那些组?那些用户属于那些组?
如何设置目录的文件的权限(权限在达到要求的情况下,尽量小)

chown 用户名 文件或目录   更改所有者
chgrp 组名   文件或目录   更改组所有者