Linux用户和用户组的创建和管理
一. Linux用户身份概述
这篇文章会用到几个常用命令:cat,ll,tail,ls
(不理解cat的可以看我震惊! 面向新手最全面的Linux命令大全出炉了 这篇文章加深Linux命令的使用)。
ll
:查看文件权限
1.1 Linux用户介绍
- 设计Linux系统的初衷之一就是为了满足多个用户同时工作的需求,因此Linux系统必须具备很好的安全性。
- 安装centos 7操作系统时,特别要求设置root管理员密码,这个root管理员就是存在于所有类UNIX系统中的超级用户。它拥有最高的系统所有权。
- 虽然以root管理员的身份工作时不会受到系统的限制,但“能力越大,责任就越大”,因此一旦使用这个高能的root管理员权限执行了错误的命令可能会直接毁掉整个系统。
Linux用户有以下三类,每一个用户都有一个数值,称为UID
。
超级用户root | 系统用户 | 普通用户 | |
---|---|---|---|
权限 | 具有一切权限 | 为了满足相应的系统进程对文件属主的要求而建立的系统用户不能用来登录 | 由管理员赋予的一般权限 |
功能 | 管理系统的各项功能,如添加/删除用户、启动/关闭服务进程、开启/禁用硬件设备 | 功能:Linux系统正常工作所必需的内建的用户,例如:bin、daemon、adm、lp等 | 由管理员创建的用于日常工作的用户 |
UID | 0 | 1~999 | 从1000开始 |
前言
这是我听老师讲课做的笔记,考试要看的。 这是视频地址
作者:RodmaChen
关注我的csdn博客,更多Linux笔记知识还在更新
1.2 Linux用户相关文件
- Linux不像Windows 那样有专门的数据库用来存放用户的信息,Linux系统采用纯文本文件来保存账号的各种信息,其中最重要的文件有
/etc/passwd
、/etc/shadow
、/etc/group
这几个。- 账号的管理实际上就是对这几个文件的内容进行添加、修改和删除记录行的操作。
- Linux系统为了自己的安全,缺省情况下只允许超级用户更改它们。
/etc/passwd | 用户帐号信息保存在passwd文件中(重要) |
---|---|
/etc/shadow |
用户的加密口令保存在shadow文件中(重要) |
/home/teacher |
用户的宿主目录是home目录中与用户名称相同的目录 |
/etc/skel |
用户的初始配置文件来在skel目录(配置模版) |
/etc/group |
存放关于组的信息(重要) |
1.3 三个重要passwd,shadow,group文件的介绍
- passwd文件
(1)/etc/passwd
文件每一行都表示的是一个用户的信息;一行有7个段位;每个段位用:
号分割。
(3)每一段的解释:
账号名称 :密码 : UID : GID : 个人资料 : 主目录 : Shell
- 第一字段:用户名(也被称为登录名)
- 第二字段:密码;在例子中我们看到的是一个
x
,其实密码已被映射到/etc/shadow 文件中- 第三字段:UID ;用户ID
- 第四字段:GID;用户组的ID
- 第五字段:用户名全称,这是可选的
- 第六字段:用户的家目录所在位置;root 这个用户的家目录是/root
- 第七字段:用户所用SHELL 的类型,root用的是 bash ;所以设置为/bin/bash
- shadow文件
(1)在/etc/passwd文件中,有一个字段是用来存放经过加密的密码。我们先来看以下passwd文件的权限。
(2)可以看到任何用户对它都有读的权限。为了保证系统的正常运行和安全,Linux系统对密码提供了更多一层的保护,即把加密后的密码重定向到另一个文件/etc/shadow。
(3)Shadow文件一共有9个字段来表示跟密码有关的部分,每个字段用“:
”来分隔。
(4)每一段的解释
用户名:密码:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志字段说明
- 用户名:和/etc/passwd文件中相对应的用户名。
- 密码:存放加密后的口令(密码)。密码字段为“*”表示用户被禁止登录,为“!!”表示密码未设置,为“!”表示用户被锁定。
- 最后一次修改时间:用户最后一次修改口令的时间(从1970-1-1起计的天数)。
- 最小时间间隔:两次修改口令允许的最小天数。
- 最大时间间隔:口令保持有效的最多天数,即多少天后必须修改口令。
- 警告时间:从系统提前警告到口令正式失效的天数。
- 不活动时间:口令过期多少天后,该账号被禁用。
- 失效时间:指示口令失效的绝对天数(从1970-1-1开始计算)。
- 标志:未使用。
- group文件
(1)Linux的组有私有组、系统组、标准组之分。
- 私有组:建立账户时,若没有指定账户所属的组,系统会建立一个组名和用户名相同的组,这个组就是私有组,这个组只容纳了一个用户。
- 标准组:可以容纳多个用户,组中的用户都具有组所拥有的权利。
- 系统组:Linux系统正常运行所必需的,安装Linux系统或添加新的软件包会自动建立系统组。
(2 )组名:组的密码:GID:组成员
注:组的密码:设置加入组的密码,一般情况下不使用组密码,该字段通常没用
二. 创建Linux用户
2.1 添加Linux用户——adduser /useradd
-
使用
adduser /useradd
命令创建用户账户时,默认的用户家目录会被存放在/home
目录中,默认的Shell
解释
器为/bin/bash
,而且默认会创建一个与该用户同名的基本用户组。 -
语法格式:useradd [选项] 用户名
-
常用选项:
命令 | 功能 |
---|---|
-e |
账户的到期时间,格式为YYYY-MM-DD |
-u |
指定该用户的默认UID |
-d |
指定用户的家目录(默认为/home/username) |
-g |
指定一个初始的已存在用户基本组 |
-G |
指定一个或多个扩展用户组 |
-N |
不创建与用户同名的基本用户组 |
-s |
指定该用户的默认Shell解释器 |
- 实列:在系统中添加Linux用户test,观察添加用户后系统有什么变化?
(1)在/etc/passwd
文件中会看到增加了一行:
(2)在home目录下出现test同名宿主目录,test对/home/test
目录有所有权限,其他
用户无任何权限。
(3)在/etc/group
文件中也会增加一行:
(4)在/etc/shadow
文件中也会增加一行:
2.2 设置Linux用户密码——passwd
-
passwd命令
用于修改用户密码、过期时间、认证信息等 -
普通用户只能使用passwd命令修改自身的系统密码,而root管理员则有权限修改其他所有人的密码。更酷的是,root管理员在Linux系统中修改自己或他人的密码时不需要验证旧密码,这一点特别方便。
-
语法格式:passwd [选项] [用户名]
-
常用选项:
命令 | 功能 |
---|---|
-d |
使该用户可用空密码登录系统 |
-l |
锁定用户,禁止其登录 |
-u |
解除锁定,允许用户登录 |
-S |
显示用户的密码是否被锁定,以及密码所采用的加密算法名称 |
5.列
三. 管理Linux用户
3.1 设置Linux用户账号——usermod
-
usermod命令:
用于修改用户的属性
。用户的信息保存在/etc/passwd
文件中,可以直接用文本编辑器来修改其中的用户参数项目,也可以用usermod命令修改已经创建的用户信息,诸如用户的UID、基本/扩展用户组、默认终端等。 -
语法格式:usermod [选项] 用户名
-
常用选项:
选 项 | 功 能 |
---|---|
-c | comment 改变用户的注释,如:全名、地址、办公室电话、家庭电话等 |
-d | dir 改变用户的主目录 |
-e | YYYY-MM-DD 修改用户的有效日期 |
-L |
锁定用户密码,使密码无效。锁定用户禁止其登录系统 (常用) |
-U |
解除密码锁定,解锁用户,允许其登录系统(常用) |
-f days | 在密码到期的days天后停止使用账户 |
-g GID或组名 |
修改用户的所属基本组(常用) |
-G |
变更扩展用户组(常用) |
-l | name 更改账户的名称,必须在该用户未登录的情况下才能使用 |
-p | 密码 修改用户的密码 |
-s Shell | 修改用户的登录Shell |
-u UID | 改变用户的UID为新的值,改变用户的UID时主目录下所有该 用户所拥有的文件或子目录将自动更改UID,但对于主目录之 外的文件和目录只能用chown命令手工进行设置 |
3.2 删除Linux用户账号—— userdel
-
语法格式:userdel [选项] 用户名
-
常用选项:
选项 | 功能 |
---|---|
-f |
强制删除用户 |
-r |
删除用户时将用户主目录下的所有内容一并删除,同时删除用户的邮箱,对于用户在别的目录下所拥有的文件只能手工删除 |
- 如果我们确认某位用户后续不再会登录到系统中,则可以通过userdel命令删除该用户的所有信息。在执行删除操作时,该用户的家目录默认会保留下来,此时可以使用
-r
参数将其删除。
四. 创建与管理Linux用户组
4.1 创建Linux用户组——groupadd
-
为了能够更加高效地指派系统中各个用户的权限,在工作中常常会把几个用户加入到同一个组里面,这样便可以针对一类用户统一安排权限。
-
语法格式:groupadd [选项] 群组名
-
常用选项:
选项 | 功能 |
---|---|
-g GID |
指定新组的GID,默认值是已有的最大的GID加1 |
-r |
建立一个系统专用组,与-g不同时使用时,则分配一个1~999的GID |
-
列:
[root @localhost /root]#groupadd -g 1000 group1
- 1
表示添加一个新组,组ID为 1000 ,组名为group1
-
注意:上面已经介绍了普通用户
UID
是从1000开始的
4.2 管理Linux用户组——groupmod
-
groupmod命令 :用于修改组的属性
-
语法格式:groupmod [选项] 群组名
-
常用选项:
选项 功能 -g GID 指定组新的GID -n name 更改组的名字为name
4.3 删除Linux用户组—— groupdel
-
groupdel命令:删除指定名称的用户组帐号
-
语法格式:groupdel 群组名
-
注意!:需要从系统上删除群组时,可用groupdel指令来完成这项工作。倘若该群组中仍包括某些用户,则必须先删除这些用户后(删除用户上面说明了),方能删除群组。
五.不懂就问
本人小白第一次学Linux,事情是这样的,我之前测试时候创建了一个test文件(我也忘记是用户还是文件了,反正使用 userdel -r
删除不了),然后我使用 rm -rf
删除了文件test,可是还是不能使用adduser
创建test用户,提示用户已存在。
然后在我尝试删除也不行
用tail
查看也没有发现这个用户
有时候就查得到。。。。。。很奇葩
然后我添加一个test2用户,查了一下test又不见了,UID也是1001正常
可是就是不能创建用户test了。应该是我之前删除