Linux 用户和组的概念
目录
用户和组
Linux基于用户身份对资源访问进行控制
假设:你有一套非常好的漫画,同宿舍的及班里班外的人都想看 ?你怎么办呢 ?
一种办法是对所有人都赋予相同的权限,但是这样漫画主人可能就比较吃亏;
还一种办法是对所有人根据远近亲疏授予不同的权限,你自己和同宿舍的可以多看,本班和外班的可以少看。这就是Linux将用户划分为不同类别的缘由。
用户的类别
Linux下的用户可以分为三类:超级用户、系统用户和普通用户。
超级用户
超级用户的用户名为root,它具有一切权限,只有进行系统维护(例如:建立用户等)或其他必要情形下才用超级用户登录,以避免系统出现安全问题。
普通用户
而普通用户是为了让使用者能够使用Linux系统资源而建立的,我们的大多数用户属于此类。
系统用户
系统用户是Linux系统正常工作所必需的内建的用户,主要是为了满足相应的系统进程对文件属主的要求而建立的,系统用户不能用来登录,例如:bin、daemon、adm、lp等用户。
每个用户都有一个数值,称为UID。超级用户的UID为0,系统用户的UID一般为1~499,普通用户的UID为500~60 000之间的值。
什么是组
组是Linux对用户的划分。
用户组(group)就是具有相同特征的用户(user)的集合体;比如有时我们要让多个用户具有相同的权限,比如查看、修改某一文件或执行某个命令,这时我们需要用户组,我们把用户都定义到同一用户组。这样用户组下的用户对该文件或目录都具有相同的权限。
举例:对于一份时间表
一些用户只能查看时间表的内容而不能修改 另一些用户具有读写时间表的权限
这样我们就可以把用户划分为两组,一组只能读这个文档,一组可以读、可以写。
初始组、系统组和标准组
Linux的组有私有组、系统组、标准组之分。建立账户时,若没有指定账户所属的组,系统会建立一个组名和用户名相同的组,这个组就是私有组,这个组只容纳了一个用户。而标准组可以容纳多个用户,组中的用户都具有组所拥有的权利。系统组是Linux系统正常运行所必需的,安装Linux系统或添加新的软件包会自动建立系统组。
Linux系统关于组的信息存放在文件/etc/group中
组标识号: GID(Group Identify,组标识号)
关联知识: UID(User Identity,用户标识号) GID(Group Identify,组标识号)
用户和组的关系
用户和用户组的对应关系是:一对一、多对一、一对多或多对多;
- 一对一:某个用户可以是某个组的唯一成员;
- 多对一:多个用户可以是某个唯一的组的成员,不归属其它用户组;比如beinan和linuxsir两个用户只归属于beinan用户组;
- 一对多:某个用户可以是多个用户组的成员;比如beinan可以是root组成员,也可以是linuxsir用户组成员,还可以是adm用户组成员;
用户和组文件
用户帐号文件 —— passwd
用于保存用户的帐号基本信息
文件位置:/etc/passwd
每一行对应一个用户的帐号记录
[root@localhost ~]# tail -2 /etc/passwd sabayon:x:86:86:Sabayon user:/home/sabayon:/sbin/nologin student:x:500:500:Student User:/home/student:/bin/bash
- 字段1:用户帐号的名称
- 字段2:用户密码字串或者密码占位符“x”
- 字段3:用户帐号的UID号
- 字段4:所属基本组帐号的GID号
- 字段5:用户全名
- 字段6:宿主目录
- 字段7:登录Shell信息
cat /etc/passwd查看所有的用户信息,详情如下图
从文件中我们可以看到,/etc/passwd中一行记录对应着一个用户,每行记录又被冒号(:)分隔为7个字段,其格式和具体含义如下:
用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell
用户帐号文件 —— shadow
由于文件是任何用户都有权限读取的,所以用户口令很容易被黑客盗取,针对这种情况,linux使用影子文件/etc/shadow,来提高口令的安全性。
/etc/shadow用于保存密码字串、密码有效期等信息
文件位置:/etc/shadow
每一行对应一个用户的密码记录
[root@localhost ~]# tail -2 /etc/shadow sabayon:!!:15495:0:99999:7::: student:$1$po/zD0XK$4HSh/Aeae/eJ6dNj1k7Oz1:15495:0:99999:7:::
- 字段1:用户帐号的名称
- 字段2:加密的密码字串信息
- 字段3:上次修改密码的时间
- 字段4:密码的最短有效天数,默认值为0
- 字段5:密码的最长有效天数,默认值为99999
- 字段6:提前多少天警告用户口令将过期,默认值为7
- 字段7:在密码过期之后多少天禁用此用户
- 字段8:帐号失效时间,默认值为空
- 字段9:保留字段(未使用)
思考:哪些文件是用户账号文件?
用户帐号的初始配置文件
文件来源:
新建用户帐号时,从 /etc/skel 目录中复制而来
主要的用户初始配置文件
~/.bash_profile:用户每次登录时执行 ~/.bashrc:每次进入新的Bash环境时执行 ~/.bash_logout:用户每次退出登录时执行
[root@maxin ~]# cat ~/.bash_profile
# .bash_profile # Get the aliases and functions if [ -f ~/.bashrc ]; then . ~/.bashrc fi # User specific environment and startup programs PATH=$PATH:$HOME/bin export PATH
组帐号文件 — group、gshadow
与用户帐号文件相类似
/etc/group:保存组帐号基本信息 /etc/gshadow:保存组帐号的密码信息
[root@localhost ~]# grep "adm" /etc/group sys:x:3:root,bin,adm adm:x:4:root,adm,daemon