目录
Linux系统用户与组管理
一、概论
1、类型
2、用户与组关系
3、配置文件
3.1 /etc/passwd
3.2 /etc/shadow
3.3 /etc/group
3.4 /etc/gshadow
3.5 /etc/login.defs
3.6 /etc/skel
二、用户管理
1、 useradd
1.1、 创建 指定用户 UID
1.2、指定用户家目录
1.3、 指定用户的登录shell
1.4、 创建用户时不创建家目录
1.5、 创建程序用户
1.6、 创建用户时指定基本组
1.7、 创建用户时指定附加组
1.8、 创建用户时,指定用户的失效时间
1.9 、 -o 可创建个uid为0的账户
2、userdel
2.1 -r
3、passwd
3.1、非交互修改密码
4、usermod
4.1 -a
5、 chpasswd
6、chage
6.1、 -m
6.2、 -W
三、组管理
1、groupadd
1.1、 -g
2、groupdel
1.1 -f
3、groupmod
1.1 -g
4、gpasswd
1.1 -a
1.2 -M
四、用户切换与提权
1、su
1.1 - ;-l
1.2、 -s
2、sudo
五、用户登录信息查看
1、id
2、w
3、who
3.1 -b
3.2 -u
4、whoami
5、finger
6、last
7、lastb
8、lastlog
root用户
普通用户
系统用户(程序用户)
用户必定有个基本组,默认是同名的用户组, 主组和附属组其实差别不大,用户也会拥有其附属组的组相关权限。
存储用户信息
[root@wezzer ~]# cat /etc/passwd | sort -k 1 |tail -1 wezzer:x:1000:1000:Wezzer:/home/wezzer:/bin/bash 用户名:密码占位符:用户ID:组ID:用户描述信息:用户家目录:登录shell
保存用户密码信息
[root@wezzer ~]# cat /etc/shadow | sort -k 1 | tail -1 wezzer:$6$OtpC5nrPrWfyz4FA$oSTa1R/Z71cC77ChfNqpFsouR/iiKPln/M6muZEXT5lcBxqXqlmxPvggTH1sf/9JNX45BbztGXbtMRLoVSmUF1::0:99999:7::: 用户名:密码:用户创建时间:密码使用最短期限:密码使用最长期限:密码过期提醒时间:密码过期后的宽容时间:密码过期时间:没用
!表示用户密码被锁定,该用户无法登录操作系统
!!表示该用户没有设置密码。
保存了用户组的信息
[root@wezzer ~]# cat /etc/group | tail -1 wezzer:x:1000:wezzer 组名:占位符:组ID:非基本组的组成员
保存了用户组的密码
[root@wezzer ~]# cat /etc/gshadow | tail -1 wezzer:!!::wezzer 用户:密码: :用户组
该文件可以设置密码过期时间,密码最大长度限制等内容。影响的是新创建的用户密码信息。
[root@wezzer ~]# cat /etc/login.defs |grep -v "^$"|grep -v "#" MAIL_DIR /var/spool/mail 所有用户存储邮件目录 PASS_MAX_DAYS 99999 密码使用最长期限 PASS_MIN_DAYS 0 密码使用最短期限 PASS_MIN_LEN 5 密码最小长度 PASS_WARN_AGE 7 密码过期时间警告时间 UID_MIN 1000 最小UID UID_MAX 60000 最大的UID (65535) SYS_UID_MIN 201 系统最小UID (1-999) SYS_UID_MAX 999 系统最大UID GID_MIN 1000 用户组最小ID GID_MAX 60000 用户组最大ID SYS_GID_MIN 201 系统组ID最小 SYS_GID_MAX 999 系统组ID最大 CREATE_HOME yes 默认是否创建家目录 UMASK 077 默认创建用户的反码 USERGROUPS_ENAB yes 创建用户时是否创建同名组 ENCRYPT_METHOD SHA512 生成密码用的算法
用户创建时默认文件的模版目录
[root@wezzer skel]# ls -a . .. .bash_logout .bash_profile .bashrc .mozilla
创建一个新用户或更新默认新用户信息
选项 | 作用 |
---|---|
-u | 指定用户的UID |
-d | 指定用户的家目录,而不采用默认创建在/home中的目录。不能是已存在的目录 |
-s | 指定用户的登录shell |
-g | 创建用户时指定基本组,不会创建用户的同名 |
-G | 创建用户时指定附加组,依然会创建同名组 |
-M | 创建用户时不创建家目录 |
-e | 创建用户时,指定用户的失效时间 |
[root@wezzer ~]# useradd -u 123456 user1
创建user2并指定其家目录为 user3
[root@wezzer ~]# useradd -d /user3 user2
[root@wezzer ~]# useradd -s /sbin/nologin user3
[root@wezzer ~]# useradd -M user4
[root@wezzer ~]# useradd -M -s /sbin/nologin user5
[root@wezzer ~]# useradd -g user5 user6
[root@wezzer ~]# useradd -G user5 user7
[root@wezzer ~]# useradd -e 2025-05-15 user8
[root@wezzer ~]# useradd -o -u 0 admin
删除用户账户和相关文件
删除用户的同时删除在创建时产生的文件
[root@wezzer ~]# userdel -r user7
更改用户的密码
选项 | 作用 |
---|---|
-l(小写L) | 锁定用户密码 |
-S | 查看密码的锁定状态 |
-u | 解除用户密码的锁定状态 |
-d | 将用户密码清空 |
-e | 直接让密码失效,下次登录时必须更改 |
--stdin | 非交互式修改密码 |
[root@wezzer ~]# echo 1 | passwd --stdin user1
修改一个用户账户的属性
选项 | 作用 |
---|---|
-u | 修改用户的UID |
-d | 修改用户的家目录,而不采用默认创建在/home中的目录 |
-s | 修改用户的登录shell |
-g | 修改用户基本组 |
-G | 修改用户附加组 |
-e | 修改用户的失效时间 |
-a | 追加用户到一个附加组 |
-L | 锁定用户 |
-U | 解锁用户 |
将用户user2追加到user1组
[root@wezzer ~]# usermod -a user2 -G user1
批量更新密码
将存有创建用户密码的文本文件 批量生成
[root@wezzer ~]# vim chpasswd.txt user1:123.com user2:1234.com user3:12345.com [root@wezzer ~]# cat chpasswd.txt | chpasswd
更改用户密码过期信息 ,只能对现有用户进行修改
选项 | 作用 |
---|---|
-l(小写L) | 显示账户年龄信息 |
-m | 修改密码的最短使用期限 |
-M | 修改密码的最长使用期限 |
-W | 修改密码过期的提示时间 |
[root@wezzer ~]# chage -m 1 user1
[root@wezzer ~]# chage -W 1 user1
创建新组
[root@wezzer ~]# groupadd -g 1235 user1
删除组(有成员不让删除)
强制删除
[root@wezzer ~]# groupdel -f user1
修改GID
[root@wezzer ~]# groupmod -g 123546 user1
项组内添加成员
向组 user1中添加用户user3,单个添加
[root@wezzer ~]# gpasswd -a user1 user3
设置组 GROUP 的成员列表,批量添加,覆盖原有成员
[root@wezzer ~]# gpasswd -M user3,user4,user5 root
切换用户,从root用户切换到普通用户不需要密码。普通用户之间切换需要密码
su 不会切换目标用户的登录shell
su - 会切换到目标用户的登录shell
指定shell切换
sudo用来进行普通用户提升权限
sudo -i root,切换到root,必须存在于sudoers文件中的普通用户才有权限
[root@wezzer home]# vim /etc/sudoers # # Adding HOME to env_keep may enable a user to run unrestricted # commands via sudo. # # Defaults env_keep += "HOME"
Defaults secure_path = /sbin:/bin:/usr/sbin:/usr/bin
(所有的 root账号 执行 任何 命令 在任何位置)
root ALL=(ALL) ALL
(root用户) (任意位置登录=所有命令) (任何来源)
user1 ALL=/sbin/ifconfig
(意思为 用户user1 在任意位置登陆时 通过 sudo 命令提权时 只能使用 ifconfig命令)
(允许 组内所有人 运行 所有的 命令)
%wheel ALL=(ALL) ALL
(%组名)
( 一些 事情 不需要 密码)
对任意指令都不需要密码
(组内所有人 所有指令= (特定只能运行 mount 命令))
(组内所有人 在本地登陆时 = 可以关机指令 )
#includedir /etc/sudoers.d
查看用户的基本属性,用户UID,基本组及附加组
查看当前系统登录详情
显示当前系统登录的摘要信息
上次系统启动时间
列出已登录的用户
显示当前登录用户的名称
查看用户登录信息,默认系统不存在该命令,需要安装
查看登录用户列表
从日志文件/var/log/btmp中读取信息,并显示用户登录失败的记录
统计当前系统中存在用户的登录情况
---------------------------------------------------------------------------------------------------------------------------------
希望能帮助大家