用户管理

用户和用户组分类

用户分为三种以UID来区分

超级用户 UID = 0           在系统中拥有至高无上的权限.

系统用户 UID 1-499      bin,ftp,mail等,不具备登录系统的权利,却是系统运行不可缺少的.

普通用户 UID 500以上  管理员建立的用户.密码和权限都由管理员制定.

超级组 GID = 0

系统组 GID = 1-499

普通组 GID = 500以上

用户相关文件文件位置

  1. 用户信息 /etc/passwd

早起的linux 在密码列会存储一个加密后的密码,但是现在只是一个标记列了,实际的密码不放在这里了

用户名 密码控位键 用户UID 组GID 用户描述信息 用户家目录 用户默认shell root :x :0 :0 :root :/root :/bin/bash man :x :6 :12 :man :/var/cache/man:/usr/sbin/nologin czhn :x :1000 :1000 :czhn :/home/czhn :/bin/bash

  1. 用户组信息 /etc/group 用户名 密码密码空位 组id 附属组(加入的其他组) koala :x :1000 : infra :x :1002 :prometheus,grafana,loki,pigstyuser,dba

  2. 真正的密码 /etc/shadow 用户 密码 加密方式 加密盐 加密迭代次数 密码过期时间 密码锁定时间 密码创建时间 密码修改时间 user1 :$6$ZWqoztNi$8DZaXNASfMPUvK8q8WlgvlaXOqEfQxkEOO/NZSQ.hq3LPGZMyj61aqxwiP02W3BcZ.eJvlZWoaYUg8RJsdg4m1:16352:0:99999:7::: user2 :!! (说明没有密码) user3 :! (用户被禁用)

用户管理命令

添加用户

  1. useradd 用户名 useradd 是一个低级命令,更底层。适合精细控制的场景 相关参数 -u UID -d 家目录目录 一般用-d 就不用-m了 两个用一个就行 -m 自动创建家目录 -g GID -c 用户描述信息 -s 默认shell -p 密码

  2. adduser 用户名 adduser 是一个高级命令,适合一般场景

在centos中这两个命令差不多, 在Ubuntu中 adduser 命令是一个交互命令

  1. 将用户名添加到sudo组中,使他具有sudo 权限,现代的发行版中大多数使用这个方式进行sudo赋权 sudo usermod -aG sudo 新用户名

  2. 免密执行sudu

在 /etc/sudoers.d 目录添加文件

这个文件最好和用户名一致

例如用户名叫 user1 那么文件名就是 user1写入

%user1 ALL=(ALL) NOPASSWD:ALL

修改用户密码

passwd user1

修改用户属性

usermod 修改用户属性命令 -u UID -d 家目录 -g GID -s 指定用户shell -L 禁用用户user1 -U 启用用户user1

删除用户

userdel -r 删除用户及用户家目录

切换用户

su - user1 会修改到user1的环境变量

su user1 不会修改环境变量

sudo su 不需要密码切换到root用户

登录后的检查

whoami 查看当前用户身份 who 查看登录本机用户及来源ip w 查看登录用户在做什么 id 查看用户和查看用户所属的组 users 都有哪些登录用户

koala@HomeName:/path$ id koala
uid=1000(koala) gid=1000(koala) groups=1000(koala),4(adm),20(dialout),24(cdrom),25(floppy),27(sudo),29(audio),30(dip),44(video),46(plugdev),100(users),107(netdev),1001(docker)
koala@HomeName:/path$ users
koala
koala@HomeName:/path$ w
 15:09:06 up 15:07,  2 users,  load average: 0.01, 0.04, 0.00
USER     TTY      FROM             LOGIN@   IDLE   JCPU   PCPU  WHAT
koala             10.0.8.24        08:54   15:48m  0.00s  0.02s sshd: koala [priv]
koala    pts/1    -                Mon23   15:48m  0.01s  0.01s -bash
koala@HomeName:/path$ who
koala    pts/1        2025-05-19 23:21
koala@HomeName:/path$ whoami
koala

组管理命令

组添加

groupadd 组名称

groupadd -g 组编号 组名称

删除组

groupdel 组名称

管理组

  用法:gpasswd[-a user][-d user][-A user,...][-M user,...][-r][-R]groupname
  参数:
    -a:添加用户到组
    -d:从组删除用户
    -A:指定管理员
    -M:指定组成员和-A的用途差不多
    -r:删除密码
    -R:限制用户登入组,只有组中的成员才可以用newgrp加入该组
把user1用户加入到用户组group1 ----- gpasswd -a user1 group1
把user1用户从group1组中删除 ----- gpasswd -d user1 group1

物理机 忘记root密码

可以进单用户模式,方法为:

重启Linux系统,出现"5秒之内要按一下回车"的界面,然后输入字母"e",

选择第二行按字母"e"进入编辑模式,将光标移动到末尾输入"single"或数字"1"或字母"s",回车,

最后按字母"b"来启动.进入单用户模式,然后输入修改root密码的命令:passwd,修改好后重启系统就ok了

直接设置root密码, 不需要控制台交互

  1. 这个应该是红帽能用,不过没试过 echo “redhat” | passwd –stdin root

  2. 在ubuntu22.04实战使用过 echo “root:soft01”|chpasswd