限制 Solaris 用户目录和硬盘使用空间

【限制 Solaris 用户目录和硬盘使用空间】
限制用户目录使用空间

修改/etc/vfstab,把需要限制的文件系统的mount options改为rq

到文件系统的顶,执行命令touch quotas和chmod 600 quotas

quotaon -v -a

设定用户可使用的空间(edquota 用户名)



限制用户硬盘使用空间

Unix作为一种多用户系统,它允许多个用户共同使用系统的资源,包括系统的内存,CPU和硬盘 。在默认情况下,系统并不会限制每个用户可以使用硬盘空间的大小,所以如果用户恶意使用硬盘,或用户由于疏忽,将硬盘空间全部占用,将导致其他用户无法使用硬盘,从而使系统性能下降,甚至有崩溃的危险 。

其实,UNIX提供的quota系列命令可以帮助我们解决这个问题,这些命令包括:
quota : 显示用户的硬盘限额和使用情况 。
edquota : 为每个用户设定硬盘限额 。
quotaon: 启动文件系统硬盘限额服务
quotaoff : 关闭文件系统硬盘限额服务
repquota : 显示当前硬盘限额状态
配置这项服务的方法很简单 。但在使用硬盘限额服务之前,我们要明白硬限制和软限制这两个概念 。所谓硬限制是指对资源节点和数据块的绝对限制,在任何情况下都不允许用户超过这个限制;而软限制是指用户可以在一定时间范围内(默认时为一周,在/usr/include/sys/fs/ufs_quota.h文件中设置)超过软限制的额度,在硬限制的范围内继续申请资源,同时系统会在用户登录时给出警告信息和仍可继续申请资源剩余时间 。如果达到时间期限,用户的硬盘使用仍超过软限制的额度,则系统将不允许用户再申请硬盘资源 。

明白了这两个概念,我们就可以配置硬盘限额服务了,首先我们必须在要限制的文件系统的根目录下建立一名字为quotas的文件,该文件的所有者应是root,且其它用户不可以对它进行写操作 。方法是:
# cd /home (进入文件系统根目录,注意并不是系统根目录,本例为/home目录)
# touch quotas(创建一名字为quotas的空文件)
# chmod 644 quotas (更改文件属性,使只有root可以对它进行写操作)

然后,我们编辑/etc/vfstab文件,找到要进行硬盘限额服务的文件系统,并将
mount option字段的值设为rq,然后并存盘退出 。

完成这两步后,我们使用edquota命令为每个用户设置硬盘限额,在root权限下输入以下命令:
#edquota username
这时系统会自动生成一个临时文件,并且有如下内容:
fs /users blocks (soft = 0, hard = 0) inodes (soft = 0, hard = 0)
其中fs字段表明使用硬盘限额的文件系统,本例为/users,block和inodes表明用户可以使用的硬盘千字节数和I节点数,即用户可使用的硬盘空间和可建立的文件数,soft和hard分别对于前面提及的软限制和硬限制 。

编辑这个文件,把软,硬限制设置到合适的数值,然后存盘退出 。这时我们可以看到quotas文件的大小已经被改变,说明用户的限额已经储存 。重复这条命令,给每一个用户都配置硬盘限额 。另外,如果我们分配给用户的硬盘限额都相同,我们可以使用 “-p” 参数而不用为每个用户都编辑一个文件,它的使用方法是:
#edquota -p reference-usernameusername

编辑完文件后,我们就可以用quotaon来启动服务了,在root权限下输入
#quotaon /users
就可以启动限额服务 。如果我们要查看各个用户的当前使用情况,可以使用
repquota 命令,在root权限下输入:
#repquota /users
系统会显示:
。。。

从中我们可以很容易看到用户的硬盘和文件的使用情况以及超过软限制后仍可申请资源的时间等等 。

当然我们可以用quotaoff取消硬盘限额服务 。另外,系统还提供quotacheck 命令对限额的一致性进行检查 。

推荐阅读