【Linux】(二)—— 用户和用户组管理

在了解了Linux基础命令格式后,今天我要介绍的是Linux的用户管理

目录

root用户

root用户是Linux系统中的超级用户账户。它拥有对系统无限制的权限,能够执行任何操作,没有任何文件或命令对root用户是禁止访问的。root用户的权限等同于操作系统本身,可以执行如下关键任务:

  1. 管理系统文件和配置:root用户可以读取、修改或删除任何系统文件,包括重要的配置文件和其他用户的数据。
  2. 用户和权限管理:可以创建、删除用户账户和用户组,修改用户权限和所有权。
  3. 安装和管理软件:无需额外权限即可安装、更新或卸载系统软件和库。
  4. 硬件管理:可以启用或禁用系统硬件,进行硬件相关的配置。
  5. 系统服务管理:可以启动、停止或重启系统服务和守护进程。
  6. 系统维护和修复:在系统出现问题时,root权限对于故障诊断和修复至关重要。

尽管root用户权限极大,便于系统管理,但同时也极其危险。错误的操作或被恶意利用都可能导致系统崩溃或数据丢失。因此,日常操作通常建议使用普通用户权限,并仅在必要时通过sudo或其他机制临时提升权限执行特定任务。为了保护root账户的安全,应设置强密码,并限制不必要的root登录,以减少潜在风险。

在终端输入指令前面为$表示普通用户,#表示当前身份为root,低权限切换至高权限需要输密码,高权限切换至低权限不需要。

普通用户无法直接操作根目录(用户管理属于根目录下的内容)下的东西,在学习用户管理时可以使用root用户

首先激活root用户,Ubuntu发行版本默认情况下root账户是被禁用的,你需要先激活root账户并设置密码。可以通过 sudo passwd root 命令来设置root用户的密码。

然后从当前用户切换至root用户的命令为:

shell 复制代码
su root

如果你的命令行输入处显示用户名为roor且$变成#,说明成功切换到了root用户:

用户管理操作

用户ID

用户ID(User ID,简称UID)在Linux及类UNIX系统中是一个非常重要的概念,它是每个用户账户的唯一数字标识符。下是关于用户ID的一些关键点:

  1. 唯一性:每个用户的UID都是独一无二的,确保系统能够准确区分不同的用户。
  2. 权限关联:UID与用户权限紧密相关。例如,UID为0的用户是root用户,拥有系统中的最高权限。普通用户的UID通常大于500,以区分系统预设的用户和管理员或服务账户。
  3. 文件权限:文件和目录的所有权以及访问权限通过UID和组ID(GID)来确定。每个文件或目录都有一个所有者(与UID关联)和所属组(与GID关联),这决定了用户能否读、写或执行这些文件。
  4. 存储位置 :用户的用户名与对应的UID(以及其他用户信息)存储在/etc/passwd文件中。而实际的密码散列值(如果使用shadow密码,则存储在/etc/shadow)则不直接与UID在同一个地方展示,以增加安全性。
  5. 查看UID :可以通过命令行工具id或结合用户名使用id username来查看用户的UID。也可以直接使用whoami命令查看当前登录用户的UID。
  6. 创建用户时的UID分配 :使用命令如useradd创建新用户时,如果不特别指定,系统会自动分配一个大于500的UID,以符合常规的用户与系统用户的区分标准。
  7. 系统保留UID:范围在0到499的UID通常被系统保留给预定义的系统用户和服务账户,如root(UID 0)、bin、sys等,这些用户通常用于运行系统关键服务和进程。

理解用户ID及其在Linux系统中的作用对于管理和维护系统安全、权限分配至关重要。

切换用户

切换用户的基本语法如下:

shell 复制代码
su 用户名

查看用户

shell 复制代码
compgen -u

此命令列出了所有可登录的用户账户名称,是一个快速查看用户名列表的方法。

添加用户

添加新用户的基本语法和参数选项解释如下:

shell 复制代码
useradd [-options] 用户名

[-options]可选:
-c comment # 指定一段注释性描述。
-d 目录 # 指定用户主目录,如果此目录不存在,则同时使用-m选项,可以创建主目录。
-g 用户组 # 指定用户所属的用户组。
-G 用户组 # 指定用户所属的附加组。
-s Shell文件 # 指定用户的登录Shell。
-u 用户号 # 指定用户的用户号,如果同时有-o选项,则可以重复使用其他用户的标识号。

【示例】

shell 复制代码
useradd --d  /home/sam -m sam   #创建了一个用户sam,其中-d和-m选项用来为登录名sam产生一个主目录 /home/sam

useradd -s /bin/sh -g group --G adm,root gem   # 新建了一个用户gem,该用户的登录Shell是 `/bin/sh`,它属于group用户组,同时又属于adm和root用户组,其中group用户组是其主组。

指定密码

用户账号刚创建时没有口令,被系统锁定,无法使用,必须为其指定密码后才可以使用,即使是指定空密码。其基本语法和参数选项如下:

shell 复制代码
passwd [-options] 用户名

[-options]可选:
-l # 锁定口令,即禁用账号。
-u # 口令解锁。
-d # 使账号无口令。
-f # 强迫用户下次登录时修改口令。

【示例】

shell 复制代码
passwd sam   # 为其设置密码并激活sam用户

修改用户信息

修改用户的基本语法如下:

shell 复制代码
usermod [-options] 用户名

usermod命令的选项和添加用户一样,可以对已经存在的用户信息进行修改

删除用户

删除用户的基本语法和参数选项解释如下:

shell 复制代码
userdel [-options] 用户名

[-options]可选:
-r # 把用户的主目录一起删除。

退出登录

退出登录的基本语法如下:

exit

多个用户的登录顺序和栈一样,先退出的是后登录的

查看登陆系统的用户

查看当前系统用户的基本语法如下:

shell 复制代码
who

用户组的管理

在Linux系统中,用户组是一种将多个用户账号聚集在一起的方式,以便简化权限管理和资源访问控制。每个用户至少属于一个基本组(primary group),并且还可以属于零个或多个附加组(supplementary groups)。每个用户组都有一个唯一的组标识符,称为组ID(Group ID, GID)。

增加新用户组

添加用户组的基本语法和参数选项如下:

shell 复制代码
groupadd [-options] 用户组

[-options]可选:
-g # GID 指定新用户组的组标识号(GID)。省略的话默认在当前已有的最大组标识号的基础上加1。
-o # 与-g选项同时使用,表示新用户组的GID可以与系统已有用户组的GID相同。

查看用户组

使用 cat 命令查看 /etc/group 文件:

cat /etc/group

这个命令会列出系统中所有用户组的信息,包括用户组名、组密码占位符、GID(组ID)以及附加到该组的用户列表。

查看指定用户的用户组

shell 复制代码
groups 用户名

删除用户组

删除用户组的基本语法如下:

shell 复制代码
groupdel 用户组

修改用户组

可以修改用户组的组名和组id号,修改用户组的基本语法和参数选项如下:

shell 复制代码
groupmod [-options] 用户组

[-options]可选:
-g GID # 为用户组指定新的组标识号。
-o # 与-g选项同时使用,用户组的新GID可以与系统已有用户组的GID相同。
-n 新用户组 # 将用户组的名字改为新名字

切换用户组

如果一个用户同时属于多个用户组,那么用户可以在用户组之间切换,以便具有其他用户组的权限。其基本语法如下:

shell 复制代码
newgrp root   
# 这条命令将当前用户切换到root用户组,前提条件是root用户组确实是该用户的主组或附加组。

与用户有关的系统文件

/etc/passwd文件中记录了所有的用户信息,对所有人都是只读的,每一条记录表示一个用户,按照以下规则划分信息:

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

系统中有一类用户称为伪用户(pseudo users)。这些用户在/etc/passwd文件中也占有一条记录,但是不能登录,因为它们的登录Shell为空。它们的存在主要是方便系统管理,满足相应的系统进程对文件属主的要求。

常见的伪用户如下所示:

bin 拥有可执行的用户命令文件 
sys 拥有系统文件 
adm 拥有帐户文件 
uucp UUCP使用 
lp lp或lpd子系统使用 
nobody NFS使用

由于/etc/passwd文件是所有用户都可读的,如果用户的密码太简单或规律比较明显的话,一台普通的计算机就能够很容易地将它破解,因此对安全性要求较高的Linux系统都把加密后的口令字分离出来,单独存放在一个文件中,这个文件是/etc/shadow文件。 有超级用户才拥有该文件读权限,这就保证了用户密码的安全性。/etc/shadow文件中存放的记录按照以下规则划分。

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

用户组的所有信息都存放在/etc/group中,/etc/group文件中存放的记录按照以下规则划分。

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

相关推荐
JunLan~1 小时前
Rocky Linux 系统安装/部署 Docker
linux·docker·容器
Python私教2 小时前
model中能定义字段声明不存储到数据库吗
数据库·oracle
方竞2 小时前
Linux空口抓包方法
linux·空口抓包
sun0077003 小时前
ubuntu dpkg 删除安装包
运维·服务器·ubuntu
海岛日记3 小时前
centos一键卸载docker脚本
linux·docker·centos
oi774 小时前
使用itextpdf进行pdf模版填充中文文本时部分字不显示问题
java·服务器
AttackingLin4 小时前
2024强网杯--babyheap house of apple2解法
linux·开发语言·python
BestandW1shEs4 小时前
谈谈Mysql的常见基础问题
数据库·mysql