一天一点学习Linux之用户(user)和用户组(group)理论知识

2011年01月07日 Linux基础 评论 1 条 阅读 9,948 views 次

通过前面几个内容的学习,我想各位看官对linux有了定的了解,今天我们就来看看在linux系统中重要的一个部分,那就是用户(user)和用户组(group)以及如何来管理用户(user)和用户组(group)。
先来了解一些用户(user)和用户组(group)有相关知识

什么是多用户多任务

我们知道,Linux是一个多用户、多任务的操作系统。那么什么是多用户多任务呢?
单用户、多任务:我登陆系统后,我可以在写BLOG的同时听音乐、聊天等等。
多用户、多任务:多个用户登陆到一台机子上,做不同的事。
细心的朋友一定会想,如果一个系统上,登陆了多个用户,那么系统的安全性是不是降低了,会不会泄露个人的隐私。哈哈,这一点您可以放心,Linux系统早就为我们想好了,只要你管理的好,这些就不是问题了。
既然Linux系统是个多用户多任务的操作系统,那么,系统是如何来识别这些用户的呢?这些用户权限是如何分配的呢?其实,Linux系统中,用户的识别是通过UID来识别的,这个UID就如同我们的身份证一样,是一组不可重复的数字,系统根据这个UID来区分用户的角色。

 

Linux系统的用户角色

root用户:系统唯一一个用户,可以登录系统并操作系统任何文件和命令,拥有最高权限;
系统用户:这类用户不具有登录系统的能力,但却是系统运行不可缺少的用户,比如bin、daemon、adm、ftp、mail等;这类用户都系统自身拥有的,而非后来添加的,当然我们也可以自己增加这类用户;
普通用户:这类用户能登录系统,但只能操作自己家目录的内容;权限有限;这类用户都是系统管理员根据实际需要自行添加的;

如果说,我想为系统增加很多用户,而这些用户的权限都是一样的,这些相同的权限设置会不会不方便?当然不是,我们可以使用用户组。
用户组(group)就是具有相同特征的用户(user)的集合体。他是通过GID来识别的。
我们可以把这些具有相同特性的用户规划到一个组里面,这样管理起来是不是就方便了很多。

我们也可以把用户和用户组比喻成我们的家庭一样。家庭成员就相当于用户,而这个家就相当于一个组。家庭成员具有一些相同的权限。如进入家门,看电视等等。但家庭成员之间还是有个人隐私的,如个人日记等等。这些是家庭其他成员所没有的权限。那么这个家庭之外的,我们都称为其他(other)。

用户(user)和用户组(group)相关的配置文件

Linux系统上面的用户是如何登陆到计算机并取得shell的环境来工作呢?当你输入账号密码后,系统帮你处理了哪些事情呢?
你可以这样理解
用户在计算机前面利用tty1~tty7的终端机提供的login接口,并输入账号与密码后才能够登入。也可以通过SSH进行远程登陆。
当输入账号密码时,系统会先查找/etc/passwd里面是否有你输入的账号?如果没有则跳出,如果有的话则将该账号对应的UID与GID(在/etc/group中)读出来,另外,该账号的家目录与shell也一并读出。然后进入/etc/shadow里面,找出对应的账号与UID,然后核对一下你刚刚输入的密码与里面的密码是否相符,如果一切都没有问题,那么就能登陆系统了。
有些人可能会问了,你是怎么知道系统会查找哪些文件的呢?下面我们对这些文件来个解析,我想大家就会明白了。

与用户(user)相关的配置文件

/etc/passwd    用户(user)的配置文件;
这个文件是这样的:每一行都代表一个账号,有几行就代表有几个账号在你的系统中,不过需要特别留意的是,里面很多账号本来就是系统正常运作所必须要的,我们可以简称他为系统账号, 例如 bin, daemon, adm, nobody 等等。这个就是文章开头说的系统帐户类。这个文件里面,每一行使用“:”分隔开,共有七个栏位
这个文件格式如下

passwd
注:
1、UID为0就表示管理员ROOT,他有最高的权限。如果你想把某个用户调整成系统的管理员ROOT的时候,可以直接把这个用户的UID改成0。所以说,系统的超级管理员不一定只有ROOT。但还是不建议把其他的用户UID改成0哦!
2、系统默认把UID从1~499做为系统的帐户使用。这主要是出于安全方面的考虑,系统上的服务,应尽可能的拥有较小的限制运行,而且这些帐户应该是不能登陆系统(/sbin/nologin)的。
在这个系统帐户中,还分
1~99:由Linux系统自行建立的系统账号;
100~499:若用户有系统账号需求时,可以使用的账号UID。
3、UID从500~65535是一般用户所使用的UID,其实现在系统最多能提供的UID为2的32次方-1(4294967295)个。

/etc/shadow 用户(user)影子密码文件;
这个文件也和passwd的格式差不多,也是用“:”分隔,只是代表的意义稍有不同。

showd
这个文件的格式如下

注:
1、因为这个文件的特殊性(是放置密码的地方),所以他的权限只有一个R权限(权限的问题,我们后面再来学习,这里先了解)。
2、在密码栏前面加上个!或*,通过改变密码字段长度,就会让密码暂时失效了,也就是说,禁止了某个用户的登陆权限了。
3、在RHEL6中,加密的算法和以前的版本也不一样了,加密后的字段长度也增加了很多。
4、计算某个日期的累加天数,我们可以通过echo $(($(date --date="2011/01/06" +%s)/86400+1))来计算。其中2011/01/06就是想计算的日期,86400为每一天的秒数,%s为1970/01/01 以来的累积总秒数,加上1表示补齐1970/01/01当天。

说了这么多,大家可能还是很模糊,没有关系,我们再来看一下例子。
shadow_example

14980是:2011/01/06
第一和第二个字段:用户名和密码这个我相信大家都明白,只是大家可能会怀疑,密码全不会被翻译成明文,这一点放心,因为相同的密码,经过系统加密后的密码也是不一样的。所以说,由密码反推回明码那不是一件容易的事。
第三个字段14980:表示的是最近一次更改密码的日期2011/01/06
第四个字段3:能够再次修改密码的时间是3天以后,也就是说2011/01/09前,opser不能修改自己的密码。
如果说用户要改自己的密码,那么就会出现下面的提示
You must wait longer to change your password
passwd: Authentication token manipulation error

第五个字段30:密码过期日期在30天后(2011/01/06+30=2011/02/06)。也就是说,在2011/02/06这一天密码就过期了。但如果用户在2011/01/09~2011/02/05这期间改过了密码(为什么不是从2011/01/06开始?因为我们限制了3天内不容许修改密码),由于在更改密码的时候,第三个字段也随之改变,那么这个30天也会随之向后推。因为这个数值是参考第三个字段的。
第六个字段7:是密码过期日前的7天会提示用户密码快要过期。
第七个字段5:如果说用户到2011/02/06还是没有修改密码,那么这个密码还没有过期,还有5天的宽限。好就是说,在2011/02/11前还是可能登陆的,但系统会强制你输入旧密码和新密码。如果说到了2011/02/11还是没有修改的话,那么密码就失效了。
第八个字段15005:无论前面如何限制,只要到了15005=14980+25=2011/01/06+25=2011/01/31这一天,这个帐户就无效了。
我想通过上面的说明,大家对这个文件的意义应该很明白了吧!

 

与用户组(group)相关的配置文件

/etc/group 用户组(group)配置文件;
这个文件的格式如下
group

/etc/gshadow 用户组(group)的影子文件;
这个文件的格式如下
gshdow

这两个文件的格式和意义与用户的相关配置文件非常相似,在这里就不做更多的说明了,如果想了解更多,那就可以通过man来自己学习吧。

注:/etc/gshadow这个文件中的密码栏上面是“!”时,表示该用户组不具有用户组管理员。gshadow 最大的功能就是建立用户组管理员。

本文关键字:一天一点,学习Linux,user,group,用户,用户组

1 条留言  访客:1 条  博主:0 条

  1. avatar 水上清风

    RHEL 6 用户加密不再使用MD5 而是开始使用SHA512 .

给我留言

Copyright © 羽飞博客 保留所有权利.   Ality主题 皖ICP备14013844号-1

用户登录