linux我把passwd里user1的gid改为501,删掉了group里的user1:x:500,那么user1组的gid为什么会变成500

我把passwd下改成这样。

删掉group下的

我在user1时建立的一个文件dir1本来是这样

现在变成了

为什么不是501,或者是user2(user2组的gid是501)
求大神解释

当一个文件所属的用户或组被删除后,用 ls 命令就会显示当时所属的uid或gid数字,不再显示用户名或组名。
你当时建的那个文件是属于用户user1和组user1的,你删掉了group里的user1:x:500,就是删除了组user1,所以那个地方就显示原来组user1的gid数字了。

虽然你改了用户user1所属的组为user2,但是你并没有把这个文件的属组改为user2啊。追问

难道不是文件属于用户,用户属于组,然后文件所属用户更改为别的组,那么文件不也应该属于新的组么

温馨提示:答案为网友推荐,仅供参考
第1个回答  推荐于2016-03-21
文件或目录的UID和GID是放在inode里的,通过stat命令可以看到:stat filename
更改采用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

本回答被提问者采纳
第2个回答  2013-10-24
passwd 里面都是用户,group 里面才是用户组的信息。
但是你删了 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 编号的组。

另外,文件的所属用户和所属组是两个独立的信息,没有必要把他们放在一起想。
文件的所属组可以是所有者没有加入的组。
所以,你这个问题其实根本就不需要看用户信息的变更,只看用户组的信息变更就行了。

相关了解……

你可能感兴趣的内容

本站内容来自于网友发表,不代表本站立场,仅表示其个人看法,不对其真实性、正确性、有效性作任何的担保
相关事宜请发邮件给我们
© 非常风气网