Linux文件系统--文件属性_云岭百度_百度空间

Linux中每个文件有一组9个权限位用来控制谁能够读写和执行该文件的内容。这9位和另外影响到可执行程序运行的3个权限位一起,构成了文件的“模式”(mode)

12个模式位和4 文件类型信息一起保存在一个16位的字中。这4个文件类型位在文件创建时设定并且不能修改。但12个模式位可以由文件的属主或超级用户使用chmod命令来修改。使用ls -l (对于目录用 ls -ld )可以查看这些位的值。

权限位9位分为三组,每组3位,{dy}组(8进制400,200,100)控制属主的访问权限,第二组(8进制40,20,10)控制组的访问权限,第三组(8进制4,21)控制其他人的访问权限。每组中的3位依次控制读、写、执行的权限。注意与WINDOWS不同的是,能否对文件进行删除和重命名不是由该文件的写权限来决定的,而是由其父目录的权限设置所控制。

执行位允许执行文件。可执行文件有两种类型:一种是二进制的,CPU能够直接运行它;另一种是脚本,必须由shell或其他某种程序来解释。按照惯例,脚本以这样一行代码开始: #!/usr/bin/perl 这行代码指定了一个合适的解释程序。没有指定解释程序的非二进制可执行文件由用户的shell假定为bash或者sh脚本文件。内核能够理解 #!语法,但如果没有xx和正确的指定解释程序,那么内核将拒绝执行文件,接下来shell会通过调用sh来再次尝试执行这个脚本。

对于目录来说,当分析路径名时,执行位(也经常叫做“搜索(search)”位或“扫描scan”位)的作用是控制是否能够进入或通过该目录,而不是控制能否列出它的内容。读取位和执行位的组合的作用才是控制是否列出目录中的内容。写入位和执行位的组合则允许在目录中创建、删除和重新命名文件。

8进制40002000的两位是setuid位和setgid位。如果在可执行文件上设置这两位,那么它们能让程序访问运行它们的用户本来无权访问的文件和进程。如果在某个目录上设置了setgid位,在这个目录中新创建的文件具有该目录的属组权限而不是创建该文件的用户的默认属组。这使得在几个用户之间(他们都属于一个共同的组)共享一个目录中的文件变得更加简单。非执行的文件也可以设置setgid,据说在该文件被打开时请求特殊的锁定操作,但这项功能未见用过。8进制1000位叫“粘附位”,在早期UNIX系统上用过,现在已经过时了,忽略。

文件系统为每个文件维护大约40项单独的信息,作为系统管理员主要关心是是链接数、属主、属组、模式、大小 、{zh1}访问时间、{zh1}修改时间和类型。这些信息都可以使用 ls -l (对于目录使用 ls -ld ) 来查看。

[root@netcloud test]# ll testfile

-rwxr-xr-x. 2 root root 18 3 19 19:23 testfile

{dy}个”-“表示文件类型为普通文件、接着的rwx表示文件属主对该文件具有全部权限,再接着 r-x表示文件属组对该文件具有读和执行权限而没有写权限,再接着r-x 表示其它用户对该文件可读、执行而不可写。如果设置了setuid位,那么属主的执行权限的x将用一个s来替代。如果设置了setgid位,那么组执行权限的x也会被s所替代。如果文件粘附位也设置了,那么其它用户执行权限的x会显示为t。如果设置了setuid,setgid或者粘附位但相应位置本来没有执行权限,这些位会显示为ST

再下一个字段 2 表示该文件的硬链接数目。表示这个文件有2个名字,当前列出的是2个名字中的一个。每次建立一个该文件的硬链接时,这个数目就增加1。所有目录至少拥有两个硬链接:来自父目录的链接和来自目录本身内部的特殊文件“.”的链接。符号链接不会影响链接数目。

接下来两个字段是文件的属主和属组。上例文件的属主为root,属组也为root

再接下来的字段是文件大小,以字节为单位。上例 18

再接下来的是文件的{zh1}访问日期和文件名。

如果是设备文件,ls的输出稍微有些不同。如:

[root@netcloud home]# ls -l /dev/tty0

crw--w----. 1 root tty 4, 0 3 19 14:33 /dev/tty0

大多数字段一样,但不显示文件大小,而显示其主设备号和次设备号40 。上例/dev/tty0是设备驱动程序4(在这个系统上,是终端驱动程序)所控制的{dy}个虚拟控制台。

ls -i 显示文件的“索引节点号”,同一文件的硬链接具有相同的索引节点号。

ls -a 列出一个目录的所有项(包含名字以点开头的文件,以点开头的文件相当于隐藏文件) -t 按照时间对文件排序 (-tr 按照时间逆序)

更改文件的权限,使用chmod 命令,只有文件属主和超级用户才能修改它的权限。命令格式: chmod 访问权限 文件名

访问权限可用348进制数来表示,{zh1}一位表示其它用户权限,倒数第二位表示属组权限,倒数第三位表示属主权限,如果有倒数第四位的话,表示setuid,setgid和粘附位。如: chmod 751 testfile testfile权限设为属主所有权限,属组读和执行,其它用户只能执行。

也可以用chmod的助记语法格式。下面是一些例子。

规则            含义

u+w             文件的属主添加写入权限

ug=rw,o=r    赋予属主和属组读写权限,其他用户只读权限

a-x               删除全部3种类别用户的执行权限

ug=srx,o=    设置文件的setuidsetgid位,并且只给属主和属组读和执行权限

g=u              让属组的权限和属主一样。

(u--UID, g--GID, o--Others)

还可以把一个现有的文件权限模式套用到另一个文件上。 chmod --reference=filea fileb fileb的权限和filea一样。

chmod -R 可以递归地更新某个目录下文件的权限。例 chmod -R g+w mydir mydir及其所有内容增加属组的写入权限,而不影响其它位。

用户还可以使用umask命令来设置新建文件的默认权限。 它同样用38进制数来指定,但这个值表示的是要“剥夺”的权限。如 umask 027 其后所创建的文件默认属主具有所有权限,禁止属组写权限,其它用户没有任何权限。

chown 命令可以改变文件的属主和属组,前提是你是该文件的属主且属于目标组的成员,或者你是超级用户。 命令格式: chown user : group files 命令中指定新的属主和属组,{zh1}是要指定的文件。也可以只改变属主或只改变属组。如果只改变属组也可以使用 chgrp 命令。



郑重声明:资讯 【Linux文件系统--文件属性_云岭百度_百度空间】由 发布,版权归原作者及其所在单位,其原创性以及文中陈述文字和内容未经(企业库qiyeku.com)证实,请读者仅作参考,并请自行核实相关内容。若本文有侵犯到您的版权, 请你提供相关证明及申请并与我们联系(qiyeku # qq.com)或【在线投诉】,我们审核后将会尽快处理。
—— 相关资讯 ——