我把passwd下改成这样。
删掉group下的
我在user1时建立的一个文件dir1本来是这样
现在变成了
为什么不是501,或者是user2(user2组的gid是501)
求大神解释
你当时建的那个文件是属于用户user1和组user1的,你删掉了group里的user1:x:500,就是删除了组user1,所以那个地方就显示原来组user1的gid数字了。
虽然你改了用户user1所属的组为user2,但是你并没有把这个文件的属组改为user2啊。追问
难道不是文件属于用户,用户属于组,然后文件所属用户更改为别的组,那么文件不也应该属于新的组么
更改采用chown和chgrp命令
更改用户属组、UID等,不能同时将文件的UID和GID改掉
你把删掉user1用户组,后系统只是找不到GID对应的组名,因此ls只能显示500,而不是显示名称
另外不要直接更改passwd文件,更改用户属性最好使用usermod命令追问
意思是如果要删除组的话,就必须用ch命令,如果不是,只是删除了名字,而该组还存在,并且有着它的组员,关系没有变,只不过他现在没名字了,我这么说对么?
但文件又属于500这个组,又属于user1这个用户。而user1又属于501这个组。我有点糊涂
删除组用groupdel,删除之后这个组名就没了,原来该组里的用户的GID不变,但是显示不出组名
文件创建时,其GID跟创建者的GID一致,可以使用chgrp或chown命令进行更改
用户更改组,对原来的文件没有影响
可以这么认为:文件的GID跟实际的用户管理的组名、GID没有必然联系。可以尝试将文件GID改成任何数字,就算是不存在的用户组,例如root用户执行:
chgrp 2999 filename
ls -l filename
但是你删了 group 用户组的信息,所以系统存储文件的用户组为 500 ,但不能反查到 500 而直接显示 500 这个 ID 而不是组名。追问
那对于我更改用户use1属于组501,这一个改变为什么没对文件起作用
追答最根本的问题就是:你修改的是用户信息,和文件的信息没关系。文件有自己的两个属性:所属用户,所属用户组。
你修改用户 user1 的 group 到 501 ,但你没修改文件的所属用户组为 501 。
而且还删掉了 group 文件里面 ID 为 500 用户组的相关信息,那么系统自然找不到 gid 对应的用户组,就只好显示编号了。
也就是文件属于user1用户而不属于user1用户所属于的user2组,而属于另一个500组,这样不矛盾是不是?
追答不矛盾。
因为文件的属性记录的都是 ID 编号而不是英文名字。所以你修改 group 文件后。没有修改文件的属性信息,那么文件还会保留原来的两个 ID 编号。
这样因为你把用户组的 500 编号的内容删除了,系统就没有办法查找到 500 编号对应的用户组的名字。
就算你把那个组的编号改成了 501 ,系统也会只去寻找 500 编号的组。
另外,文件的所属用户和所属组是两个独立的信息,没有必要把他们放在一起想。
文件的所属组可以是所有者没有加入的组。
所以,你这个问题其实根本就不需要看用户信息的变更,只看用户组的信息变更就行了。