【Linux学习】十五、Linux/CentOS 7 用户和组管理

文章目录

  • 一、组的管理
    • 1.组的创建
      • 格式:
      • 参数:
    • 2.组的删除
      • 格式:
      • 参数:
    • 3.组的属性修改
      • 格式:
      • 参数:
    • 4.查看组的信息
      • ①cat /etc/group 命令
      • ②getent group 命令
      • ③仅显示系统中所有组名
  • 二、用户的管理
    • ①超级用户(Superuser):
    • ②普通用户(Regular User):
    • ③服务用户(Service User):
    • ④系统用户(System User):
    • ⑤匿名用户(Anonymous User):
    • 1. 创建用户
      • 格式:
      • 参数说明:
    • 2.删除用户
      • 格式:
      • 参数说明:
    • 3.查看用户
      • ①id命令
      • 格式:
      • ②whoami 命令
      • ③cat /etc/passwd 命令
      • ④getent passwd 命令
      • ⑤仅显示系统中所有用户名
      • ⑥ w命令:
    • 4.修改用户属性
      • 格式:
      • 选项:
    • 5.切换用户
      • 格式:
      • 选项:
    • 6.设置用户密码:
      • 格式:
      • 选项
    • 7.将用户添加到用户组:
    • 8.从用户组中移除用户:
      • 语法格式:
      • 选项:

Linux下组和用户的管理都必须是root用户下进行:

一、组的管理

1.组的创建

格式:

groupadd 组名

参数:

-g:指定用户组的组ID(GID),如果不提供则由系统自动分配。

【案例】创建一个名为 oldgroup 的新组

groupadd newgroup

系统将自动分配一个唯一的组ID(GID)给这个用户组。

2.组的删除

格式:

groupdel 组名

参数:

-f:强制删除用户组,即使用户组还有关联的用户。
【案例】 删除名为 oldgroup 的组

groupdel oldgroup

3.组的属性修改

格式:

groupmod [选项] 组名

参数:

-n:更改组名
-g:修改用户组的组ID(GID)。
-o:允许使用非唯一的组ID(GID)。
groupmod命令还有其他一些选项和参数,可以使用man groupmod命令在终端中查看groupmod的完整文档和使用说明。
【案例一】将名为"oldgroup"的用户组的组名更改为"newgroup",可以执行以下命令:

groupadd oldgroup
groupmod -n newgroup oldgroup

【案例二】修改名为 “newgroup” 的用户组的组ID(GID)为 1234,可以执行以下命令

groupmod -g 1234 newgroup

4.查看组的信息

①cat /etc/group 命令

在这里插入图片描述

②getent group 命令

在这里插入图片描述
与 cat /etc/group 不同的是,getent group 命令可以从不仅限于 /etc/group 文件中,还包括其他用户组数据库(如 NIS、LDAP 等)中获取用户组信息。

③仅显示系统中所有组名

cut -d: -f1 /etc/group

二、用户的管理

①超级用户(Superuser):

超级用户,也称为root用户,是系统中最高权限的用户。
root用户拥有对整个系统的完全控制权,可以执行任何操作,包括修改系统配置、安装软件、管理其他用户等。
超级用户(root)的UID为0。

②普通用户(Regular User):

普通用户是指一般使用计算机的用户。
普通用户只能访问和修改自己的文件及部分系统资源,无法对整个系统做出重要的变更。
普通用户可以通过sudo命令获取临时超级用户权限,执行需要特权的操作。
普通用户的UID从500开始递增。这些用户是系统中的一般用户,具有交互式登录权限,并且可以根据需要创建、管理和使用文件。

③服务用户(Service User):

服务用户是专门用于运行系统服务和守护进程的用户。
服务用户通常没有登录权限,它们的作用是限制服务进程的权限,以增加系统的安全性。
每个服务用户都与一个或多个特定的服务相关联,这些服务可以在后台运行并提供特定的功能。

④系统用户(System User):

系统用户是用于执行系统任务和特定应用程序的用户。
系统用户通常没有登录权限,它们被用来运行需要特定环境的任务和脚本。
与服务用户类似,系统用户的目的是限制其操作范围,提高系统的安全性和稳定性。
系统用户的UID范围为1到499。这些用户账户用于运行系统服务和进程,通常没有交互式登录权限。

⑤匿名用户(Anonymous User):

匿名用户是不需要身份验证即可访问某些服务或资源的用户。
常见的例子是FTP服务器上的匿名用户,允许用户通过匿名方式下载或上传文件。

1. 创建用户

格式:

useradd  选项   用户名

参数说明:

  • -d 目录 指定用户目录,如果此目录不存在,则同时使用-m选项,可以创建主目录
  • -g 用户组 指定用户所属的用户组
  • -G 用户组 指定用户所属的附加组
  • -s Shell文件 指定用户的登录Shell
  • -u 用户号 指定用户的用户号,如果同时有 -o选项,则可以重复使用其他用户的标识号
  • -c:为用户添加注释,通常是用户的全名或描述。
    【案例一】创建一个名为"username"的用户,可以执行以下命令:
useradd username

【案例二】创建一个名为johndoe的用户,添加了一个注释为"John Doe",指定了/home/johndoe为家目录,并将默认shell设置为/bin/bash,可以执行以下命令:

useradd -c "John Doe" -d /home/johndoe -s /bin/bash johndoe

【案例三】分别创建三个新用户账号:aa、bb 和 cc,并将它们的用户ID(UID)设置为 555、556 和 557,这些用户将/a 作为家目录, 可以执行以下命令:

useradd -u 555 aa -d /a
useradd -u 556 bb -d /a
useradd -u 557 cc -d /a

注意

①执行useradd命令需要root或具有管理员权限的用户。
②使用 useradd 命令只会创建用户账户,但不会设置密码。通常需要使用 passwd 命令为新用户设置密码。

2.删除用户

格式:

userdel 选项 用户名

参数说明:

  • -r:删除用户的HOME主目录及其内容。不指定-r,删除用户时,HOME目录保留
  • -f:强制删除用户账户,即使用户正在登录或有其他进程。
    【案例一】要删除"username"用户及其主目录,可以执行以下命令:
userdel -r usrname

【案例二】分别删除用户账户 aa、bb 和 cc,并且同时删除与这些账户关联的家目录,可以执行以下命令:

userdel -r aa
userdel -r bb
userdel -r cc

3.查看用户

①id命令

显示当前用户的身份信息,包括用户ID(UID)、组ID(GID)以及所属的组。

格式:

id 用户名

②whoami 命令

查看当前登录用户的用户名:

whoami

在这里插入图片描述

③cat /etc/passwd 命令

查看系统中所有用户的详细信息 :
在这里插入图片描述
该命令会读取并显示 /etc/passwd 文件的内容,其中包含了用户账户的相关信息。每行的格式为:

username:password:UID:GID:gecos:directory:shell

注释:

  • username: 用户名
  • password: 加密后的密码(通常是 “x” 或 “*” 表示已在 /etc/shadow 文件中存储)
  • UID: 用户ID(唯一标识符)
  • GID: 主要组ID(与 /etc/group 中的组ID对应)
  • gecos: 用户的全名或注释字段
  • directory: 用户的主目录路径
  • shell: 用户默认的登录Shell
    通过运行 cat /etc/passwd 命令,可以查看和分析系统中所有用户的信息。

④getent passwd 命令

列出系统中所有用户的信息:

getent passwd

在这里插入图片描述

  • getent passwd 命令用于从系统的用户数据库中获取所有用户的信息。它会返回与 /etc/passwd 文件相同格式的输出,包含了系统中所有用户的详细信息。

  • 与 cat /etc/passwd 不同的是,getent passwd 命令可以从不仅限于 /etc/passwd 文件中,还包括其他用户数据库(如 NIS、LDAP 等)中获取用户信息。

⑤仅显示系统中所有用户名

cut -d: -f1 /etc/passwd

在这里插入图片描述

⑥ w命令:

显示当前登录系统的用户信息,包括用户名、终端、登录时间、运行的命令等。
在这里插入图片描述

4.修改用户属性

格式:

usermod [选项] 用户名

选项:

- -c, --comment:修改用户的注释。

  • -d, --home:修改用户的家目录路径。
  • -g, --gid:修改用户的主组ID。
  • -G, --groups:修改用户所属的附加组ID列表。
  • -s, --shell:修改用户的默认shell。
  • -L, --lock:锁定用户账号,禁止用户登录。
  • -U, --unlock:解锁用户账号,允许用户登录。
  • -e, --expiredate:修改用户的过期日期。
    【案例一】要将"username"用户所属的主组更改为"newgroup",可以执行以下命令:
usermod -g newgroup username

【案例二】将修改名为johndoe的用户的注释为"John Smith",家目录为/home/johnsmith,并将默认shell更改为/bin/bash。 可以执行以下命令:

usermod -c "John Smith" -d /home/johnsmith -s /bin/bash johndoe

【案例三】分别修改账号 aa、bb 和 cc 的家目录路径和登录shell:

对于账号 aa,将家目录路径修改为 /newhome1,登录shell修改为 /bin/bash。
对于账号 bb,将家目录路径修改为 /newhome2,登录shell修改为 /bin/sh。
对于账号 cc,将家目录路径修改为 /newhome3,登录shell修改为 /usr/bin/zsh。

usermod -d /newhome1 -s /bin/bash aa
usermod -d /newhome2 -s /bin/sh bb
usermod -d /newhome3 -s /usr/bin/zsh cc

【案例四】分别修改用户 aa 的家目录路径为 /newhome,修改用户 bb 的登录shell为 /bin/bash,以及修改用户 cc 的登录名为 newname ,可以执行以下命令:

usermod -d /newhome aa
usermod -s /bin/bash bb
usermod -l newname cc

5.切换用户

格式:

su [选项] [用户名]

选项:

  • -c, --command:执行指定的命令,而不是打开新的shell。
  • -l, --login:模拟登录为目标用户,加载用户的环境变量和配置文件。
  • -s, --shell:使用指定的shell,而不是目标用户的默认shell。
  • 【案例一】要切换到"username"用户,可以执行以下命令:
  su username

【案例二】切换到超级用户(root)身份,可以执行以下命令:

su

【案例三】切换到johndoe用户,并执行ls -l命令,可以执行以下命令:

su -c "ls -l" -l johndoe

6.设置用户密码:

使用passwd命令为用户设置密码。passwd命令是在Linux系统中用于更改用户密码的命令。它允许用户修改自己的密码或管理员修改其他用户的密码。

格式:

passwd [选项] [用户名]

选项

  • -l, --lock:锁定用户账户,禁止用户使用该账户登录。
  • -u, --unlock:解锁被锁定的用户账户。
  • -d, --delete:删除用户密码,使用户无法通过密码登录,但仍可使用其他身份验证方法登录。
  • -e, --expire:将用户的密码设置为过期状态,在下次登录时需要强制更改密码。
  • -x, --maxdays:设置用户密码的最大有效天数。
  • -n, --mindays:设置用户必须保持密码不变的最短天数。
  • -w, --warndays:在密码过期之前提前多少天向用户发出警告。
    ①更改当前用户密码
passwd

②更改特定用户的密码:

passwd 用户名

③锁定用户账户:

passwd -l 用户名

7.将用户添加到用户组:

使用usermod命令可以将用户添加到一个或多个用户组
【案例一】要将名为"username"的用户添加到"mygroup"用户组,可以执行以下命令:

usermod -aG mygroup username

8.从用户组中移除用户:

使用gpasswd命令可以从用户组中移除用户。gpasswd 命令用于管理用户组的密码和成员。它允许管理员设置用户组的密码、添加或删除用户组的成员。

语法格式:

gpasswd [选项] 组名

选项:

-a, --add 用户名:将指定的用户添加到目标用户组。
-d, --delete 用户名:从目标用户组中删除指定的用户。
-r, --remove-password:从目标用户组中移除密码,使用户组无需密码即可加入。
-R, --restrict:限制只有用户组的所有者和超级用户(root)可以添加或删除成员。
-M, --members 用户列表:设置用户组的成员列表,替换原有成员列表。
管理用户组的示例:

①添加用户到用户组:

gpasswd -a 用户名 组名

②从用户组中删除用户:

gpasswd -d 用户名 组名

③设置用户组的密码:

gpasswd 组名

④移除用户组的密码:

gpasswd -r 组名

例如,要将名为"username"的用户从"mygroup"用户组中移除,可以执行以下命令:

gpasswd -d username mygroup

注意

执行gpasswd命令需要root或具有管理员权限的用户。

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

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

相关文章

一个开源的自托管虚拟浏览器项目,支持在安全、私密的环境中使用浏览器

大家好,今天给大家分享一个开源的自托管虚拟浏览器项目Neko,旨在利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器,为用户提供安全、私密且多功能的浏览体验。 项目介绍 Neko利用 WebRTC 技术在 Docker 容器中运行虚拟浏览器,提供…

JAVA没有搞头了吗?

前言 今年的Java程序员群体似乎承受着前所未有的焦虑。投递简历无人问津,难得的面试机会也难以把握,即便成功入职,也往往难以长久。于是,不少程序员感叹:互联网的寒冬似乎又一次卷土重来,环境如此恶劣&…

asp.net repeater嵌套

OnItemCreated方式 <%-- 一级Repeater绑定班级信息 --%><asp:Repeater ID"rptClassInfo" runat"server" OnItemCreated"rptClassInfo_ItemCreated"><ItemTemplate><div class"classInfo"><h3><%# Ev…

SpringBoot 开启热部署 项目热启动 一键调试无需 无需重启

依赖 <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-devtools</artifactId><scope>runtime</scope> <!-- 只在开发环境下使用 --> </dependency>Idea设置 设置完后&#xff0c;修…

小程序快速实现大模型聊天机器人

需求分析&#xff1a; 基于大模型&#xff0c;打造一个聊天机器人&#xff1b;使用开放API快速搭建&#xff0c;例如&#xff1a;讯飞星火&#xff1b;先实现UI展示&#xff0c;在接入API。 最终实现效果如下&#xff1a; 一.聊天机器人UI部分 1. 创建微信小程序&#xff0c…

MySQL笔记--多表查询

1--多表关系 多表关系基本上分为三种&#xff1a; 一对多&#xff08;多对一&#xff09;&#xff1b; 多对多&#xff1b; 一对一&#xff1b; 1-1--多对一 在多的一方建立外键&#xff0c;指向一的一方的主键&#xff1b; 1-2--多对多 建立第三张中间表&#xff0c;中间表至少…

【多模态】MiniCPM-V多模态大模型使用学习

MiniCPM-V模型使用 前言1. 模型文件下载和选择2. 环境安装配置3. 模型微调3.1 qlora微调minicpm-v-int43.2 lora微调minicpm-v3.3 merge_lora3.4 lora微调后量化int4 4. 模型推理4.1 huggingface API4.2 swift API(A) swift&#xff08;不支持batch inference&#xff09;(B) s…

C#多线程系列章节五

线程创建的几种写法 thread类 threadpool 线程池 task类 Thread t = new Thread(func); t.Start();//线程开始执行threadPool.QueueUserWorkItem(test)创建var t1 = new Task(() => test(“Task 1”));t.start();Task.Run(() => test(“Task 2”));Task.Factory.StartNew…

clickhouse-介绍、安装、数据类型、sql

1、介绍 ClickHouse是俄罗斯的Yandex于2016年开源的列式存储数据库&#xff08;DBMS&#xff09;&#xff0c;使用C语言编写&#xff0c;主要用于在线分析处理查询&#xff08;OLAP&#xff09;&#xff0c;能够使用SQL查询实时生成分析数据报告。 OLAP&#xff08;On-Line A…

Audition 2025 for Mac Au音频编辑软件

Mac分享吧 文章目录 Audition 2025 for Mac Au音频编辑软件 效果图展示一、Audition 2025 Au音频编辑软件 Mac电脑版——v25.0⚠️注意事项&#xff1a;1️⃣&#xff1a;下载软件2️⃣&#xff1a;安装软件2.1 安装AntiCC_5.9_简化版&#xff0c;操作步骤如下&#xff1a;2.2…

JAVA题目笔记(二十五)网络编程综合小练qa!3EF TG6U8.L;

一、多发多收 客户端&#xff1a; import java.io.*; import java.net.Socket; import java.util.Scanner;public class Test1_2 {public static void main(String[] args) throws IOException {//TCP发送端Scanner scnew Scanner(System.in);String b;//创建Socket对象Socket…

决策树的生成与剪枝

决策树的生成与剪枝 决策树的生成生成决策树的过程决策树的生成算法 决策树的剪枝决策树的损失函数决策树的剪枝算法 代码 决策树的生成 生成决策树的过程 为了方便分析描述&#xff0c;我们对上节课中的训练样本进行编号&#xff0c;每个样本加一个ID值&#xff0c;如图所示…

基于SpringBoot的疫苗在线预约功能实现十二

一、前言介绍&#xff1a; 1.1 项目摘要 随着全球公共卫生事件的频发&#xff0c;如新冠疫情的爆发&#xff0c;疫苗成为了预防和控制传染病的重要手段。传统的疫苗预约方式&#xff0c;如人工挂号或电话预约&#xff0c;存在效率低、易出错、手续繁琐等问题&#xff0c;无法…

MySQL基础 -----MySQL数据类型

目录 INT类型 tinyint类型 类型大小范围 测试tinyint类型数据 float类型 测试&#xff1a; 测试正常数据范围的数据 测试插入范围超过临界值的数据&#xff1a; 测试float类型的四舍五入 ​编辑 decimal类型 同样测试&#xff1a; 字符串类型 char类型 测试&…

代码开发相关操作

使用Vue项目管理器创建项目&#xff1a;&#xff08;vue脚手架安装一次就可以全局使用&#xff09; windowR打开命令窗口&#xff0c;输入vue ui&#xff0c;进入GUI页面&#xff0c;点击创建-> 设置项目名称&#xff0c;在初始化git下面输入&#xff1a;init project&…

如何在 Ubuntu 22.04 上安装和使用 Rust 编程语言环境

简介 Rust 是一门由 Mozilla 开发的系统编程语言&#xff0c;专注于性能、可靠性和内存安全。它在没有垃圾收集的情况下实现了内存安全&#xff0c;这使其成为构建对性能要求苛刻的应用程序&#xff08;如操作系统、游戏引擎和嵌入式系统&#xff09;的理想选择。 接下来&…

MybatisPlus-配置加密

配置加密 目前配置文件中的很多参数都是明文&#xff0c;如果开发人员发生流动&#xff0c;很容易导致敏感信息的泄露。所以MybatisPlus支持配置文件的加密和解密功能。 我们以数据库的用户名和密码为例。 生成秘钥 首先&#xff0c;我们利用AES工具生成一个随机秘钥&#…

记录:virt-manager配置Ubuntu arm虚拟机

virt-manager&#xff08;Virtual Machine Manager&#xff09;是一个图形用户界面应用程序&#xff0c;通过libvirt管理虚拟机&#xff08;即作为libvirt的图形前端&#xff09; 因为要在Linux arm环境做测试&#xff0c;记录下virt-manager配置arm虚拟机的过程 先在VMWare中…

ChatGPT客户端安装教程(附下载链接)

用惯了各类AI的我们发现每天打开网页还挺不习惯和麻烦&#xff0c;突然发现客户端上架了&#xff0c;懂摸鱼的人都知道这里面的道行有多深&#xff0c;话不多说&#xff0c;开整&#xff01; 以下是ChatGPT客户端的详细安装教程&#xff0c;适用于Windows和Mac系统&#xff1a…

Element@2.15.14-tree checkStrictly 状态实现父项联动子项,实现节点自定义编辑、新增、删除功能

背景&#xff1a;现在有一个新需求&#xff0c;需要借助树结构来实现词库的分类管理&#xff0c;树的节点是不同的分类&#xff0c;不同的分类可以有自己的词库&#xff0c;所以父子节点是互不影响的&#xff1b;同样为了选择的方便性&#xff0c;提出了新需求&#xff0c;选择…