Linux用户配置文件与用户管理




1-用户配置文件

为什么要学习用户配置文件

越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。在Linux中主要是通过用户配置文件来查看和修改用户信息。

由于在Windows上我们一直都是使用root权限进行操作的,并且Windows在管理用户时有一套完整地图形界面,这就导致了我们对系统管理基本上没有什么了解。
但对于Linux来说,服务器的安全性的要求 使我们需要对Linux中的系统管理有一个基本的认识。而且作为服务器使用的Linux是不存在图形界面的,所以我们需要对Linux中所有用户的信息存放的位置和原理有一个大概的了解。

当然还有一个更重要的理由:很多时候对用户进行更改时,必须要修改用户的配置文件才能永久生效(很多命令只能进行单次修改——重启就失效了)。

1.1-用户基本信息文件

文件所在路径:/etc/passwd
此文件内容大致为:
Linux用户配置文件与用户管理


这明显是看不懂的,所以我们使用“man”帮助命令(最小化安装的Linux可能需要安装“man-pages”包才可使用此命令)。 命令为:

man 5 passwd (5的意思是查看配置文件的帮助)

然后你会找到这么一行内容:
Linux用户配置文件与用户管理


字段解释(字段间使用“:”号分隔):

  • 第1字段的“name”表示用户名。

  • 第2字段的“password”:代表了用户的密码标识——表示这个用户登录时是需要密码的。如果把“x”去掉,那么系统就会认为此用户不需要密码(此用户可以直接本地登录)。换句话说它表示的不是真正的密码,真正的密码保存在经过加密的“/etc/shadow”文件中(只有root用户能查看,下面会介绍)。因为直接把密码保存在“/etc/passwd”中的话,密码很容易被别人查看。

  • 第3段的“UID”:UID是用数字表示的,0表示超级用户,1-499表示系统用户(伪用户,一旦删除这些用户系统会直接崩溃),500-65535表示普通用户。

  • 第4字段的“GID”:表示用户的“初始组ID”1。每个用户的初始组有且只能有一个,不建议大家修改;但每个用户的附加组可以有多个。

  • 第5字段的“GECOS”:用户说明,可以理解为备注。

  • 第6字段的“directory”:家目录,即用户的初始登录位置。其路径是固定的,普通用户的路径为“/home/用户名/”,root用户的路径为“/root/”。

  • 第7字段的“shell”:登录之后的shell。系统用户登入的shell是“/sbin/nologin”,所有需要登录的用户所登入的shell都是“/bin/bash”。

1.2-影子文件

文件所在路径:/etc/shadow
此文件内容大致为:
Linux用户配置文件与用户管理



字段解释(字段间使用“:”号分隔):

  • 第1字段:用户名。

  • 第2字段:经过SHA512加密算法加密之后的密码。如果此字段的内容是“!!”或“*”,则代表此用户没有密码,不能登录。

  • 第3字段:密码的最后一次修改日期。使用1970年1月1日作为标准时间,每过一天时间戳加1。

  • 第4字段:两次密码的修改间隔。如,此数字是10的话,就代表修改密码后,10天之内不嫩个修改密码。

  • 第5字段:密码的有效期。默认99999(天)。

  • 第6字段:密码到期时的警告时间。如,此数字是7的话,就代表密码到期前的最后7天,系统每天都会提示你密码要到期了(提醒你修改密码)。

  • 第7字段:密码过期后的宽限天数。如,0代表过期后密码立即失效——用户不能登录了。

  • 第8字段:账号的失效时间。不管第5字段中设置的时间有多长,只要到了设定的时间,此账号就会失效。此项必须使用时间戳表达。

查看当前时间戳的命令:date -d “1970-01-01 16066 days”;把日期换算为时间戳的命令:echo (((((date --date=“年/月/日”+%s)/86400+1))。

  • 第9字段:保留。



2-用户管理命令

2.1-添加用户命令useradd

语法格式:useradd [选项] 用户名
常用选项:

选项 含义
-u UID 手动指定用户的UID
-d 家目录 指定用户的家目录
-c 用户说明 指定用户的说明
-g 组名 指定用户的初始组
-G 组名1,组名2 指定用户所属的附加组,组要事先存在。附加组要实现存在
-s shell 指定用户登录时所使用的shell,默认为/bin/bash



2.2-修改用户密码命令passwd

语法格式

root用户和普通用户(修改自己的密码):passwd
root用户:passwd [选项] 用户名

常用选项:

选项 含义
-S 查询指定账户密码是否被锁。若被锁返回"password locked.“若密码没有被锁定则显示"password set,MD5 cryt.”
-l 通过锁定密码的方式,可以暂时禁止用户登录系统
-u 解锁用户
–stdin 可配合管道符把输出的数据作为用户的密码。如,把密码设为设为123的语法为:echo “123” ¦ passwd --stdin lamp



2.3-修改用户信息和密码状态

修改用户信息

语法格式:usermod [选项] 用户名
常用选项:

选项 含义
-c 备注信息 修改用户的说明信息,即修改 /etc/passwd 文件目标用户信息的第5个字段
-d 主目录:修改用户的主目录,即修改 /etc/passwd 文件中目标用户信息的第6个字段,需要注意的是,主目录必须写绝对路径
-e 日期:修改用户的失效曰期,格式为 “YYYY-MM-DD”,即修改 /etc/shadow 文件目标用户密码信息的第 8 个字段
-u UID :修改用户的UID,即修改 /etc/passwd 文件目标用户信息的第3个字段(UID)
-G 组名:修改用户的附加组,其实就是把用户加入其他用户组,即修改 /etc/group 文件
-l 用户名 修改用户名称
-L 临时锁定用户(Lock)
-U 解锁用户(Unlock),和 -L 对应

修改用户密码状态

语法格式:change [选项] 用户名
常用选项:

选项 含义
-l 列出用户的详细密码状态
-d 日期 修改 最后一次修改密码的日期(/etc/shadow 文件中的第3个字段)。常用命令:“chage -d 0 用户名”,意思是 指定用户在登录时必须要修改密码
-m 天数 修改密码最短保留的天数(/etc/shadow 文件中的第4个字段)
-M 天数 修改密码的有效期(/etc/shadow 文件中的第5个字段)
-W 天数 修改密码到期前的警告天数(/etc/shadow 文件中的第6个字段)
-i 天数 修改密码过期后的宽限天数(/etc/shadow 文件中的第7个字段)
-E 日期 修改账号失效日期(/etc/shadow 文件中的第8个字段)



2.4-删除用户与切换用户

删除用户

常用命令:userdel -r 用户名
“-r”选项的意思是在删除用户的同时删除用户的家目录。如果删除用户的同时不删除用户的家目录,那么家目录就会变成没有属主和属组的目录,也就是垃圾文件,所以一般情况下都要添加“-r”选项。

切换用户

语法格式:su [选项] 用户名
常用选项:

选项 含义
- 切换为另外一个用户时,连带用户的环境变量一起切换。不能省略,否则切换后会出现一些莫名其妙的错误——因为你环境变量没跟着一起切过去。
-c 仅切换用户执行一次命令,执行后自动切换回来,该选项后通常会带有要执行的命令。




3-用户组管理命令

3.1添加用户组——groupadd

功能描述:创建用户组
语法格式:groupadd [选项] 用户组名称
选项:“-g GID”。指定组ID。

3.2-修改用户组——groupmod

功能描述:修改用户组属性
语法格式:groupmod [选项] 组名
选项:

选项 含义
-g GID 修改组ID
-n 新组名 修改组名。如,groupmod -n 新组名 旧组名

groupdel

功能描述:删除用户组
语法格式:groupdel [要删除的用户组名]
如果要删除的组中包含了初始用户,那么这个组是不能被删除的。




  1. 初始组(也称“主组”)是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组;附加组是指用户可以加入多个其他的用户组并拥有这些组的权限,附加组可以有多个。 ↩︎