Linux用户管理
最近使用过程中发现一些用户与用户组管理的遗漏,借此机会梳理内容。
创建用户的过程会生成用户名对应组名,并生成相应用户UID与组GID,ID是操作系统对于用户识别的关键信息,用户名是为了方便人类识别,通过iduser命令可以查看自己的UID/GID,当用户ID=0时操作系统会认为此用户为超级管理员,root默认ID=0
用户信息
用户基本信息存放在/etc/passwd
密码单独以加密形式存放在/etc/shadow
从passwd
/etc/paswd中:为分隔符现已root为例进行解释:
root:X:0:0:root:/root:/bin/bash
第一段root:用户名为root
第二段X:此用户密码,X为占位符号,真正的密码在/etc/passwd中经过不可逆加密的哈希值加盐储存
第三段0:此为用户UID
第四段0:此为用户GID
第五段root:此为用户说明信息
第六段:/root:此为用户家目录,普通用户在/honme/user
第七段:/bin/bash此为用户的默认shell类型
Tips: Centos6中0-499
Centos7/Centos8中0-999
为系统用户储备ID用户无法使用
/etc/shadow中:为分隔符现以root为例进行解释:
root:$6 0 I c V D R O O 0IcVDROO 0IcVDROOKJFUDUVqtQpGlVqJblbp5Xl9GZoyHexpdEGoWjI5Ui4iCxlXUsi9qEhw8zqqxKHFsTd0azRsyYK3uQ2TsIAYH/:18210:0:99999:7:::
第一段root:代表这行的密码属于root
第二段:$作为分隔符分为三段,第一段代表加密方式;第二段代表盐值;第三段代表最终密码,因为是单项散列值加密,目前人类科技是无法计算还原的,所以可以明文储存
第三段18210:密码修改时间距离Unix诞生190年1月1号过了多少天
第四段0:两次修改密码间隔天数;0代表随时可修改
第五段99999:代表密码有效期九万天,273年的话目前人类科技下是够用了吧
第六段7:273年之后密码将要过期的前七天提醒用户更改密码
第七段在空着:密码过期后还可以使用多久,空代表过期你也可继续登陆使用
第八段在空着:代表1970.1.1到哪天用户账号不可登陆,空代表一直可使用登陆
第九段在空着:保留字段,为应付以后人类科技
管理用户
- useradd [选项]登陆信息
- usermod [选项]登陆信息
- userdel [选项]登陆信息
useradd 常用选项:
-U xxx指定新建用户UID为XXX
-O不检查UID唯一性与-U配合使用
-g XXX指定GID为XXX
usermod常用选项:
-u XXX 设定XXX为新UID
-g XXX 设定XXX为新主要组
userdel常用选项:
-f xxx 强制删除用户xxx
-r xxx 删除用户xxx家目录与邮箱
组信息
用户组配置信息存放在/etc/group
用户组密码相关信息在/etc/gshadow
/etc/group中:为分隔符现以root为例进行解释:
root:X:0:
第一段root:代表组名
第二段X:代表组密码,X为占位符,真正密码以单向不可逆加密加盐存在/etc/gshadow
第三段0:代表组编号
第四段在空着:代表属于此附加组的用户列表多个之间用逗号分隔
/etc/gshadow中:为分隔符现以root为例进行解释:
root:::
第一段root:代表组名
第二段在空着:组管理密码,空代表没有组管理密码!开头表示被锁定
第三段在空着:该组管理员用户账号
第四段在空着:附加组用户列表,若有,多个之间以逗号分隔
- groupadd [选项]登陆信息
- groupmod [选项]登陆信息
- groupdel [选项]登陆信息
groupadd 常用选项:
-g XXX 设定XXX为新GID
groupmod 常用选项:
-n xxx:AAA 修改XXX组名为AAA
-g xxx:AAA 修改GIDXXX为GIDAAA
groupmems [选项][action]参数
-g xxx 更改为XXX组
-a xxx 加入xxx组
-l 显示组成员列表
-p 清空所有组内人员
密码管理
passwd[OPTIONS] UserName:
passwd xxx 修改用户XXx密码
passwd [选项]username
-U解锁指定账户
-d删除指定用户密码
-e强制用户下次修改面膜
如果单独执行passwd则修改当前登陆用户密码
useradd aaa ; echo 12341234 |passwd --stdin aaa
useradd aaa代表新建用户aaa
echo 12341234|代表将echo标准输出的12341234输入管道准备作为用户aaa密码
passwd --stdin aaa代表接受了管道的12341234并将aaa密码改为aaa
批量新建用户可以
newusers
passwd格式文件批量创建用户
chpasswd批量修改口令