Linux操作系统运维-用户与用户组管理

Linux操作系统运维-用户与用户组管理

用户种类与标识查看

  • 超级用户(root):可以不受限制地执行所有操作,拥有系统最高权限,修改系统设置与管理用户均需要root权限
  • 系统用户(system):它是系统本身或应用程序使用的账户,分为系统安装时创建的账户和用户自定义的系统账户
  • 普通用户(regular):该账户是常规用户,在系统中不执行系统管理任务,只执行日常应用

Linux使用UID作为账户的唯一标识,并且有以下特殊UID:

账户类型UID范围
rootUID=0
系统账户UID=1~499、65534
普通账户UID≥1000
  • 很多linux的发行版也以500开始作为为普通用户编号
  • 65534是Linux系统中预留的一个保留UID,通常用于指示某个文件或进程不属于任何实际用户或组。这个UID通常被称为“无主账户”(nobody)。它不是一个真正的账户编号,也不应该被用于创建新的用户账户。

查看当前与用户相关信息指令

命令作用
id直接展示当前账户的UID与GID
id [用户名]查看指定用户的 UID 和 GID
who查看当前所有用户登录列表
whoami查看当前用户登录的账户名
cat /etc/passwd查看当存在的所有用户与信息

使用root权限管理系统

对于普通用户是没有权限进行修改系统设置和管理其他用户的,只有root用户和授予了管理员权限的用户才能够管理维护系统,但是root用户权限过高,很多linux发行版禁用了root账户,转而使用具有管理员权限的账户(即后文中提到用户组中sudo组成员用户),通常需要使用sudo命令来暂时提升权限或者使用su命令切换用户。

sudo命令与常见选项

sudo(Superuser Do)是一个在Unix和类Unix操作系统中使用的命令行工具,允许普通用户以超级用户(root)的身份执行特定命令,通常是系统管理任务。使用sudo可以提高系统的安全性,因为它允许管理员授予特定用户执行特定任务的权限,而无需将完整的超级用户权限授予他们。

sudo [option] [command ...]
选项说明
sudo command使用sudo加上命令用于提升权限至root执行后面的命令
-u, --user=user command指定要以哪个用户的身份执行命令。
-g, --group=group command指定要以哪个用户组的身份执行命令。
-l, --list列出当前用户的sudo权限。
-b, --background在后台运行命令。
-e, --edit使用默认编辑器编辑sudoers文件。
-E, --preserve-env保持环境变量,不清除用户的环境变量。
-H, --set-homeHOME环境变量设置为目标用户的家目录。
-i, --login以目标用户的环境登录,不指定用户即默认为root环境
-k, --reset-timestamp重置sudo的时间戳。
-V, --version显示sudo的版本信息。

则有以下切换到root用户的方法:我们可以用sudo -i切换到root用户登录(需要当前用户的密码),最后使用exit命令退出当前登录shell即可

在这里插入图片描述

su命令与常见选项

su命令(Switch User)是在Unix和类Unix操作系统中用于切换用户身份的命令。通过su命令,可以在当前终端会话中切换到另一个用户的环境,通常默认切换到超级用户(root)。普通用户切换为其他用户需要提供对应用户的密码,而root用户切换到其他用户不需要提供密码

su [option] [userName]
选项说明
su直接切换到root用户,但保留当前用户的环境变量
su -直接切换到root用户,并加载其环境变量
su userName切换到指定用户
-c, --command=COMMAND在切换用户后执行指定的命令。
-s, --shell=SHELL指定要使用的shell。默认为目标用户的登录shell。
-l, --login登录目标用户,加载其环境变量。
-m, --preserve-environment保留原始用户的环境变量。

临时切换用户命令后,我们也可以通过exit退出:

在这里插入图片描述

切换至root用户的方式汇总

指令描述
su root切换到 root 用户
sudo -i保留当前环境变量并使用 root 用户登录 shell
su切换到 root 用户(等同于 su root
su -切换到 root 用户并启动新的登录 shell,加载 root 用户的环境变量

注意:在服务端的linux系统中还可以使用logout来退出当前用户的登录

sudoers文件定义用户规则

sudoers文件是一个用于配置sudo命令的配置文件,定义了哪些用户、哪些主机以及在执行sudo命令时允许执行哪些命令。这个文件通常位于/etc/sudoers。编辑sudoers文件时应使用visudo命令,因为它会在保存文件时进行语法检查,防止可能导致系统安全问题的错误,其中规则对应的以某身份执行命令指的是使用sudosu命令以其他用户身份执行命令

用户规则:

user host=(runas_user:runas_group) command

允许user在指定的host上以runas_user:runas_group的身份执行特定的command

组规则:

%group host=(runas_user:runas_group) command

允许group的成员在指定的host上以runas_user:runas_group的身份执行特定的command

免密码规则:

user host=(runas_user) NOPASSWD: command

允许user在指定的host上以runas_user的身份无需输入密码执行特定的command

命令别名:

Cmnd_Alias CMD_ALIAS = /path/to/command, /path/to/another_command

定义一个命令别名,使得可以在规则中引用这个别名而不必列出所有的命令。

主机别名:

Host_Alias HOST_ALIAS = host1, host2

定义一个主机别名,使得可以在规则中引用这个别名而不必列出所有的主机。

用户别名和组别名:

User_Alias USER_ALIAS = user1, user2
%Group_Alias = group1, group2

分别定义用户别名和组别名,以便在规则中引用它们而不必列出所有的用户或组。

默认规则:

Defaults option

设置sudo的默认选项,如允许或禁止使用sudo的一些功能,或者定义默认的PATH等(在sudoers文件的前半段就是默认配置信息)。

用户的创建与管理

useradd命令与常见选项

useradd [option] [userName]
选项说明
-c, --comment COMMENT设置用户的注释信息。
-d, --home DIRECTORY指定用户的主目录。
-g, --gid GROUP指定用户的初始登录组。
-G, --groups GROUPS指定用户的附加组。多个组之间使用逗号分隔。
-m, --create-home创建用户的同名主目录。
-s, --shell SHELL指定用户的登录 shell。
-u, --uid UID指定用户的用户ID。
-e, --expiredate EXPIRE指定用户的过期日期。
-r, --system创建一个系统用户。
-U, --user-group创建与用户名同名的用户组,并将用户添加到这个组中。
-M, --no-create-home不创建用户的主目录。

注意:在未指定用户组的情况下,系统会默认创建与用户同名的用户组

userdel命令与常见选项

userdel -r [用户名]  # 删除用户与其主目录
选项说明
-r, --remove删除用户的主目录和邮箱目录。
-f, --force强制删除用户,即使用户当前登录。
-Z, --selinux-user指定删除用户时关联的 SELinux 用户。
-h, --help显示帮助信息。

passwd命令与常见选项

passwd 命令用于更改用户的密码。这个命令允许用户更改自己的密码,或者超级用户(root)可以更改其他用户的密码。在Linux系统中,密码是存储在 /etc/shadow 文件中的,而 passwd 命令负责更新这个文件中的密码信息。

passwd [option] [userName]
选项说明
(无选项与用户名)更改当前用户的密码。
-e, --expire强制用户下次登录时更改密码。
-l, --lock锁定用户密码,防止登录。
-u, --unlock解锁先前被锁定的用户密码。
-S, --status显示密码更改策略信息。
-d, --delete删除密码,使用户无密码登录。
-n, --mindays MIN设置密码的最短使用期限。
-x, --maxdays MAX设置密码的最长使用期限。
-w, --warndays WARN在密码过期前的天数提供警告。
-i, --inactive INACTIVE设置密码过期后账户被禁用前的天数。

useradd文件指定默认配置

在Debian系列的Linux系统中,/etc/default/useradd 文件用于配置useradd命令的默认行为。这个文件包含一些变量,这些变量定义了在使用useradd命令创建新用户时的默认设置。

以下是一些在/etc/default/useradd文件中常见的变量:

HOME 指定新用户的默认主目录。例如:

HOME=/home

SHELL 指定新用户的默认登录 shell。例如:

SHELL=/bin/bash

SKEL 指定包含默认用户配置文件的骨架目录。当创建新用户时,/etc/skel 目录中的内容会被复制到新用户的主目录。例如:

SKEL=/etc/skel

CREATE_MAIL_SPOOL 如果设置为 “yes”,则新用户在创建时将会有一个邮箱。如果设置为 “no”,则不创建邮箱。例如:

CREATE_MAIL_SPOOL=yes

GROUP 指定新用户的初始登录组。例如:

GROUP=users

passwd文件关联用户配置

passwd 文件是存储用户账户密码信息的文件(我们通常也用来查看系统中存在哪些用户),在Linux系统中通常位于/etc/passwdpasswd 文件包含系统上所有用户的基本信息,包括用户名、用户ID(UID)、组ID(GID)、用户描述信息、主目录以及登录 shell 等。

注意:在Linux中/etc/passwd文件中存放着所有用户的信息,则我们可以利用以下命令来查看用户信息

cat /etc/passwd/ | grep [用户名]  # 查看用户名单

查询出的信息有以下内容,我们用kali展示其信息格式和各部分对应的东西:

在这里插入图片描述

注意/etc/passwd文件并不保存密码,所以密码处为x,下面还有其他查看信息的命令

禁用账户的方法

我们可以在/etc/passwd文件中对应账户前面加上*即可禁用该账户

在这里插入图片描述

如图所示,我们接下来切换xxx用户,发现无法切换:

在这里插入图片描述

shadow文件关联密码配置

在linux中为了安全,将用户的密码以高安全性哈希算法加密后保存在/etc/shadow中:

在这里插入图片描述

注意:保留段用于未来的扩展需求

用户组的种类与标识

用户组的种类

组群种类说明标识
超级组通常指的是root组,具有最高权限。GID=0
系统组用于系统服务和进程,GID为1~499。GID=1~499
自定义组用户创建的普通组,用于自定义用户划分和权限管理。GID≥1000

用户组的标识

组群标识说明
主组用户的默认组,用户默认创建时一般会被分配到一个同名的默认主组。
附加组用户可以加入的其他组,允许用户在不同的组之间共享资源和权限。

group文件关联组配置

/etc/group 文件是Linux系统中存储用户组信息的文本文件。这个文件包含了系统中所有用户组的定义,以及每个用户组的成员列表。在该文件中,每一行表示一个用户组的信息,字段之间使用冒号(:)分隔

除去id命令,我们查看用户组信息也可以查看/etc/group配置文件:

在这里插入图片描述

同样的,此文件一样不会保存密码信息

gshadow文件关联密码配置

/etc/gshadow 文件是Linux系统中存储用户组密码信息的文件。与 /etc/group 文件类似,/etc/gshadow 文件用于存储加密的用户组密码,其中包含关于用户组的敏感信息。这个文件通常只能由超级用户(root)进行编辑

将组群密码加密存放在/etc/gshadow文件中:

在这里插入图片描述

注意:未加密则显示

usermod命令与常见选项

usermod 命令用于修改用户账户的属性,包括用户ID(UID)、主组ID(GID)、附加组、主目录、登录 shell 等。这个命令允许管理员对已有用户进行修改而无需创建新用户。

选项说明
-c, --comment COMMENT设置用户的注释信息。
-d, --home DIRECTORY修改用户的主目录。
-g, --gid GROUP修改用户的初始登录组。
-G, --groups GROUPS修改用户的附加组。多个组之间使用逗号分隔。
-s, --shell SHELL修改用户的登录 shell。
-u, --uid UID修改用户的用户ID。
-e, --expiredate EXPIRE修改用户的过期日期。

**注意:**默认的useradd添加的用户是没有权限使用sudo命令的,需要修改附加组

usermod -G sudo [userName]

groupadd命令与常见选项

groupadd 命令用于在Linux系统中创建新用户组。用户组是一种组织和管理用户的方式,允许用户在共享资源和权限方面进行更好的管理。常见选项有一个,其他可以用时进行了解.

  • 创建自定义用户组
groupadd [groupName]
  • 创建一个用户组,并且指定GID
groupadd -g [groupId] [groupName]

groupdel命令与使用示例

groupdel 命令用于在Linux系统中删除用户组。用户组是一种组织和管理用户的方式,使用 groupdel 命令可以删除不再需要的用户组。它通常不需要额外的选项

groupdel [groupName]

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/353877.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Flutter App 生命周期观察监听

前言 本文主要讲解两种 Flutter生命周期观察监听 方式一:Flutter SDK 3.13 之前的方式,WidgetsBindingObserver; 方式二:Flutter SDK 3.13 开始的新方式,AppLifecycleListener; 测试平台:IO…

《HelloGitHub》第 94 期

兴趣是最好的老师,HelloGitHub 让你对编程感兴趣! 简介 HelloGitHub 分享 GitHub 上有趣、入门级的开源项目。 https://github.com/521xueweihan/HelloGitHub 这里有实战项目、入门教程、黑科技、开源书籍、大厂开源项目等,涵盖多种编程语言 …

宏景-eHR-frcodeaddtreeservlet接口存在SQL注入

指纹特征 FOFA&#xff1a;icon_hash"947874108" || body<div class"hj-hy-all-one-logo" || app"HJSOFT-HCM" 漏洞复现 POST /templates/attestation/../../servlet/FrCodeAddTreeServlet HTTP/1.1 Host: User-Agent: Mozilla/5.0 (Windo…

精品基于Uniapp+ssm宠物时光管理系统App

《[含文档PPT源码等]精品基于Uniappssm宠物时光管理系统App》该项目含有源码、文档、PPT、配套开发软件、软件安装教程、项目发布教程、包运行成功&#xff01; 软件开发环境及开发工具&#xff1a; 开发语言&#xff1a;Java 后台框架&#xff1a;ssm 安卓框架&#xff1a…

游戏开发丨基于Pygame的贪吃蛇小游戏

文章目录 写在前面需求分析程序设计程序分析运行结果系列文章写在后面 写在前面 本期内容 基于pygame的贪吃蛇小游戏 所需环境 pythonpycharm或anacondapygame 下载地址 https://download.csdn.net/download/m0_68111267/88789657 需求分析 本游戏使用Pygame模块开发&a…

Go 知识chan

Go 知识chan 1. 基本知识1.1 定义1.2 操作1.3 操作限定1.4 chan 读写 2. 原理2.1 数据结构2.2 环形队列2.3 等待队列2.4 类型消息2.5 读写数据2.6 关闭chan 3. 使用3.1 操作符使用3.2 select3.3 for-range https://a18792721831.github.io/ 1. 基本知识 chan是go里面里面提供…

ssh异常报错:Did not receive identification string from

一、问题描述 某次外出在异地工作场所xshell炼乳远程服务器时&#xff0c;报错&#xff1a;Connection closed by foreign host. D&#xff0c;服务器查看secure日志或sshd服务状态会显示&#xff1a;id not receive identification string from client_ip; 二、分析处理 1&a…

综合案例 - 商品列表

文章目录 需求说明1.my-tag组件封装&#xff08;完成初始化&#xff09;2.may-tag封装&#xff08;控制显示隐藏&#xff09;3.my-tag组件封装&#xff08;v-model处理&#xff1a;信息修改&#xff09;4.my-table组件封装&#xff08;整个表格&#xff09;①数据不能写死&…

修复idea,eclipse ,clion控制台中文乱码

控制台乱码问题主要原因并不在编译器IDE身上&#xff0c;还主要是Windows的控制台默认编码问题。。。 Powershell&#xff0c;cmd等默认编码可能不是UTF-8&#xff0c;无需改动IDE的settings或者properties&#xff08;这治标不治本&#xff09;&#xff0c;直接让Windows系统…

编写nginx脚本,安装失败

这是我写的nginx脚本-&#xff08;正确的&#xff0c;已经修改过的&#xff09; 这是我在运行脚本是出现的问题 这是我在nginx官网上粘贴的内容&#xff0c;请注意我用红笔画的地方&#xff0c;与第一张我写的脚本图片作对比&#xff0c;会发现多出现两个转义符号\。第二幅图就…

Axolotl:一款极简的大模型微调(Finetune)开源框架

今天给大家分享一款工具&#xff0c;Axolotl[1] 是一个旨在简化各种AI模型的微调过程的工具&#xff0c;支持多种配置和架构。 特点&#xff1a; 可训练各种 Huggingface 模型&#xff0c;如 llama、pythia、falcon、mpt支持 fullfinetune、lora、qlora、relora 和 gptq使用简…

Linux GPIO模拟SPI接口介绍

一. 前言 上次通过GPIO模拟IIC的驱动一块0.98英寸的OLED后&#xff0c;想着下次用下GPIO模拟SPI接口试下。本文会介绍怎么用GPIO模拟SPI接口的方式为设备添加一块spi nor flash&#xff0c;flash模块如下图所示&#xff1a; 上图是一个spi nor模块&#xff0c;上面焊接了W25Q32…

acwing周赛140 b题

思路&#xff1a;我们按照从小到大的顺序将数组逆转好&#xff0c;然后枚举数组首项&#xff0c;分别让其1&#xff0c;-1&#xff0c;0&#xff0c;然后求出公差&#xff0c;从前往后遍历即可。 代码&#xff1a; int ans1(){//不动int cha (a[n] - a[1] 1) / (n - 1);int…

原创改进 | 融合蝠鲼觅食与联想学习的量子多目标灰狼优化算法(Matlab)

​前面的文章里作者介绍了多目标灰狼优化算法(Multi-Objective Grey Wolf Optimizer&#xff0c;MOGWO)&#xff0c;该算法是由Mirjalili等(灰狼算法的提出者)于2016年提出[1]&#xff0c;发表在中科院一区期刊《expert systems with applications》。 MOGWO保留了灰狼算法的种…

无际线复选框

效果演示 实现了一个网格布局&#xff0c;其中每个网格是一个复选框&#xff0c;可以选择是否显示。每个复选框都有一个漂浮的天花板&#xff0c;表示它是一个房间的天花板。每个房间的天花板都有一个不同的形状和颜色&#xff0c;分别对应不同的房间。整个页面的背景是一个由两…

小米13utltra激活冰箱

安装adb驱动https://www.jianshu.com/p/6c41d34d9202 直接下载使用 连接上小米手机,退出账号,关闭锁屏密码,打开usb调试,usb调试(安全设置) adb shell dpm set-device-owner com.catchingnow.icebox/.receiver.DPMReceiver如果显示Success&#xff0c;则您已成功激活冰箱。 …

【DeepLearning-8】MobileViT模块配置

完整代码&#xff1a; import torch import torch.nn as nn from einops import rearrange def conv_1x1_bn(inp, oup):return nn.Sequential(nn.Conv2d(inp, oup, 1, 1, 0, biasFalse),nn.BatchNorm2d(oup),nn.SiLU()) def conv_nxn_bn(inp, oup, kernal_size3, stride1):re…

PostgreSQL技术大讲堂 - 第43讲:流复制原理

PostgreSQL从小白到专家&#xff0c;是从入门逐渐能力提升的一个系列教程&#xff0c;内容包括对PG基础的认知、包括安装使用、包括角色权限、包括维护管理、、等内容&#xff0c;希望对热爱PG、学习PG的同学们有帮助&#xff0c;欢迎持续关注CUUG PG技术大讲堂。 第43讲&#…

每日OJ题_算法_二分查找⑦_力扣153. 寻找旋转排序数组中的最小值

目录 力扣153. 寻找旋转排序数组中的最小值 解析代码 力扣153. 寻找旋转排序数组中的最小值 153. 寻找旋转排序数组中的最小值 - 力扣&#xff08;LeetCode&#xff09; 难度 中等 已知一个长度为 n 的数组&#xff0c;预先按照升序排列&#xff0c;经由 1 到 n 次 旋转 后…

Java NIO初体验

概述 由于BIO&#xff08;同步阻塞IO&#xff09;对系统资源的浪费较大。Java1.4中引⼊了NIO框架&#xff0c;在java.nio包中提供了Channel、Selector、Buffer等抽象类&#xff0c;可以快速构建多路复⽤的IO程序&#xff0c;⽤于提供更接近操作系统底层的⾼性能数据操作⽅式。…