小白成长之路-Linux系统用户与组管理(二)

Linux系统用户与组管理

目录

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


一、概论

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文件中的普通用户才有权限

[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

统计当前系统中存在用户的登录情况

---------------------------------------------------------------------------------------------------------------------------------

希望能帮助大家

你可能感兴趣的:(云计算,linux,运维,服务器)