Linux 零基础速查:看完就能上手的基础命令合集5
Linux 零基础速查:看完就能上手的基础命令合集5
Linux 用户和组管理
passwd 文件
/etc/passwd 文件保存操作系统登录用户信息。每行包含一个登录用户信息,以冒号分隔七个域。
格式:
name:password:UID:GID:GECOS:directory:shell
示例:
laoma❌1000:1000:software admin:/home/laoma:/bin/bash
解释如下:
-
name:用户登录名
-
password:用户密码,以x表示
-
UID:用户ID
-
GID:用户主组ID
-
GECOS:用户描述信息,通常为用户的真实姓名
-
directory:用户主目录,启动shell时的工作目录,默认位于/home/username
-
shell:用户打开终端时运行的程序,默认是shell。
group 文件
组是用户的集合,组中用户继承组权限。与用户一样,组具有组名称以使其更易于使用。系统通过分配给它们的唯一标识号,组ID或GID来区分组。
/etc/group 文件保存操作系统组信息。每行包含一个组信息,以冒号分隔4个域。格式:
group_name:password:GID:user_list
示例:
[laoma@centos7 ~]$ grep wheel /etc/group
wheel❌10:laoma
解释如下:
-
group_name:组名称
-
password:组密码,用x表示
-
GID:组ID,唯一表示组
-
user_list:作为补充的成员
本地用户管理
whoami 命令
whoami命令可以查看当前终端中登录的用户
[root@CentOS7 ~ 20:43:44]# whoami
root

who命令
who命令可以查看当前系统中所有终端上登录的用户,以及用户登录的时间。
[gzk@CentOS7 ~ 20:46:36]$ who
gzk :0 2026-07-19 20:28 (:0)
gzk pts/0 2026-07-19 20:28 (10.1.8.1)
root pts/1 2026-07-19 20:33 (10.1.8.1)

useradd 命令
作用是用来创建用户的
[root@CentOS7 ~ 20:49:46]# useradd user01
[root@CentOS7 ~ 20:49:56]# cat /etc/passwd | grep user01
user01:x:1001:1001::/home/user01:/bin/bash
自定义参数添加用户
[root@CentOS7 ~ 20:50:22]# useradd -u 8888 -d /opt/user02 -c "user for software manage" -g wheel -s /sbin/nologin user02
[root@CentOS7 ~ 20:54:38]# cat /etc/passwd | grep user02
user02:x:8888:10:user for software manage:/opt/user02:/sbin/nologin
# -u uid
# -d 用户的家目录
# -c 描述信息
# -g 用户的主组
# -s 用户shell程序


usermod命令
作用是可以用来修改用户的属性
[root@CentOS7 ~ 20:54:48]# usermod user02 -u 1008 -md /home/user02 -s /bin/bash
[root@CentOS7 ~ 21:07:58]# cat /etc/passwd | grep user02
user02:x:1008:10:user for software manage:/home/user02:/bin/bash
[root@CentOS7 ~ 21:08:19]# ls -d /home/user02
/home/user02
添加补充组,如果没有-a选项,则代表将补充组设置为user01,原先的补充组就被覆盖了。
[root@CentOS7 ~ 21:08:48]# id user02
uid=1008(user02) gid=10(wheel) 组=10(wheel)
[root@CentOS7 ~ 21:11:52]# usermod -aG user01 user02
[root@CentOS7 ~ 21:11:58]# id user02
uid=1008(user02) gid=10(wheel) 组=10(wheel),1001(user01)


userdel命令
userdel命令是用来删除用户的
[root@CentOS7 ~ 21:14:25]# useradd user03
[root@CentOS7 ~ 21:17:37]# id user03
uid=1010(user03) gid=1010(user03) 组=1010(user03)
[root@CentOS7 ~ 21:17:44]# cat /etc/passwd | grep user03
user03:x:1010:1010::/home/user03:/bin/bash
[root@CentOS7 ~ 21:18:10]# userdel user03
[root@CentOS7 ~ 21:18:19]# cat /etc/passwd | grep user03
[root@CentOS7 ~ 21:18:22]# id user03
id: user03: no such user

本地组管理
groupadd 命令
作用是用来创建用户组的
[root@CentOS7 ~ 21:24:00]# groupadd admin
[root@CentOS7 ~ 21:24:11]# cat /etc/group | grep admin
printadmin:x:997:
admin:x:1010:
-g :设置组id
[root@CentOS7 ~ 21:24:29]# groupadd sysadmin -g 2000
[root@CentOS7 ~ 21:26:30]# cat /etc/group | grep sysadmin
sysadmin:x:2000:


groupmod 命令
作用是可以用来修改用户组的属性
修改组名称
[root@CentOS7 ~ 21:26:40]# groupmod -n admins admin
[root@CentOS7 ~ 21:28:41]# cat /etc/group | grep admins
admins:x:1010:
修改组id
[root@CentOS7 ~ 21:28:49]# groupmod -g 2002 admins
[root@CentOS7 ~ 21:30:00]# cat /etc/group | grep admins
admins:x:2002:


groupdel 命令
作用是可以用来删除用户组
[root@CentOS7 ~ 21:30:03]# cat /etc/group | grep sysadmin
sysadmin:x:2000:
[root@CentOS7 ~ 21:31:54]# groupdel sysadmin
[root@CentOS7 ~ 21:32:00]# cat /etc/group | grep sysadmin

groupmem 命令
可以对用户组里的用户进行修改
添加成员
[root@CentOS7 ~ 21:35:06]# groupmems -g admins -a gzk
[root@CentOS7 ~ 21:35:24]# groupmems -g admins -l
gzk
[root@CentOS7 ~ 21:35:26]# id gzk
uid=1000(gzk) gid=1000(gzk) 组=1000(gzk),2002(admins)
删除成员
[root@CentOS7 ~ 21:35:34]# groupmems -g admins -d gzk
[root@CentOS7 ~ 21:36:32]# groupmems -g admins -l
[root@CentOS7 ~ 21:36:42]# id gzk
uid=1000(gzk) gid=1000(gzk) 组=1000(gzk)
清空组中所有成员
[root@CentOS7 ~ 21:37:51]# groupmems -g admins -a gzk
[root@CentOS7 ~ 21:38:18]# groupmems -g admins -a zhangsan
[root@CentOS7 ~ 21:38:23]# groupmems -g admins -l
gzk zhangsan
[root@CentOS7 ~ 21:38:27]# groupmems -g admins -p
[root@CentOS7 ~ 21:38:37]# groupmems -g admins -l



管理用户密码
shadow 文件
/etc/shadow 文件保存操作系统登录用户密码信息。
示例:
[root@CentOS7 ~ 21:38:39]# cat /etc/shadow | grep gzk
gzk:666XLzba9XNZt6EorVJ$mCrdcHZhB3YfOY9PBDgPo/XEo5sSn9qupAts4B419WsCJ4P0paywNwTm2p/PsDBOz4IvE0nm6vk6Xx/YNdVvh/::0:99999:7:::
解释如下:
- login name:用户登录名。
- encrypted password:加密的密码。
- date of last password change:上一次密码更改日期,以距离1970-1-1过去的天数表示。设置为0,强制用户下次登录时更改密码。
- minimum password age:最小密码生命周期。设置为0,密码可以随时更改。
- maximum password age:最大密码生命周期。
- password warning period:密码过期前,提前多少天告警。设置为0,不提示过期。
- password inactivity period:密码过期后,非活跃天数,在期间密码仍可以使用。
- account expiration date:账户过期时间,以距离1970-1-1过去的天数表示。
- reserved field:保留域。
chage 命令
查看用户密码信息
[root@CentOS7 ~ 21:48:47]# chage -l gzk
最近一次密码修改时间 :从不
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :99999
在密码过期之前警告的天数 :7
修改用户密码要求
[root@CentOS7 ~ 21:48:52]# chage -M 100 gzk
[root@CentOS7 ~ 21:51:40]# chage -l gzk
最近一次密码修改时间 :从不
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :0
两次改变密码之间相距的最大天数 :100
在密码过期之前警告的天数 :7
[root@CentOS7 ~ 21:51:44]# chage -m 10 gzk
[root@CentOS7 ~ 21:53:25]# chage -l gzk
最近一次密码修改时间 :从不
密码过期时间 :从不
密码失效时间 :从不
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :100
在密码过期之前警告的天数 :7
将密码失效时间改成现在,然后去普通用户重新设置密码
[root@CentOS7 ~ 21:53:27]# chage -d 0 gzk
[root@CentOS7 ~ 21:54:40]# chage -l gzk
最近一次密码修改时间 :密码必须更改
密码过期时间 :密码必须更改
密码失效时间 :密码必须更改
帐户过期时间 :从不
两次改变密码之间相距的最小天数 :10
两次改变密码之间相距的最大天数 :100
在密码过期之前警告的天数 :7
最后将设置都还原






Linux 提权管理
大多数时候Linux系统管理员以非特权用户身份登录系统,并使用工具暂时获得特权用户root管理系统。
su 命令
- 示例1:su username 启动一个非登录shell,使用当前的环境设置(上一个用户)
- 示例2:su -l username 启动一个登录shell,设置了shell环境
很多环境变量仍保留为普通用户
[gzk@CentOS7 ~ 22:07:36]$ su
密码:
[root@CentOS7 gzk 22:07:36]# env | grep gzk
HOSTNAME=CentOS7.gzk.cloud
USER=gzk
PATH=/usr/local/bin:/usr/bin:/usr/local/sbin:/usr/sbin:/home/gzk/.local/bin:/home/gzk/bin
MAIL=/var/spool/mail/gzk
PWD=/home/gzk
LOGNAME=gzk
XDG_DATA_DIRS=/home/gzk/.local/share/flatpak/exports/share:/var/lib/flatpak/exports/share:/usr/local/share:/usr/share
[root@CentOS7 gzk 22:07:36]# exit
exit
[gzk@CentOS7 ~ 22:07:36]$ su -l root
密码:
上一次登录:日 7月 19 22:07:36 CST 2026pts/0 上
[root@CentOS7 ~ 22:07:36]# env | grep gzk
HOSTNAME=CentOS7.gzk.cloud


添加一个用户,设置密码为redhat
[root@CentOS7 ~ 22:07:36]# useradd laowang
[root@CentOS7 ~ 22:07:36]# echo redhat | passwd --stdin laowang
更改用户 laowang 的密码 。
passwd:所有的身份验证令牌已经成功更新。
[root@CentOS7 ~ 22:07:36]# cat /etc/passwd | grep laowang
laowang:x:1010:1010::/home/laowang:/bin/bash
切换普通用户使用su命令以laowang用户执行id命令
[gzk@CentOS7 ~ 22:07:37]$ su -l laowang -c id
密码:
uid=1010(laowang) gid=1010(laowang) 组=1010(laowang) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[gzk@CentOS7 ~ 22:07:37]$ su -l laowang -c 'cat /etc/hosts'
密码:
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
[gzk@CentOS7 ~ 22:07:37]$ su -l laowang -c cat /etc/hosts
原因:没有把 "cat /etc/hosts" 当作整体




sudo 命令
从根本上说,Linux实现了一个非常粗糙的获得权限模型:root 可以做任何事情,其他用户与系统相关什么也不能做。
- su 缺点:
- 用户必须知道 root 用户密码获取 root 用户所有权限。
- 未记录用户执行命令。
- 无法以 /sbin/nologin 的用户身份运行命令。
- sudo 优点:
- sudo 允许用户以其他用户身份执行特定命令。
- sudo 需要用户输入用户自己的密码,而非他们想访问的用户密码。
- sudo 执行的命令会记录在 /var/log/secure 文件中。
sudo 语法:sudo [-u username] command
有sudo权限
[gzk@CentOS7 ~ 22:18:46]$ sudo id
[sudo] gzk 的密码:
uid=0(root) gid=0(root) 组=0(root) 环境=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[gzk@CentOS7 ~ 22:18:51]$ id gzk
uid=1000(gzk) gid=1000(gzk) 组=1000(gzk),10(wheel)
没sudo权限
[gzk@CentOS7 ~ 22:07:37]$ sudo id
我们信任您已经从系统管理员那里了解了日常注意事项。
总结起来无外乎这三点:
#1) 尊重别人的隐私。
#2) 输入前要先考虑(后果和风险)。
#3) 权力越大,责任越大。
[sudo] gzk 的密码:
gzk 不在 sudoers 文件中。此事将被报告。


openEuler 是由开放原子开源基金会孵化的全场景开源操作系统项目,面向数字基础设施四大核心场景(服务器、云计算、边缘计算、嵌入式),全面支持 ARM、x86、RISC-V、loongArch、PowerPC、SW-64 等多样性计算架构
更多推荐
所有评论(0)