Linux NFS 服务器上实现磁盘配额 <?xml:namespace prefix = o ns = "urn:schemas-microsoft-com:office:office" />

平时在使用 linux NFS 服务器时,只是为了完成实验,很少关注综合性的操作,这次咱们一起来做个综合实验。实验分成二个部分, NFS 和磁盘配额

一. NFS 部分

实验环境: Linux RHEL5+Windows server 2003

实验设备: VMware6.5

实验过程:

1 .在 RHEL5 上配置 NFS ,共享目录为 “/software” ,权限为 “<?xml:namespace prefix = st1 ns = "urn:schemas-microsoft-com:office:smarttags" />777”

#mkdir /software                           // 创建共享目录 software

#vi /etc/exports                             // 编辑 NFS 配置文件

/software *(sync,rw)                      // 设置共享目录为 software ,允许所有 IP 访问,读写权限

#chmod 777 /software                  // 设置 software 的权限为所有人读写执行

#chkconfig --level 35 nfs on         // nfs 服务设置为开机时启动 注: portmap 默认为启动

#service nfs start                         // 启动 nfs 服务 注: portmap 默认为启动

# showmount –e                          // 查看当前服务器的输出目录

2 .在 Linux Windows 中挂载 NFS 服务器的共享目录 software

#mount –t nfs 172.16.100.254:/software /mnt       // 在客户端的 Linux 中挂载 software mnt

Windows 下挂载需要 Omni-Lite 软件实现,这里略过 ……

到这为止, Linux NFS 服务器搭建完成,客户端完成访问,实验完成。

 

         实验问题:客户端可以随意创建文件,无法实现控制。

 

二.磁盘配额部分

1.  修改 /etc/fstab 文件,并重起。

#vi /etc/fstab

LABEL=/    /     ext3    defaults,usrquota,grpquota   1 1                   // 加入 “,usrquota,grpquota”

#reboot

2.  使用 quotacheck 命令创建用户配额文件,并生成用户配额文件 aquota.user 和组配额文件 aquota.group

#quotacheck –cmug /                // 在根下生成用户和组的配额文件

#quotacheck –mfvug /              // 检测根文件系统中配额文件和实际配额状态的一致性

#quotaon /                                   // 激活配置文件

3.  编辑用户的磁盘配额文件

#edquota –u user

Disk quotas for user user (uid 500):

  Filesystem         blocks       soft       hard     inodes     soft     hard

  /dev/sda3           72              0            0           9            0         0

现在的设置只能对本地用户起作用,而对客户端访问无法实现限制,因为 Windows 客户端用户创建文件的宿主名为 nfsnobody Linux 客户端用户创建文件的宿主名为 4294967294 。由于 nfsnobody 用户在 NFS 服务器中含有该用户,所以直接给该用户设置即可。可是 4294967294 这个该怎么办呢?

  解决办法如下:

修改 exports 文件,实现服务器和客户端用户映射。

1. #vi /etc/exports

/software *(sync,all_squash,rw)              // 添加 all_squash  

注:选项说明

u   rw :可擦写的权限;

u   ro :只读的权限;

u   no_root_squash :登入 NFS 主机使用分享目录的使用者,如果是 root 的话,那么对于这个分享的目录来说,他就具有 root 的权限!这个项目『极不安全』,不建议使用!

u   root_squash :在登入 NFS 主机使用分享之目录的使用者如果是 root 时,那么这个使用者的权限将被压缩成为匿名使用者,通常他的 UID GID 都会变成 nobody 那个身份;

u   all_squash :不论登入 NFS 的使用者身份为何,他的身份都会被压缩成为匿名使用者,通常也就是 nobody 啦!

u   anonuid :前面关于 *_squash 提到的匿名使用者的 UID 设定值,通常为 nobody ,但是你可以自行设定这个 UID 的值!当然,这个 UID 必需要存在于你的 /etc/passwd 当中!

u   anongid :同 anonuid ,但是变成 group ID 就是了!

u   sync :资料同步写入到内存与硬盘当中;

u   async :资料会先暂存于内存当中,而非直接写入硬盘!

 

2.  重新输出共享目录

#exportfs –rv            // 重新读取 exports 文件中的设置

3.  对用户 nobody 设置,就等于对所有来自客户端的用户做限制

#edquota –u nobody

 

其他的操作需要大家进一步扩展了,本次内容结束。