如何限制用户可以在 linux 中创建的最大文件夹数
How can I limit the max numbers of folders that user can create in linux
因为有人告诉我,如果我的计算机中的用户将创建 "infinite" 个文件夹/文件(甚至是空的),它会导致我的计算机变得更慢(甚至卡住),我想要限制用户可以创建的 files/directories 的最大数量。
我担心一个用户会尝试创建大量文件,这将成为所有其他用户的问题,因此这将是一个安全问题,
我该怎么做,如何限制每个用户可以创建的最大 files/directories 数量?
您应该首先在您的文件系统上启用配额检查
修改/etc/fstab,将关键字usrquota和grpquota添加到您要监控的相应文件系统中。
以下示例表示在 /home 文件系统上启用了用户和组配额检查
# cat /etc/fstab
LABEL=/home /home ext2 defaults,usrquota,grpquota 1 2
完成后重启。
在文件系统上启用磁盘配额检查后,首先收集所有配额信息,如下所示。
# quotacheck -avug
quotacheck: Scanning /dev/sda3 [/home] done
quotacheck: Checked 5182 directories and 31566 files
quotacheck: Old file not found.
quotacheck: Old file not found.
现在,使用如下所示的 edquota 命令来编辑特定用户的配额信息。
例如,要更改用户“ramesh”的磁盘配额,使用 edquota 命令,它将在编辑器中打开软硬限制值,如下所示。
# edquota ramesh
Disk quotas for user ramesh (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 1419352 0 0 1686 0 0
硬限制 – 如果您指定 2GB 作为硬限制,用户将无法在 2GB 后创建新文件
软限制 – 如果您指定 1GB 作为软限制,用户将在达到 1GB 限制时收到警告消息“超出磁盘配额”。但是,在达到硬限制之前,他们仍然可以创建新文件
最后,如果您希望每天生成一份关于用户配额的报告,您可以执行以下操作。
将 quotacheck 添加到日常 cron 作业中。在 /etc/cron.daily 目录下创建如下所示的 quotacheck 文件,它将每天 运行 quotacheck 命令。这会将 quotacheck 命令的输出发送到根电子邮件地址。
# cat /etc/cron.daily/quotacheck
quotacheck -avug
这就是配额的设计目的。您可以使用文件系统配额来强制执行限制,每个用户 and/or 每个组:
- 可以使用的磁盘大小space
- 可以使用的块数
- 可以创建的 inode 数量。
inode 的数量实际上会限制用户可以创建的文件和目录的数量。
在许多来源中都有大量关于如何配置文件系统配额的优质文档,我建议您进一步阅读:
- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-disk-quotas.html
- https://wiki.archlinux.org/index.php/disk_quota
- http://www.ibm.com/developerworks/library/l-lpic1-v3-104-4/
- http://www.firewall.cx/linux-knowledgebase-tutorials/linux-administration/838-linux-file-system-quotas.html
因为有人告诉我,如果我的计算机中的用户将创建 "infinite" 个文件夹/文件(甚至是空的),它会导致我的计算机变得更慢(甚至卡住),我想要限制用户可以创建的 files/directories 的最大数量。
我担心一个用户会尝试创建大量文件,这将成为所有其他用户的问题,因此这将是一个安全问题, 我该怎么做,如何限制每个用户可以创建的最大 files/directories 数量?
您应该首先在您的文件系统上启用配额检查
修改/etc/fstab,将关键字usrquota和grpquota添加到您要监控的相应文件系统中。
以下示例表示在 /home 文件系统上启用了用户和组配额检查
# cat /etc/fstab
LABEL=/home /home ext2 defaults,usrquota,grpquota 1 2
完成后重启。
在文件系统上启用磁盘配额检查后,首先收集所有配额信息,如下所示。
# quotacheck -avug
quotacheck: Scanning /dev/sda3 [/home] done
quotacheck: Checked 5182 directories and 31566 files
quotacheck: Old file not found.
quotacheck: Old file not found.
现在,使用如下所示的 edquota 命令来编辑特定用户的配额信息。
例如,要更改用户“ramesh”的磁盘配额,使用 edquota 命令,它将在编辑器中打开软硬限制值,如下所示。
# edquota ramesh
Disk quotas for user ramesh (uid 500):
Filesystem blocks soft hard inodes soft hard
/dev/sda3 1419352 0 0 1686 0 0
硬限制 – 如果您指定 2GB 作为硬限制,用户将无法在 2GB 后创建新文件
软限制 – 如果您指定 1GB 作为软限制,用户将在达到 1GB 限制时收到警告消息“超出磁盘配额”。但是,在达到硬限制之前,他们仍然可以创建新文件
最后,如果您希望每天生成一份关于用户配额的报告,您可以执行以下操作。
将 quotacheck 添加到日常 cron 作业中。在 /etc/cron.daily 目录下创建如下所示的 quotacheck 文件,它将每天 运行 quotacheck 命令。这会将 quotacheck 命令的输出发送到根电子邮件地址。
# cat /etc/cron.daily/quotacheck
quotacheck -avug
这就是配额的设计目的。您可以使用文件系统配额来强制执行限制,每个用户 and/or 每个组:
- 可以使用的磁盘大小space
- 可以使用的块数
- 可以创建的 inode 数量。
inode 的数量实际上会限制用户可以创建的文件和目录的数量。
在许多来源中都有大量关于如何配置文件系统配额的优质文档,我建议您进一步阅读:
- https://access.redhat.com/documentation/en-US/Red_Hat_Enterprise_Linux/6/html/Storage_Administration_Guide/ch-disk-quotas.html
- https://wiki.archlinux.org/index.php/disk_quota
- http://www.ibm.com/developerworks/library/l-lpic1-v3-104-4/
- http://www.firewall.cx/linux-knowledgebase-tutorials/linux-administration/838-linux-file-system-quotas.html