Linux 用户和用户组管理详解

文章目录

  • Linux 用户和用户组管理详解
    • 用户和用户组概念
  • 添加和删除用户
    • 添加用户
    • 删除用户
  • 用户组管理
    • 添加用户组
    • 删除用户组
    • 将用户加入用户组
  • 禁用和启用用户
    • 临时禁用用户
    • 恢复用户
  • 显示用户和组信息
  • 高级用户管理
    • 批量删除组内用户
    • 配置 sudo 权限
  • 用户和用户组的配置文件
  • 用户的 UID 和 GID
  • 用户密码过期设置
  • 创建系统用户
  • 限制用户的资源使用
  • 用户登录时间限制
  • 结语


Linux 用户和用户组管理详解

在 Linux 系统中,用户(user)和用户组(group)的管理是日常运维的重要部分。本篇将详细讲解如何添加和删除用户、用户组,并介绍常见的管理操作。

用户和用户组概念

  • 用户(user):每个登录 Linux 系统的用户都有一个独立的身份。用户不仅可以操作自己的文件,还能基于权限访问其他资源。

  • 用户组(group):用户组是多个用户的集合,组内用户拥有相同的权限。例如,你可以为多个用户分配同一组以便共享某些资源。

添加和删除用户

添加用户

adduser username  # 创建新用户

该命令会自动为用户创建主目录,并生成一些初始化文件。
示例

adduser test1
passwd test1# 设置 test1 用户密码

删除用户

userdel username  # 删除用户

注意:使用 userdel 仅删除用户,用户的主目录和文件仍会保留。若要删除用户并同时删除其主目录,使用以下命令:

userdel -r username  # 删除用户及其主目录

用户组管理

添加用户组

groupadd groupname  # 创建新用户组

示例

groupadd test2 # 创建名为 test2 的用户组

删除用户组

groupdel groupname  # 删除用户组
groupdel test2 # 删除 test2 用户组

将用户加入用户组

你可以在创建用户时将其分配到一个特定用户组:

useradd -g groupname username

示例

useradd -g test2 test2   # 将 test1 用户加入 test2 组

也可以在用户已存在时,将其加入某个组:

usermod -aG groupname username

-aG 参数保证添加组而不移除其他用户组。

注意:不要使用 usermod -G,因为这会删除用户原有的组。

禁用和启用用户

临时禁用用户

通过在 /etc/shadow 文件中修改用户密码字段,可以临时禁用某用户:

passwd username -l  # 锁定用户

恢复用户

passwd username -u  # 解锁用户

显示用户和组信息

使用以下命令查看用户和组的详细信息:

id username  # 显示用户ID、组ID及所属组
cat /etc/passwd  # 查看用户信息
cat /etc/group  # 查看组信息

高级用户管理

批量删除组内用户

你可以使用以下命令从用户组中移除特定用户:

gpasswd -d username groupname  # 将用户从组中删除

示例

gpasswd -d test1  test2  # 将 test1 用户从 test2 组中移除

配置 sudo 权限

要允许某组用户无密码执行 sudo 命令,可以在 /etc/sudoers.d/ 目录下创建文件,内容如下:

%groupname ALL=(ALL) NOPASSWD: ALL

示例

%devteam ALL=(ALL) NOPASSWD: ALL

这样,devteam 组的所有用户都可以无密码执行 sudo 操作。

用户和用户组的配置文件

  • /etc/passwd:存放系统中所有用户的基本信息。
  • /etc/shadow:存储用户的加密密码及密码过期时间等信息。
  • /etc/group:存储用户组信息。
  • /etc/gshadow:存储用户组的加密信息。

用户的 UID 和 GID

每个用户都有一个唯一的用户 ID(UID)和组 ID(GID),这些标识用于确定文件系统中的权限。

  • UID:用户 ID,用于标识系统中的用户,通常从 1000 开始分配给普通用户。
  • GID:组 ID,用于标识用户所属的主组。默认情况下,用户的 GID 与其 UID 相同。

查看 UID 和 GID

id username

手动指定 UID 或 GID

useradd -u 1500 -g 1500 username  # 指定 UID 和 GID

用户密码过期设置

在安全性要求较高的环境中,可以设置用户密码的有效期,以强制定期更新密码。

查看密码有效期

chage -l username  # 查看用户密码的过期信息

设置密码有效期

chage -M 90 username  # 设置密码有效期为 90 天
chage -E "2024-12-31" username  # 设置用户账号到期时间

创建系统用户

系统用户是用于系统服务和后台进程的用户,通常不允许登录。你可以通过指定 -r 参数来创建系统用户:

adduser -r systemuser

限制用户的资源使用

为了防止某个用户占用过多的系统资源,可以设置用户的资源限制。这些限制通过 ulimit 或配置 /etc/security/limits.conf 文件来实现。

修改 limits.conf 示例

username soft nproc 1000  # 限制最大进程数为 1000
username hard nproc 2000  # 硬性限制最大进程数为 2000
username soft nofile 1024  # 限制最大文件描述符数

用户登录时间限制

如果需要限制某个用户只能在特定时间内登录系统,可以通过 pam_time.so 模块来实现,配置 /etc/security/time.conf 文件:

配置示例

login ; * ; username ; Al0800-1800  # 限制用户只能在早上 8 点到晚上 6 点之间登录

结语

通过本文的详细讲解,您可以掌握 Linux 系统中用户和用户组的管理操作。无论是创建新用户、删除用户、还是调整用户组权限,这些命令和技巧都能帮助您高效地管理系统用户和组。

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

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

相关文章

【Linux-基础IO】软硬链接+动静态库

一、软硬链接 见一见 软连接 硬连接 通过观察我们发现以下几点: 1.ll - i后,软连接形成的文件有指向,并且软连接的Inode编号与对应文件的Inode编号不一样 2.ll - i后,硬连接形成的文件与对应的文件Inode编号一样 3.软连接…

大佬,简单解释下“嵌入式软件开发”和“嵌入式硬件开发”的区别

在开始前刚好我有一些资料,是我根据网友给的问题精心整理了一份「嵌入式的资料从专业入门到高级教程」, 点个关注在评论区回复“888”之后私信回复“888”,全部无偿共享给大家!!!首先,嵌入式硬…

初识数据结构--时间复杂度 和 空间复杂度

数据结构前言 数据结构 数据结构是计算机存储、组织数据的方式(指不仅能存储数据,还能够管理数据-->增删改)。指相互之间存在一种或多种特定关系的数据元素的集合。没有单一的数据结构对所有用途都有用,所以我们要学习各种的数据结构,比…

visual studio使用ssh连接linux虚拟机运行程序

1.vs安装linux组件 2.安装后新建项目 新建后会有一个使用指南 设置网络为桥接网卡后打开虚拟机 使用vs提升的那句话安装工具 sudo apt-get install openssh-server g gdb gdbserver 重启ssh服务 sudo service ssh restart 接着进去打开ssh端口 sudo vi /etc/ssh/sshd_config …

5-容器管理工具Docker

├──5-容器管理工具Docker | ├──1-容器管理工具Docker | | ├──1-应用部署容器化演进之路 | | ├──2-容器技术涉及Linux内核关键技术 | | ├──3-Docker生态架构及部署 | | ├──4-使用容器运行Nginx及docker命令介绍 | | ├──5-容器镜像介…

Unity3D 动画回调函数详解

在Unity3D中,动画回调函数是实现精细动画效果的重要工具。通过动画回调函数,我们可以在动画的特定时刻执行自定义代码,从而实现更加灵活和复杂的动画效果。本文将详细解释Unity3D中的动画回调函数,并提供相应的代码实现。 对惹&a…

pytest的基础入门

pytest判断用例的成功或者失败 pytest识别用例失败时会报AssertionError或者xxxError错误,当捕获异常时pytest无法识别到失败的用例 pytest的fixture夹具 pytest的参数化 #coding:utf-8 import pytestfrom PythonProject.pytest_test.funcs.guess_point import ge…

在 MySQL 中通过自定义哈希分片实现大规模数据的多线程并行处理20241008

在 MySQL 中通过自定义哈希分片实现大规模数据的多线程并行处理 虽然 MySQL 没有像 ORA_HASH 这样的内置哈希函数,但我们可以通过其他函数来实现类似的效果,并将数据分片到多个线程中并行处理。下面,我们将使用 MySQL 的 CRC32 函数来演示如…

小程序知识付费的优势 知识付费服务 知识付费平台 知识付费方法

在信息爆炸的时代,知识如同繁星点点,璀璨而散落。如何在这片知识的海洋中精准捕捞,成为现代人追求自我提升的迫切需求。小程序知识付费,正是这样一座桥梁,它以独特的优势,让智慧触手可及,轻触未…

Miniconda更改虚拟环境创建路径

Miniconda更改虚拟环境创建路径 文章目录 Miniconda更改虚拟环境创建路径前言步骤一 修改配置文件步骤二 提升路径访问权限步骤三 测试配置修改是否生效 前言 在我使用 conda 命令创建新的虚拟环境时,发现创建好的虚拟环境存放路径是在 ../miniconda3/pkgs/ 路径下…

Nginx从入门到实战(八):版本平滑无感知,不停机升级

一、查看旧版本信息 可以通过nginx -V命令,来查看当前nginx的版本信息,和配置参数。 [rootnb001 sbin]# nginx -V -bash: nginx: command not found [rootnb001 sbin]# ./nginx -V nginx version: nginx/1.20.1 built by gcc 4.8.5 20150623 (Red Hat …

C/C++语言基础--C++神奇的多态

本专栏目的 更新C/C的基础语法,包括C的一些新特性 前言 通过前面几节课,我们学习了抽象、封装、继承相关的概念,接下来我们将讲解多态,多态他非常神奇,正式有了他,类才能出现多样性特征;C语言…

【C++差分数组】P1672何时运输的饲料

本文涉及知识点 C差分数组 C算法&#xff1a;前缀和、前缀乘积、前缀异或的原理、源码及测试用例 包括课程视频 P1672何时运输的饲料 原文比较啰嗦&#xff0c;我简述一下&#xff1a; 第x天运来F1(1<F1<1e6)千克的饲料&#xff0c;第D&#xff08;1<2e3)天还剩F2&…

DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中?

[ 知识是人生的灯塔&#xff0c;只有不断学习&#xff0c;才能照亮前行的道路 ] 原文链接&#xff1a;DBA | 如何将 .mdf 与 .ldf 的数据库文件导入到SQL Server 数据库中? 如何将 (.mdf) 和 (.ldf) 的SQL Server 数据库文件导入到当前数据库中? Step 1.登录到 Sql Server 服…

【Nginx系列】Nginx启动失败

&#x1f49d;&#x1f49d;&#x1f49d;欢迎来到我的博客&#xff0c;很高兴能够在这里和您见面&#xff01;希望您在这里可以感受到一份轻松愉快的氛围&#xff0c;不仅可以获得有趣的内容和知识&#xff0c;也可以畅所欲言、分享您的想法和见解。 推荐:kwan 的首页,持续学…

Java笔记Day42:初入六六村!(springMVC前后端不同数据类型传值)

1.前端传参方式: 1.url传参&#xff1a; 数据参数直接写在url地址中&#xff0c;一般使用get请求。 使用params传输的就是url类型的参数&#xff1b; &#xff08;params 参数通常用于发送 URL 查询参数。 这些参数会附加到请求的 URL 中&#xff0c; 并以 keyvalue 的形…

数学建模算法与应用 第12章 现代优化算法

目录 12.1 粒子群优化算法 Matlab代码示例&#xff1a;粒子群优化算法求解函数最小值 12.2 遗传算法 Matlab代码示例&#xff1a;遗传算法求解函数最小值 12.3 蚁群算法 Matlab代码示例&#xff1a;蚁群算法求解旅行商问题 12.4 Matlab 遗传算法工具 使用遗传算法工具箱…

docker overlay 占用空间太大,迁移到 /data/

将 Docker 的 overlay 存储驱动迁移到 /data/ 目录下&#xff0c;可以通过以下步骤完成&#xff1a; 1. 停止 Docker 服务 首先&#xff0c;停止 Docker 服务以确保没有容器在运行&#xff0c;并且数据不会被写入到当前的存储位置。 sudo systemctl stop docker2. 备份现有数…

PyCharm打开及配置现有工程(详细图解)

本文详细介绍了如何利用Pycharm打开一个现有的工程&#xff0c;其中包括编译器的配置。 PyCharm打开及配置现有工程 1、打开工程2、配置编译器 1、打开工程 双击PyCharm软件&#xff0c;点击左上角 文件 >> 打开(O)… 选中想要打开的项目之后点击“确定” 2、配置编译器…

余承东直播论道智能驾驶:激光雷达不可或缺,华为ADS 3.0引领安全创新

华为余承东:激光雷达,智能驾驶安全性的关键 9月29日,华为消费者业务集团CEO余承东在一场引人注目的直播中,与知名主持人马东就智能驾驶技术的最新进展进行了深入交流。在这场直播中,余承东针对激光雷达在智能驾驶中的必要性问题,发表了明确且深刻的观点,引发了业界和公众…