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]

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

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【C++】类与对象(二)特殊成员函数

前言 类与对象(二) 文章目录 一、特殊成员函数二、构造函数三、析构函数四、拷贝构造函数五、拷贝赋值运算符 一、特殊成员函数 如果在类的声明中未显式提供某个成员函数的定义,编译器会自动生成一个默认实现。 这包括默认构造函数、默认析构…

Redis的数据类型

目录 string 1.编码方式 2.应用场景 3.常用命令 hash 1.编码方式 2.应用场景 3.常用命令 list 1.编码方式 2.应用场景 3.常用命令 set 1.编码方式 2.应用场景 3.常用命令 zset 1.编码方式 2.应用场景 3.常用命令 如何理解Redis的编码方式 embs…

【Python】03快速上手爬虫案例三:搞定药师帮

文章目录 前言1、破解验证码2、获取数据 前言 提示:通过用户名、密码、搞定验证码,登录进药师帮网站,然后抓取想要的数据。 爬取数据,最终效果图: 1、破解验证码 使用药师帮测试系统:https://dianrc.ysb…

【保驾护航】HarmonyOS应用开发者基础认证-题库-2024

通过系统化的课程学习,熟练掌握DevEco Studio,ArkTS,ArkUI,预览器,模拟器,SDK等HarmonyOS应用开发的关键概念,具备基础的应用开发能力。 考试说明 1、考试需实名认证,请在考前于个…

有哪些ssl证书推荐

SSL证书是由CA认证机构颁发的数字证书,可以用来实现网站的身份验证和数据加密,保障用户与网站之间的通信安全。现在市场上知名的CA认证机构Digicert、Sectigo、Certum等,都已经成立了几十年,每年都要进行WebTrust安全审计&#xf…

HTTPS 之fiddler抓包--jmeter请求

一、浅谈HTTPS 我们都知道HTTP并非是安全传输,在HTTPS基础上使用SSL协议进行加密构成的HTTPS协议是相对安全的。目前越来越多的企业选择使用HTTPS协议与用户进行通信,如百度、谷歌等。HTTPS在传输数据之前需要客户端(浏览器)与服…

【Python笔记-设计模式】抽象工厂模式

一、说明 (一) 解决问题 抽象工厂是一种创建型设计模式,主要解决接口选择的问题。能够创建一系列相关的对象,而无需指定其具体类。 (二) 使用场景 系统中有多于一个的产品族,且这些产品族类的产品需实现同样的接口。 例如:有…

数字人解决方案VividTalk——音频驱动单张照片实现人物头像说话的效果

前言 VividTalk是一项由南京大学、阿里巴巴、字节跳动和南开大学共同开发的创新项目。该项目通过结合单张人物静态照片和一段语音录音,能够制作出一个看起来仿佛实际说话的人物视频。项目的特点包括自然的面部表情和头部动作,口型能够同步,同…

HarmonyOS 鸿蒙驱动消息机制管理

驱动消息机制管理 使用场景 当用户态应用和内核态驱动需要交互时,可以使用HDF框架的消息机制来实现。 接口说明 消息机制的功能主要有以下两种: 用户态应用发送消息到驱动。 用户态应用接收驱动主动上报事件。 表1 消息机制接口 方法描述struct …

防御保护笔记02

防火墙 防火墙的主要职责在于:控制和防护 ---- 安全策略 --- 防火墙可以根据安全策略来抓取流量 防火墙分类 按物理特性划分 软件防火墙 硬件防火墙 按性能划分 百兆级防火墙 吞吐量:指对网络、设备、端口、虚电路或其他设施,单位时间内成…

架构整洁之道-价值维度与编程范式

1 设计与架构究竟是什么 结论:二者没有任何区别,一丁点区别都没有。 架构图里实际上包含了所有底层设计细节,这些细节信息共同支撑了顶层的架构设计,底层设计信息和顶层架构设计共同组成了整个架构文档。底层设计细节和高层架构信…

最新GPT4.0使用教程,AI绘画-Midjourney绘画,GPT语音对话使用,DALL-E3文生图+思维导图一站式解决

一、前言 ChatGPT3.5、GPT4.0、GPT语音对话、Midjourney绘画,文档对话总结DALL-E3文生图,相信对大家应该不感到陌生吧?简单来说,GPT-4技术比之前的GPT-3.5相对来说更加智能,会根据用户的要求生成多种内容甚至也可以和…

【HarmonyOS应用开发】ArkUI 开发框架-基础篇-第一部分(七)

常用基础组件 一、组件介绍 组件(Component)是界面搭建与显示的最小单位,HarmonyOS ArkUI声明式开发范式为开发者提供了丰富多样的UI组件,我们可以使用这些组件轻松的编写出更加丰富、漂亮的界面。组件根据功能可以分为以下五大类…

深入理解Redis:如何设置缓存数据的过期时间及其背后的机制

目录 Redis 给缓存数据设置过期时间 Redis是如何判断数据是否过期的呢? 过期的数据的删除策略 Redis 内存淘汰机制 Redis 给缓存数据设置过期时间 一般情况下,我们设置保存的缓存数据的时候都会设置一个过期时间。为什么呢? 因为内存是有…

Django模型(一)

一、介绍 模型,就是python中的类对应数据库中的表 1.1、ORM ORM 就是通过实例对象的语法,完成关系型数据库的操作的技术,是"对象-关系映射"(Object/Relational Mapping) 的缩写 ORM 把数据库映射成对象 1.…

【Linux】压缩脚本、报警脚本

一、压缩搅拌 要求: 写一个脚本,完成如下功能 传递一个参数给脚本,此参数为gzip、bzip2或者xz三者之一; (1) 如果参数1的值为gzip,则使用tar和gzip归档压缩/etc目录至/backups目录中,并命名为/backups/etc…

Java-并发高频面试题

1.说一下你对Java内存模型(JMM)的理解? 其实java内存模型是一种抽象的模型,具体来看可以分为工作内存和主内存。 JMM规定所有的变量都会存储再主内存当中,再操作的时候需要从主内存中复制一份到本地内存(c…

C++(6) 继承

文章目录 继承1. 继承1.1 什么是继承1.2 C 继承方式1.2.1 基本案例1.2.2 继承权限组合1.2.3 继承中构造函数的说法1.2.4 继承中析构函数的执行顺序1.2.5 继承中变量名称冲突问题1.2.6 继承中函数【重写】 继承 1. 继承 1.1 什么是继承 面向对象程序设计中最重要的一个概念是继…

【linux】复制cp和硬连接、软连接的区别? innode 关系?

1.命令: cp -r [源文件或目录] [目的目录] #复制 ln -s [被链接的文件] [链接的目录/名称] #软连接 ln [被链接的文件] [链接的目录/名称] #硬连接 注:cp -r 会把所有source当作普通文件(regular文件)&#x…

把批量M3U8网络视频地址转为MP4视频

在数字媒体时代,视频格式的转换已成为一项常见的需求。尤其对于那些经常处理网络视频的用户来说,将M3U8格式的视频转换为更常见的MP4格式是一项必备技能。幸运的是,现在有了固乔剪辑助手这款强大的工具,这一过程变得异常简单。下面…