「Linux 奏章 7」用户[组]管理

569 阅读3分钟

「这是我参与11月更文挑战的第9天,活动详情查看:2021最后一次更文挑战」。

1. 用户管理

实现用户账号的管理,要完成的工作主要有如下几个方面:

  • 用户账号的添加、删除与修改。
  • 用户口令的管理。
  • 用户组的管理。

1.1 添加用户

$ useradd [选项] [用户名]
  • useradd -d <目录> <用户名> : 添加用户并指定文件夹
  • useradd -g <组> <用户名> : 添加用户并指定组名
  • useradd -s /bin/sh -g group -G adm,root gem : 新建了一个用户 gem,该用户的登录 Shell是 /bin/sh,它属于 group 用户组,同时又属于 adm 和 root 用户组,其中 group 用户组是其主组

Linux提供了集成的系统管理工具 userconf,它可以用来对用户账号进行统一管理。

1.2 删除用户

删除用户账号就是要将 /etc/passwd 等系统文件中的该用户记录删除,必要时还删除用户的主目录

$ userdel [选项] [用户名]

常用的选项是 -r,它的作用是把用户的主目录一起删除:

  • userdel -r sam : 此命令删除用户 sam 在系统文件中(主要是 /etc/passwd, ``/etc/shadow, /etc/group` 等)的记录,同时删除用户的主目录

1.3 修改用户信息

修改用户账号就是根据实际情况更改用户的有关属性,如用户号、主目录、用户组、登录 Shell 等。

修改已有用户的信息使用 usermod 命令,其格式如下:

$ usermod [选项] [用户名]
  • usermod -g <新组名> <用户名> : 修改用户所在组
  • usermod -d <新目录> <用户名> : 修改用户主目录
  • usermod -s /bin/shell -d /home/z –g developer sam : 同时修改登录 shell、主目录以及用户组
  • id <用户名> : 显示用户的 UID、GID
  • whoami / who am i : 查看当前用户/登录用户

1.4 用户口令的管理

$ passwd [选项] [用户名]

选项:

  • -l 锁定口令,即禁用账号。
  • -u 口令解锁。
  • -d 使账号无口令。
  • -f 强迫用户下次登录时修改口令。

例如,假设当前用户是 sam,则下面的命令修改该用户自己的口令:

$ passwd 
Old password:****** 
New password:******* 
Re-enter new password:*******

如果是 root 用户,可以用下列形式指定任何用户的口令:

# passwd sam 
New password:******* 
Re-enter new password:*******

⭐普通用户修改自己的口令时,passwd 命令会先询问原口令,验证后再要求用户输入两遍新口令,如果两次输入的口令一致,则将这个口令指定给用户;而 root 用户为用户指定口令时,就不需要知道原口令。

2. 用户组管理

Linux 下的用户属于与它同名的用户组,这个用户组在创建用户时同时创建。

用户组的管理涉及用户组的添加、删除和修改;实际上就是对 /etc/group 文件的更新。

2.1 新增用户组

$ groupadd [选项] [用户组]
  • groupadd -g 101 group1 : 新增用户组的同时顺带指定组标识号

2.2 删除用户组

$ groupdel [用户组]
  • groupdel group1

2.3 修改用户组

$ groupmod [选项] [用户组]
  • groupmod -g 102 group1 : 修改组标识号
  • groupmod -g 103 -n group2 group1 : -n 修改组名

2.4 切换用户组

⭐如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限;用户可以在登录后,使用命令 newgrp 切换到其他用户组:

$ newgrp root

这条命令将当前用户切换到 root 用户组,前提条件是 root 用户组确实是该用户的主组或附加组

3. 挂钩用户账号的系统文件

完成用户管理的工作有许多种方法,但是每一种方法实际上都是对有关的系统文件进行修改。

与用户和用户组相关的信息都存放在一些系统文件中,这些文件包括 /etc/passwd, /etc/shadow, /etc/group 等,下面分别介绍这些文件的内容。

3.1 /etc/passwd

Linux 系统中的每个用户都在 /etc/passwd 文件中有一个对应的记录行,它记录了这个用户的一些基本属性:

用户名:口令:用户标识号:组标识号:注释性描述:主目录:登录Shell

3.2 /etc/shadow

对安全性要求较高的 Linux 系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是 /etc/shadow 文件,格式:

登录名:加密口令:最后一次修改时间:最小时间间隔:最大时间间隔:警告时间:不活动时间:失效时间:标志

3.3 /etc/group

将用户分组是Linux 系统中对用户进行管理及控制访问权限的一种手段。

⭐当一个用户同时是多个组中的成员时,在 /etc/passwd 文件中记录的是用户所属的主组,也就是登录时所属的默认组,而其他组称为附加组

用户要访问属于附加组的文件时,必须首先使用 newgrp 命令使自己成为所要访问的组中的成员。

用户组的所有信息都存放在 /etc/group 文件中。此文件的格式由冒号(:)隔开若干个字段:

组名:口令:组标识号:组内用户列表

4. 找回 root 密码⭐

首先启动系统,进入开机界面,在界面中按 "e" 进入编辑界面;然后用键盘的下键向下移动,找到以 "Linux16" 开头内容所在行,并在行最后输入 init=/bin/sh

接着输入完成后,ctrl+x 进入单用户模式,再输入 mount -o remount,rw / & passwd 即可更改密码!

希望本文对你有所帮助🧠
欢迎在评论区留下你的看法🌊,我们一起讨论与分享🔥