Linux系统用户与组管理
目录
一、概论
1、类型
root用户
普通用户
系统用户(程序用户)
2、用户与组关系
用户必定有个基本组,默认是同名的用户组, 主组和附属组其实差别不大,用户也会拥有其附属组的组相关权限。
3、配置文件
3.1 /etc/passwd
存储用户信息
[root@wezzer ~]# cat /etc/passwd | sort -k 1 |tail -1
wezzer:x:1000:1000:Wezzer:/home/wezzer:/bin/bash
用户名:密码占位符:用户ID:组ID:用户描述信息:用户家目录:登录shell
3.2 /etc/shadow
保存用户密码信息
[root@wezzer ~]# cat /etc/shadow | sort -k 1 | tail -1
wezzer:$6$OtpC5nrPrWfyz4FA$oSTa1R/Z71cC77ChfNqpFsouR/iiKPln/M6muZEXT5lcBxqXqlmxPvggTH1sf/9JNX45BbztGXbtMRLoVSmUF1::0:99999:7:::
用户名:密码:用户创建时间:密码使用最短期限:密码使用最长期限:密码过期提醒时间:密码过期后的宽容时间:密码过期时间:没用
!表示用户密码被锁定,该用户无法登录操作系统
!!表示该用户没有设置密码。
3.3 /etc/group
保存了用户组的信息
[root@wezzer ~]# cat /etc/group | tail -1
wezzer:x:1000:wezzer
组名:占位符:组ID:非基本组的组成员
3.4 /etc/gshadow
保存了用户组的密码
[root@wezzer ~]# cat /etc/gshadow | tail -1
wezzer:!!::wezzer
用户:密码: :用户组
3.5 /etc/login.defs
该文件可以设置密码过期时间,密码最大长度限制等内容。影响的是新创建的用户密码信息。
[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
生成密码用的算法
3.6 /etc/skel
用户创建时默认文件的模版目录
[root@wezzer skel]# ls -a
. .. .bash_logout .bash_profile .bashrc .mozilla
二、用户管理
1、 useradd
创建一个新用户或更新默认新用户信息
选项 | 作用 |
---|---|
-u | 指定用户的UID |
-d | 指定用户的家目录,而不采用默认创建在/home中的目录。不能是已存在的目录 |
-s | 指定用户的登录shell |
-g | 创建用户时指定基本组,不会创建用户的同名 |
-G | 创建用户时指定附加组,依然会创建同名组 |
-M | 创建用户时不创建家目录 |
-e | 创建用户时,指定用户的失效时间 |
1.1、 创建 指定用户 UID
[root@wezzer ~]# useradd -u 123456 user1
1.2、指定用户家目录
创建user2并指定其家目录为 user3
[root@wezzer ~]# useradd -d /user3 user2
1.3、 指定用户的登录shell
[root@wezzer ~]# useradd -s /sbin/nologin user3
1.4、 创建用户时不创建家目录
[root@wezzer ~]# useradd -M user4
1.5、 创建程序用户
[root@wezzer ~]# useradd -M -s /sbin/nologin user5
1.6、 创建用户时指定基本组
[root@wezzer ~]# useradd -g user5 user6
1.7、 创建用户时指定附加组
[root@wezzer ~]# useradd -G user5 user7
1.8、 创建用户时,指定用户的失效时间
[root@wezzer ~]# useradd -e 2025-05-15 user8
1.9 、 -o 可创建个uid为0的账户
[root@wezzer ~]# useradd -o -u 0 admin
2、userdel
删除用户账户和相关文件
2.1 -r
删除用户的同时删除在创建时产生的文件
[root@wezzer ~]# userdel -r user7
3、passwd
更改用户的密码
选项 | 作用 |
---|---|
-l(小写L) | 锁定用户密码 |
-S | 查看密码的锁定状态 |
-u | 解除用户密码的锁定状态 |
-d | 将用户密码清空 |
-e | 直接让密码失效,下次登录时必须更改 |
--stdin | 非交互式修改密码 |
3.1、非交互修改密码
[root@wezzer ~]# echo 1 | passwd --stdin user1
4、usermod
修改一个用户账户的属性
选项 | 作用 |
---|---|
-u | 修改用户的UID |
-d | 修改用户的家目录,而不采用默认创建在/home中的目录 |
-s | 修改用户的登录shell |
-g | 修改用户基本组 |
-G | 修改用户附加组 |
-e | 修改用户的失效时间 |
-a | 追加用户到一个附加组 |
-L | 锁定用户 |
-U | 解锁用户 |
4.1 -a
将用户user2追加到user1组
[root@wezzer ~]# usermod -a user2 -G user1
5、 chpasswd
批量更新密码
将存有创建用户密码的文本文件 批量生成
[root@wezzer ~]# vim chpasswd.txt
user1:123.com
user2:1234.com
user3:12345.com
[root@wezzer ~]# cat chpasswd.txt | chpasswd
6、chage
更改用户密码过期信息 ,只能对现有用户进行修改
选项 | 作用 |
---|---|
-l(小写L) | 显示账户年龄信息 |
-m | 修改密码的最短使用期限 |
-M | 修改密码的最长使用期限 |
-W | 修改密码过期的提示时间 |
6.1、 -m
[root@wezzer ~]# chage -m 1 user1
6.2、 -W
[root@wezzer ~]# chage -W 1 user1
三、组管理
1、groupadd
创建新组
1.1、 -g
[root@wezzer ~]# groupadd -g 1235 user1
2、groupdel
删除组(有成员不让删除)
1.1 -f
强制删除
[root@wezzer ~]# groupdel -f user1
3、groupmod
1.1 -g
修改GID
[root@wezzer ~]# groupmod -g 123546 user1
4、gpasswd
项组内添加成员
1.1 -a
向组 user1中添加用户user3,单个添加
[root@wezzer ~]# gpasswd -a user1 user3
1.2 -M
设置组 GROUP 的成员列表,批量添加,覆盖原有成员
[root@wezzer ~]# gpasswd -M user3,user4,user5 root
四、用户切换与提权
1、su
切换用户,从root用户切换到普通用户不需要密码。普通用户之间切换需要密码
1.1 - ;-l
su 不会切换目标用户的登录shell
su - 会切换到目标用户的登录shell
1.2、 -s
指定shell切换
2、sudo
sudo用来进行普通用户提升权限
sudo -i root,切换到root,必须存在于sudoers文件中的普通用户才有权限
visudo 进入修改sudo命令修改
[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
## Next comes the main part: which users can run what software on
## which machines (the sudoers file can be shared between multiple
## systems).
## Syntax:
##
## user MACHINE=COMMANDS
##
## The COMMANDS section may have other options added to it.
##
## Allow root to run any commands anywhere
(所有的 root账号 执行 任何 命令 在任何位置)
root ALL=(ALL) ALL
(root用户) (任意位置登录=所有命令) (任何来源)
user1 ALL=/sbin/ifconfig
(意思为 用户user1 在任意位置登陆时 通过 sudo 命令提权时 只能使用 ifconfig命令)
## Allows members of the 'sys' group to run networking, software,
## service management apps and more.
# %sys ALL = NETWORKING, SOFTWARE, SERVICES, STORAGE, DELEGATING, PROCESSES, LOCATE, DRIVERS
## Allows people in group wheel to run all commands
(允许 组内所有人 运行 所有的 命令)
%wheel ALL=(ALL) ALL
(%组名)
## Same thing without a password
( 一些 事情 不需要 密码)
# %wheel ALL=(ALL) NOPASSWD: ALL
对任意指令都不需要密码
## Allows members of the users group to mount and unmount the
## cdrom as root
# %users ALL=/sbin/mount /mnt/cdrom, /sbin/umount /mnt/cdrom
(组内所有人 所有指令= (特定只能运行 mount 命令))
## Allows members of the users group to shutdown this system
# %users localhost=/sbin/shutdown -h now
(组内所有人 在本地登陆时 = 可以关机指令 )
## Read drop-in files from /etc/sudoers.d (the # here does not mean a comment)
#includedir /etc/sudoers.d
五、用户登录信息查看
1、id
查看用户的基本属性,用户UID,基本组及附加组
2、w
查看当前系统登录详情
3、who
显示当前系统登录的摘要信息
3.1 -b
上次系统启动时间
3.2 -u
列出已登录的用户
4、whoami
显示当前登录用户的名称
5、finger
查看用户登录信息,默认系统不存在该命令,需要安装
6、last
查看登录用户列表
7、lastb
从日志文件/var/log/btmp中读取信息,并显示用户登录失败的记录
8、lastlog
统计当前系统中存在用户的登录情况
---------------------------------------------------------------------------------------------------------------------------------
制作不易,留个赞吧