当前位置:嗨网首页>书籍在线阅读

07-新建文件的属主

  
选择背景色: 黄橙 洋红 淡粉 水蓝 草绿 白色 选择字体: 宋体 黑体 微软雅黑 楷体 选择字体大小: 恢复默认

15.3.1 新建文件的属主

文件创建时,其用户ID“取自”进程的有效用户ID。而新建文件的组ID则“取自”进程的有效组ID(等同于System V系统的默认行为),或父目录的组ID(BSD系统的行为)。当为项目创建目录时,需要该目录下的所有文件隶属于某一特定组,并且可为该组所有成员所访问。这时,采用后一种行为就非常实用。新建文件的组ID在这两者间如何取舍是由多种因素决定的,新文件所在文件系统的类型就是其中之一。这里先介绍一下ext2和某些其他类型文件系统所遵循的规则。

为求精确,本节所使用的术语有效用户ID或组ID,实际是指文件系统用户ID或组ID(见9.5节)。

装配ext2文件系统时,mount命令要么带有-o grpid的选项(或等效的-o bsdgroups选项),要么带有-o nogrpid 选项(或等效的-o sysvgroups选项)。(若两者均未指定,mount命令的默认选项为-o nogrpid。)若指定了-o grpid选项,那么新建文件总是继承其父目录的组ID。若指定了-o nogrpid选项,那么在默认情况下,新建文件的组ID则“取自”进程的有效组ID。不过,如果已将目录的set-group-ID位置位(通过chmod g+s命令),那么文件的组ID又将从其父目录处继承。表15-3对上述规则做了总结。

正如18.6节所述,一旦将某一目录的set-group-ID位置位后,该目录下所有子目录的set-group-ID位也将被置位。如此一来,正文中所描述的set-group-ID行为会遍布整个目录树。

表15-3:确定新建文件组所有权的规则

| 文件系统装配选项 | 有无设置父目录的Set-group-ID位 | 新建文件的组所有权取自何处 | | :----- | :----- | :----- | :----- | :----- | | –o grpid,–o bsdgroups | 忽略 | 父目录组ID | | –o nogrpid,–o sysvgroups (默认) | 无 | 父目录组ID | | 有 | 父目录组ID |

写作本书之际,支持grpid和nogrpid装配选项的文件系统仅限于ext2、ext3、ext4以及自Linux 2.6.14出现的XFS。其他类型的文件系统则遵循nogrpid规则。