[博主公告]

“linux大棚”是一个以Linux技术专题为主的博客。
本博客为了保证读者的浏览体验,决定不刊登任何广告信息。

专题

文章发布时间日历

September 2010
M T W T F S S
« Aug    
 12345
6789101112
13141516171819
20212223242526
27282930  
    <<返回主页

  • 16Jan
    %e5%88%9d%e5%a7%8b%e7%94%a8%e6%88%b7%e7%bb%84%ef%bc%8c%e6%9c%89%e6%95%88%e7%94%a8%e6%88%b7%e7%bb%84%ef%bc%8c%e5%88%9d%e5%a7%8b%e7%94%a8%e6%88%b7%ef%bc%8c%e6%9c%89%e6%95%88%e7%94%a8%e6%88%b7

    自从我开始学习Linux系统管理以来,这几个概念一直困扰着我。

    今天,一定要搞清楚这几个概念,然后好好研究研究他们到底是干什么用的。

    借此,写篇“久违”了的博客,和大家共享下我的总结

    ====

    实际用户 (real user id)

    实际用户就是登陆到shell的时候的用户,也就是最开始的用户。

    在大棚博客前面有一篇文章在讨论whoami和who am i的区别时,也涉及到了这个概念。在这里再次强调一下,who am i所列出的就是实际用户。

    有效用户(effective user id)

    所谓有效用户,就是用su或者su -所切换到的用户。用whoami所列出的就是这个有效用户。

    如果你执行了一个命令产生了一个进程,那么此进程的USER就是有效用户ID

    初始用户组

    还记得/etc/passwd文件里的第4栏么(忘了的话,用cat /etc/passwd去看看),它表示GID,就是“用户组ID”,我们称这个值为“初始用户组”。当用户登陆系统时,立刻就拥有了这个用户组的相应权限。

    如果你知识掌握的够扎实,你还会想到/etc/group文件,这里面储存着所有的用户组名称以及相应的用户账号列表。请你注意,这个用户账号列表里原则上来说可以不存储“初始用户组名称”的,因为初始用户组名称在/etc/passwd里已经存储了,没必要在这里再重复存储了。

    有效用户组

    有效用户组表示用户此时此刻所在的用户组是什么。有些同学会问“难道用户所在的用户组还会来回来去的变么?”。答案是肯定的。这都是newgrp命令搞得鬼,它可以帮助用户转换到不同的用户组。比如newgrp group123,就可以让用户转换到group123用户组了。请注意,这种转换的背后原理是“创建一个新的子shell”,恢复到原来用户组的方法是用exit或ctrl-D来注销当前的shell。

    好了,说结论吧,有效用户组就是用newgrp命令所切换到的用户组。(当然,如果你一次也没有使用newgrp命令,那么有效用户组就是初始用户组喽)

    当然,你可以用groups命令来列出当前用户所支持的所有用户组。(在有些系统中,第一个列出的就是有效用户组,但有些系统并不这么做)

    还有一点应该注意,就是当你建立一个文件时,此文件的所属用户组就是创建人当前的有效用户组。

    结论

    1 当用su或者su -切换用户时,其用户组都会随之改变,系统会根据所要切换的有效用户ID去/etc/passwd里寻找相对应的初始用户组,然后切换之。

    2 建立一个文件时,系统会根据有效用户和有效用户组来创建。

    ps: 这篇文章算是《linux命令五分钟系列之三十》,由于文章题目太长,略去专题名称了。
    over~

    我猜您对这些文章感兴趣:

    Posted by rocrocket @ 10:43 am

    Tags: , , ,

    1,113人阅读过了这篇文章。

    如果您还满意我的文章,请您订阅我的博客。点击“我要订阅”即可。谢谢:)

  • <<返回主页

One Response

WP_Cloudy
  • Grissiom Says:

    很清楚的文章,多谢~;)

    不过有个问题,一个用户可以属于很多组(并且大部分情况是这样……),那么,有效用户组和其他用户组之间有什么区别呢?……

    回复

Leave a Comment

Please note: Comment moderation is enabled and may delay your comment. There is no need to resubmit your comment.