Linux用户配置文件与用户管理
目录
1-用户配置文件
为什么要学习用户配置文件
越是对服务器安全性要求高的服务器,越需要建立合理的用户权限等级制度和服务器操作规范。在Linux中主要是通过用户配置文件来查看和修改用户信息。
由于在Windows上我们一直都是使用root权限进行操作的,并且Windows在管理用户时有一套完整地图形界面,这就导致了我们对系统管理基本上没有什么了解。
但对于Linux来说,服务器的安全性的要求 使我们需要对Linux中的系统管理有一个基本的认识。而且作为服务器使用的Linux是不存在图形界面的,所以我们需要对Linux中所有用户的信息存放的位置和原理有一个大概的了解。
当然还有一个更重要的理由:很多时候对用户进行更改时,必须要修改用户的配置文件才能永久生效(很多命令只能进行单次修改——重启就失效了)。
1.1-用户基本信息文件
文件所在路径:/etc/passwd
此文件内容大致为:
这明显是看不懂的,所以我们使用“man”帮助命令(最小化安装的Linux可能需要安装“man-pages”包才可使用此命令)。 命令为:
man 5 passwd (5的意思是查看配置文件的帮助)
然后你会找到这么一行内容:
字段解释(字段间使用“:”号分隔):
-
第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
此文件内容大致为:
字段解释(字段间使用“:”号分隔):
-
第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 [要删除的用户组名]
如果要删除的组中包含了初始用户,那么这个组是不能被删除的。
-
初始组(也称“主组”)是指用户一登录就立刻拥有这个用户组的相关权限,每个用户的初始组只能有一个,一般就是和这个用户的用户名相同的组名作为这个用户的初始组;附加组是指用户可以加入多个其他的用户组并拥有这些组的权限,附加组可以有多个。 ↩︎