在
Linux NFS
服务器上实现磁盘配额
平时在使用
linux
的
NFS
服务器时,只是为了完成实验,很少关注综合性的操作,这次咱们一起来做个综合实验。实验分成二个部分,
NFS
和磁盘配额
一.
NFS
部分
实验环境:
Linux RHEL5+Windows server 2003
实验设备:
VMware6.5
实验过程:
1
.在
RHEL5
上配置
NFS
,共享目录为
“/software”
,权限为
“ 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 �Ce //
查看当前服务器的输出目录
2
.在
Linux
和
Windows
中挂载
NFS
服务器的共享目录
software
#mount �Ct 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 �Ccmug / //
在根下生成用户和组的配额文件
#quotacheck �Cmfvug / //
检测根文件系统中配额文件和实际配额状态的一致性
#quotaon / //
激活配置文件
3.
编辑用户的磁盘配额文件
#edquota �Cu 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 �Crv //
重新读取
exports
文件中的设置
3.
对用户
nobody
设置,就等于对所有来自客户端的用户做限制
#edquota �Cu nobody
其他的操作需要大家进一步扩展了,本次内容结束。