前言
环境:centos7.9
Linux中添加用户和用户组主要涉及到useradd、usermod、passwd、chage、groupadd、groupmod命令,以及三个文件:/etc/passwd、/etc/shadow、/etc/group文件
useradd命令格式
useradd [选项] 用户名
常用选项:
-g 指定用户的用户主组,默认会创建一个与用户名同名的主组(查看用户属于哪个组直接从passwd文件查看)
-G 指定用户的附加组 (查看用户属于哪个附加组直接从group文件查看)
-u 指定用户ID,即指定用户标识符((ID是唯一的),不想使用系统默认指定的ID则可以使用-u指定ID
-d 自定义用户的家目录,不要系统默认创建的家目录
-m 创建用户的家目录,不写也会默认创建一个同名的家目录
-M 不创建家目录
-c 注释,注释信息,可写可不写
-s 指定用户登录的shell,不写默认是/bin/sh
-r 创建一个系统账号,centos7系统账号的UID是从1-999之间的,centos6是从1-499之间的
常用格式:
useradd wang #创建wang用户和自动默认创建同名的wang组,wang用户就属于wang组,默认家目录就是/home/wang,默认分配用户ID
useradd -M -s /bin/false nginx #创建一个不能登录的nginx用户
useradd -g 1001 -G 1002 -u 8989 -d /home/wangbing -s /bin/bash wang
usermod命令格式
usermod [选项] 用户名
常用选项:
-g 修改用户的用户组,(查看用户属于哪个组直接从passwd文件查看)
-G 修改用户的附加组 (查看用户属于哪个附加组直接从group文件查看)
-u 修改用户ID,即修改用户标识符
-l 修改用户名(usermod -l new_name user_name)
-s 修改用户登录的shell
-L 锁住用户
-U 解锁用户
常用格式:
usermod -l laowang wang #将用户名wang改为laowang,仅仅是修改用户名,家目录名wang或默认组wang并没有被修改
usermod -L wang #锁住用户wang
userdel命令格式
userdel [选项] 用户名
常用选项;
-f #强制删除,及时用户正在登录
-r #删除用户,其家目录和mail spool 也一并删除
常用写法:
userdel -rf wang #与wang用户有关的都强制删除掉
user wang #仅仅删除了用户,但其家目录和mail spool 还在
passwd命令格式
创建用户后,用户处于锁定状态,需要为其设置登录密码
passwd [选项] 用户名
常用选项:
-d 删除用户密码,删除后用户不需要输入密码就能登录,但如果是sshd远程登录的话还需要看sshd是否允许空密码登录,用户登录后就能使用passwd 自己设置密码了。
-w 口令要到期提前警告的天数
-k 更新只能发送在过期之后
-l 锁住密码不能登录,即停止账号使用
-u 启用已被停止的账户
-S 显示密码信息
-x 指定口令最长存活期
-i 口令过期后多少天停用账户
常用命令:
passwd 用户名
chage命令格式
chage:密码失效是通过此命令来管理的
基本格式:chage [选项] 用户名
常用选项:
-d 指定密码最后修改日期(-d 0 就表示下次登录立即得修改密码)
-E 密码到期的日期,过了这天,此账号将不可用。0表示马上过期,-1表示永不过期。
-I (大写的字母i) 密码过期后,锁定账号的天数
-l(list) 列出用户以及密码的有效期
-m 密码可以更改的最小天数。为零代表任何时候都可以更改密码。
-M 密码保持有效的最大天数。
-W 密码过期前,提前收到警告信息的天数
创建一个新用户并使用初始密码登录后立即修改密码
useradd wang #使用添加用户
passwd wang #使用设置用户密码
chage -d 0 wang #强制用户密码过期
groupadd 命令
groupadd [选项] 组名
常用选项:
-g 指定用户组ID,不指定默认从500之后递增
-r 创建一个系统用户组
常用命令:
groupadd wang
groupadd -r sa
groupmod命令
groupmod [选项] 组名
常用选项:
-g 修改组ID
-n 修改组名
常用命令:
group -g 9000 -n new_name administrator
groupdel命令
groupdel [选项] 组名
常用选项:
-f 强制删除组,即使该组是某个用户的所属组
常用命令:
groupdel wang
报错:显示组wang是用户wang的所属主组,删除失败,解决办法如下:
1、先删除用户userdel -rf wang 在执行删除组 groupdel wang
2、 改变用户wang的属组 usermod -g 100 wang 在执行删除组 groupdel wang
3、直接强制删除组 groupdel -f wang 但使用wang登录时就会报错显示找不到所属组
用户信息/etc/passwd文件
千万不要认为passwd文件是存放用户密码的,其实始passwd是存放用户相关信息的一个文件,vim /etc/passwd如下图:
passwd文件的格式如下所示,每个之间是用冒号间隔:
用户名:X:UID:GID::家目录:解释器shell
第1列:第1列用户名是指用户的名称,登录时就是用该用户名登录,用户名是唯一的;
第2列:第2列是个占位符X,其实是很久以前Linux的密码占位符,后来密码被分到shadow文件了,但占位符还在,所以就用x表示了;
第3列:第3列表示UID,是用户的ID,即用户标识符,UID是唯一的;
第4列:第4列表示GID,是指用户所属组的组ID,每个用户必须属于一个主组;
第5列:第5列是注释信息,这里是空的表示没有注释信息,useradd -c 参数就是添加用户注释信息;
第6列:第6列是家目录,是指用户登录的默认目录;
第7列:第7列解释器shell,是指用户登录后使用哪个shell进行解析。
用户密码/etc/shadow文件
/etc/shadow文件才是真正存放用户密码的文件,其格式如下:
用户名:加密密码:最后一次修改时间:最小修改时间间隔:密码有效期:密码需要变更前的警告天数:密码过期后的宽限时间:账号失效时间:保留字段
用户组信息/etc/group文件
/etc/group文件是存储用户组相关的信息,其格式如下:
组名:X:组ID:组内用户名
组名表示用户组的名称;X表示密码占位符,虽然用户组可以设置密码,但绝大多数情况下都不设置密码,因为Centos已经将该功能弱化,但占位符X还是保留下来了;组ID就是组的标识符,每一个组ID必须是唯一的;组内用户名表示该组中有哪些用户,反过来说就是哪些用户的附加组就是该组。
总结;
useradd 创建用户
usermod 修改用户的属性
userdel 删除用户
passwd 设置新用户的密码
chage 管理密码的有效性 chage -d 0 wang 可以设置新用户首次登录后立即修改初始密码
groupadd 添加用户组
groupmod 修改用户组
groupdel 删除用户组
/etc/passwd 该文件存储用户相关信息
/etc/shadow 该文件存储用户密码
/etc/group 该文件存储用户组相关信息