Linux文件和目录限制

前言

我看到有面试题问到Linux目录个数和文件个数的限制,这里总结记录一下

目录个数限制

这里需要区分文件系统,Linux之前的ext3和ext4文件系统

ext3

ext3文件系统的一级子目录的个数默认为32000个,可以通过查看源码找到此规则:

find命令查找源代码文件:



cat命令查看define常量:




ext4

ext3有32000最大目录限制,ext4取消了这一限制

测试脚本:

#!/bin/bash


for index in `seq 1 40000`
do
	mkdir $index
	if [ $? -ne 0 ]; then
		echo -e "创建目录失败\n"
	fi
done

echo -e "创建目录成功\n"

截图:




文件个数限制

ext3、ext4系统下单个目录的最大文件数无特别的限制,是受限于所在文件系统的inode数

inode

这里参考了阮一峰的博客,原文链接: 理解inode

文件存储在硬盘上,硬盘的最小存储单位叫做“扇区(Sector)”。每个扇区存储512字节(相当于0.5KB)

操作系统读取硬盘的时候,不会一个一个扇区的读取,这样效率太低,而是一次性连续读取多个扇区,即一次性读取一个“块”(block)。这种由多个扇区组成的“块”,是文件存取的最小单位。

文件数据都存储在“块“中,那么很明显,我们还必须找到一个地方存储文件的元信息,比如文件的创建者、文件的创建日期、文件的大小等等。这种存储文件元信息的区域就叫做inode,中文译名为”索引节点“

inode内容

inode包含文件的元信息,具体说来有以下内容:
  • 文件的字节数
  • 文件拥有者的User ID
  • 文件的Group ID
  • 文件的读、写、执行权限
  • 文件的时间戳,共用三个:ctime指inode上次变动时间,mtime指文件内容上次变动的时间,atime指文件上次打开的时间
  • 连接数,即有多少文件名指向这个inode
  • 文件block的位置

可以用stat命令查看某个文件的inode信息:




inode大小

inode也会消耗硬盘空间,所以硬盘格式化的时候,操作系统自动将硬盘分成两个区域。一个是数据区,存放文件数据;另一个是inode区,存放inode所包含的信息

每个inode节点的大小,一般是128byte或者256byte。inode的节点总数,在格式化时就给定,一般是每1KB或2KB就设置一个inode。查看每个硬盘分区的inode总数和已经使用的数量,可以用df命令



由于每个文件都必须有一个inode,因为可能发生inode已经用光,但是硬盘还未存满的情况,这时,就无法在硬盘上创建新文件


文件大小限制

现在ext3支持最大16TB的文件系统,单个文件最大2TB

Ext4增加了48位块地址,最大支持1EB文件系统,和单个16TB的文件

换算:1EB=1024PB 1PB=1024TB 1TB=1024GB

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: Linux 文件目录权限的设置是通过 chmod 命令来完成的。在 Linux 中,每个文件目录都有三个权限:读取(r)、写入(w)和执行(x),而每个文件目录都有三种用户:文件所有者(owner)、群组(group)和其他用户(others)。因此,共有九种权限组合,用三个数字来表示:第一个数字表示文件所有者的权限,第二个数字表示群组的权限,第三个数字表示其他用户的权限。 常见的权限数字对应如下: - 0:没有权限 - 1:执行权限 - 2:写入权限 - 3:写入和执行权限 - 4:读取权限 - 5:读取和执行权限 - 6:读取和写入权限 - 7:读取、写入和执行权限 例如,要将目录 /var/www/html 的权限设置为 drwxr-xr-x(文件所有者具有读取、写入和执行权限,群组和其他用户只有读取和执行权限),可以使用以下命令: ``` chmod 755 /var/www/html ``` 其中,7 表示文件所有者具有读取、写入和执行权限(4 + 2 + 1),5 表示群组和其他用户具有读取和执行权限(4 + 1),因此整个目录的权限为 drwxr-xr-x。 需要注意的是,修改文件目录的权限需要使用管理员权限(即 root 用户)执行命令,否则可能会因为权限不足而失败。 ### 回答2: 在Linux系统中,文件目录的权限是通过权限位来控制的。每个文件目录都有三组权限:所有者权限、所有组权限和其他用户权限。 所有者权限:表示文件目录的所有者对其具有的权限。包括读权限(r,表示可以查看文件内容或目录下的文件列表)、写权限(w,表示可以修改文件内容或在目录下创建、删除文件)、执行权限(x,表示可以执行文件或进入目录)。 所有组权限:表示与文件目录拥有相同组的用户对其具有的权限。与所有者权限类似,包括读、写、执行权限。 其他用户权限:表示不属于所有者组的其他用户对其具有的权限。同样包括读、写、执行权限。 在设计文件目录权限时,可以按照以下原则进行: 1. 需要确保至少有一个用户具备执行权限,否则该文件目录将无法使用。对于目录来说,执行权限表示可以进入该目录,对于文件来说,执行权限表示可以执行该文件。 2. 对于具有敏感数据的文件目录,应该只给予必要用户读权限,并限制其他用户的访问权限,以确保数据的安全性。 3. 对于某些程序文件目录,可以给予所有者或同组用户写权限,以便他们能够进行修改。 4. 对于公共目录文件,应该为其他用户开放至少读取权限,以便其他用户能够查看或使用。 5. 对于系统关键文件目录,应该严格限制权限,避免非授权用户误操作或修改。 6. 使用适当的用户和用户组管理,确保每个用户组的成员对特定文件目录具有适当的访问权限。 总结而言,设计Linux文件目录权限时,需要根据需求和安全性考虑,给予必要用户适当的读、写、执行权限,同时限制其他用户的访问权限,以保障数据和系统的安全。 ### 回答3: 在Linux系统中,文件目录权限设计是非常重要的,它可以控制文件目录的访问权限。通常情况下,每个文件目录都有一个所有者和一个所属组。下面是一些关于如何设计Linux文件目录权限的指导原则: 1. 分配所有者和所属组:为每个文件目录分配一个所有者和所属组。所有者通常是创建该文件目录的用户,而所属组可以是共享该文件目录的用户组。 2. 使用权限位:每个文件目录都有三个权限位:读取、写入和执行。通过设置这些权限位,可以控制不同用户对文件目录的访问权限。例如,仅授予所有者读取和写入权限,而其他用户只有读取权限。 3. 文件目录的默认权限:通过设置默认权限,可以控制在创建新文件目录时应用的权限。这可以使用umask命令来定义,确保新文件目录的权限符合期望。 4. 使用精确的访问控制:在设计文件目录权限时,需要根据实际需要进行精确的访问控制。只授予用户进行所需操作的最低权限,以确保安全性。 5. 考虑特殊权限:Linux还提供了一些特殊权限选项,如Setuid、Setgid和Sticky位。这些权限可以在特定场景下提供额外的控制和安全性。 总的来说,设计Linux文件目录权限需要考虑安全性、可用性和用户需求。通过分配合适的所有者和所属组,并使用权限位来控制访问权限,可以确保文件目录在系统中得到适当的保护。同时,还要根据实际需求和特殊情况,使用特殊权限选项来提升安全性和控制。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值