管理Linux本地用户和组

什么是用户

用户账户在可以运行命令的不同人员和程序之间提供安全界限。

在Linux系统中,系统通过分配唯一的标识号(用户ID或UID)来区分不同的用户帐户。

在Linux系统中,用户帐户有以下三种主要类型:

  1. 超级用户

负责管理系统。超级用户的名称为root。UID为0,具有完全的系统访问权限。

  1. 系统用户

供提供支持服务的进程使用。用户无法使用系统用户帐户以交互式方式登录。

  1. 普通用户。

普通用户对系统具有有限的访问权限。

使用id命令可显示有关当前已登录用户的信息;

[root@localhost ~]# id
uid=0(root) gid=0(root) groups=0(root) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023
[root@localhost ~]# id user
uid=1000(user) gid=1000(user) groups=1000(user)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

使用ls命令-l选项可以查看文件的所有者。

对以上字段的说明:

drwxr-xr-x. 表示权限,d表示为文件夹,通常为3段,第一段为user,第二段为group,第三段为others,它们的最高权限位rwx.

1 第二列内容表示链接

第三列root表示该文件或者文件夹的拥有者为root,即所属用户。

第四列root表示该文件或者文件夹的所属组为root,即所属组。

第五列表示文件的大小。

Jul 8 14:10 表示文件或者文件夹的修改时间。

最后一列表示文件名称或者文件夹名称。

默认情况下,系统使用/etc/passwd文件存储有关本地用户的信息。

user 此用户的用户名;

x: 用户的加密密码存储在这里,是一个占位符;

1000: 此用户帐户的UID编号;

1000: 此用户帐户的主要组的GID编号;

user: 此用户的简短注释、描述;

/home/user: 用户的主目录,以及登录shell启动时的初始工作目录;

/bin/bash: 此用户的默认shell程序,在登录时运行。

用户相关文件
  • /etc/passwd:存储用户账户信息的文件。
  • /etc/shadow:存储用户密码及其相关信息的文件。
  • /etc/group:存储组信息的文件。

常用用户管理命令:

useradd:创建或添加一个新用户。

useradd 命令可以创建名为username的用户(username替换为实际创建的用户名)。它会设置用户的主目录和帐户信息,并为该用户创建一个私有组。

在rhel9中,useradd命令为新用户分配第一个大于或等于1000的可用UID,除非通过-u选项进行明确指定。

[root@localhost ~]# useradd user
[root@localhost ~]# id user 
uid=1002(user) gid=1005(user) groups=1005(user)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==

 

usermod用于修改用户的各项参数信息。

usernod --help命令显示用于修改帐户的基本选项。

usermod选项

用法

-a --append

与-G选项一起使用将补充组添加到用户当前的组成员集合中,而不是将补充组集合替换为新的集合。

-c --comment COMMENT

将COMMENT文本添加到 注释字段。

-d,--home HOME_DIR

为用户帐户指定一个主目录。

-g,--gid GROUP

为用户帐户指定主要组。

-G

为用户帐户指定补充组的逗号分隔列表。

-L, --lock

锁定用户帐户。

-u,--unlock

解锁用户帐户。

-m

将用户的主目录移到新的位置。必须将其与-d选项搭配使用。

-s

为用户帐户指定特定的登录shell。

[root@localhost ~]# mkdir /alex_home 
[root@localhost ~]# usermod -d /alex_home alex    #为用户指定新的主目录;[root@localhost ~]# usermod -u 8286 alex     #为用户指定UID
[root@localhost ~]# id alex 
uid=8286(alex) gid=1000(alex) groups=1000(alex)
wAAACH5BAEKAAAALAAAAAABAAEAAAICRAEAOw==
[root@localhost ~]# usermod -L alex  #锁定用户帐户

  

[root@localhost ~]# usermod -U alex  #解锁用户帐户
[root@localhost ~]# usermod -aG docker alex  #将用户添加到docker组中

userdel 命令从/etc/passwd中删除用户的详细信息,但用户的主目录保持不变。userdel -r 命令从/etc/passwd中删除用户,同时删除用户的主目录。

[root@localhost ~]# userdel -r alex
[root@localhost ~]# cat /etc/passwd | grep alex

删除用户不指定userdel -r选项的情况删除用户,会造成信息泄露。

passwd 命令可为username用户设置初始密码,或更改其现有的密码。

root用户可以将密码设置为任何值, 普通用户必须选择至少八个字符长的密码。不要使用字典词语、用户名或旧密码。

UID范围

UID 0: 超级用户root帐户UID。

UID 1-200: 静态分配给系统进程的系统帐户UID。

UID 201-999: 分配给不拥有此系统上文件的系统进程的UID。需要非特权UID的软件将会从这个可用池中动态分配UID。

UID 1000+: 分配给普通非特权用户的UID范围。

切换用户

通过使用su命令,用户可以切换至另外一个用户帐户。

如果从一个普通用户切换到另外一个普通用户,或者从普通用户切换到超级用户root,则需要提供要切换到的帐户的密码。以root用户身份切换普通用户时,则无需输入用户密码。

[user@localhost ~]$ su - alex
Password: 
[alex@localhost ~]$ su root
Password: 
[root@localhost alex]# su - user

 如果普通用户切换用户时省略用户名,默认情况下su或su -命令会尝试切换到root。

[alex@localhost ~]$ su -
Password: 
[root@localhost ~]#

su 和 su -区别:

  • su 切换用户但保持当前环境。
  • su - 切换用户并加载新用户的完整登录环境。

sudo命令在Linux中用于以超级用户或另一个用户的权限执行命令。它允许受限权限的用户执行需要更高权限的命令,而无需切换到超级用户身份。

与su命令不同,sudo通常要求用户输入其自己的密码以进行身份验证,而不是输入他们正尝试访问的用户帐户的密码。

下表总结了su、su - 和sudo命令之间的区别:

su

su -

sudo

成为新用户

依据升级的命令

环境

当前用户的

新用户的

当前用户的

需要密码

新用户的

新用户的

当前用户的

特权

与新用户相同

与新用户相同

由配置定义

记录的活动

仅su命令

仅su命令

依据升级的命令

管理本地组

 组是用户的集合,用于简化对多个用户的权限管理。同一组内的用户可以共享对某些文件或目录的访问权限。

groupadd命令用于创建组。

[root@localhost ~]# groupadd group01
[root@localhost ~]# cat /etc/group | grep group01
group01:x:1000:

groupadd命令-g选项指定供组使用的特定GID。

[root@localhost ~]# groupadd -g 2024 group02
[root@localhost ~]# cat /etc/group | grep group02
group02:x:2024:

groupadd命令-r选项用于创建系统组。

[root@localhost ~]# cat /etc/group | grep group03
group03:x:978:

普通组是由系统管理员创建的,用于将多个用户组织在一起,以便共享文件和资源。普通组的ID(GID)通常在500(有些系统是1000)以上,这取决于系统配置。

系统组是系统默认创建的,用于分配系统进程和服务的权限。系统组的ID(GID)通常在0到499(或999)之间,这取决于系统配置。

groupmod命令可更改现有组的属性。

groupmod命令-n选项可指定组的新名称。

[root@localhost ~]# groupmod -n group22 group01
[root@localhost ~]# cat /etc/group | grep group22
group22:x:1000:

groupmod -g选项可指定新的GID。

[root@localhost ~]# cat /etc/group | grep group02
group02:x:2024:
[root@localhost ~]# groupmod -g 20000 group02
[root@localhost ~]# cat /etc/group | grep group02
group02:x:20000:

groupdel命令可删除组。

[root@localhost ~]# groupdel group03
[root@localhost ~]# cat /etc/group | grep group03

如果组是现有用户的主要组,则无法删除它。与使用userdel命令类似,首先检查以确保找到该组拥有的文件。

组成员资格通过用户管理进行控制。使用usermod -g命令来更改用户的主要组。

[root@localhost ~]# id user02
uid=1002(user02) gid=1002(user02) groups=1002(user02)
[root@localhost ~]# usermod -g group01 user02
[root@localhost ~]# id user02
uid=1002(user02) gid=1003(group01) groups=1003(group01)

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

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

相关文章

分布式一致性算法:Raft学习

分布式一致性算法:Raft学习 1 什么是分布式系统? 分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。这些节点可能位于不同的物理位置,但它们协同工作以提供一个统一的计算平台或服务。分布式系统…

Unity中一键生成具有身体感知的虚拟人物动作

在虚拟现实(VR)和增强现实(AR)的浪潮中,如何让虚拟人物的动作更加自然、真实,已经成为一个重要课题。AI4Animation项目,一个由 Sebastian Starke 主导的开源框架,为Unity开发者提供了强大的工具集,以实现这一目标。本文…

OrangePi AIpro在安防领域的深思和实战(旷视科技CNN模型ShuffleNetV1开发案例测试)

一、前言 公司最近有个项目是安防领域的,主要用在边缘结点,虽然已做成形,但是还是存在一些缺陷,例如:算力问题,开发板的成熟问题,已经各种技术的解决方案落地问题。目前我们集成了很多功能&…

Facebook 开源计算机视觉 (CV) 和 增强现实 (AR) 框架 Ocean

Ocean 是一个独立于平台的框架,支持所有主要操作系统,包括 iOS、Android、Quest、macOS、Windows 和 Linux。它旨在彻底改变计算机视觉和混合现实应用程序的开发。 Ocean 主要使用 C 编写,包括计算机视觉、几何、媒体处理、网络和渲染&#x…

实现多层感知机

目录 多层感知机: 介绍: 代码实现: 运行结果: 问题答疑: 线性变换与非线性变换 参数含义 为什么清除梯度? 反向传播的作用 为什么更新权重? 多层感知机: 介绍:…

taocms 3.0.1 本地文件泄露漏洞(CVE-2021-44983)

前言 CVE-2021-44983 是一个影响 taoCMS 3.0.1 的远程代码执行(RCE)漏洞。该漏洞允许攻击者通过上传恶意文件并在服务器上执行任意代码来利用这一安全缺陷。 漏洞描述 taoCMS 是一个内容管理系统(CMS),用于创建和管…

【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+Python+TensorFlow

一、项目介绍 眼疾识别系统,使用Python作为主要编程语言进行开发,基于深度学习等技术使用TensorFlow搭建ResNet50卷积神经网络算法,通过对眼疾图片4种数据集进行训练(‘白内障’, ‘糖尿病性视网膜病变’, ‘青光眼’, ‘正常’&…

jenkins系列-05-jenkins构建golang程序

下载go1.20.2.linux-arm64.tar.gz 并存放到jenkins home目录: 写一个golang demo程序:静态文件服务器:https://gitee.com/jelex/jenkins_golang package mainimport ("encoding/base64""flag""fmt""lo…

window下安装go环境

一、go官网下载安装包 官网地址如下:https://golang.google.cn/dl/ 选择对应系统的安装包,这里是window系统,可以选择zip包,下载完解压就可以使用 二、配置环境变量 这里的截图配置以win11为例 我的文件解压目录是 D:\Software…

力扣32.最长有效括号

力扣32.最长有效括号 class Solution {public:int longestValidParentheses(string s) {int n s.size();int res0;int start -1;vector<int> st;for(int i0;i<n;i){if(s[i] ()st.push_back(i);else{//前面没有( , (开启下一段)下一段的开始更新为当前下标if(st.emp…

机器学习和人工智能在农业的应用——案例分析

作者主页: 知孤云出岫 目录 引言机器学习和人工智能在农业的应用1. 精准农业作物健康监测土壤分析 2. 作物产量预测3. 农业机器人自动化播种和收割智能灌溉 4. 农业市场分析价格预测需求预测 机器学习和人工智能带来的变革1. 提高生产效率2. 降低生产成本3. 提升作物产量和质量…

探索JT808协议在车辆远程视频监控系统中的应用

一、部标JT808协议概述 随着物联网技术的迅猛发展&#xff0c;智能交通系统&#xff08;ITS&#xff09;已成为现代交通领域的重要组成部分。其中&#xff0c;车辆远程监控与管理技术作为ITS的核心技术之一&#xff0c;对于提升交通管理效率、保障道路安全具有重要意义。 JT8…

TensorBoard ,PIL 和 OpenCV 在深度学习中的应用

重要工具介绍 TensorBoard&#xff1a; 是一个TensorFlow提供的强大工具&#xff0c;用于可视化和理解深度学习模型的训练过程和结果。下面我将介绍TensorBoard的相关知识和使用方法。 TensorBoard 简介 TensorBoard是TensorFlow提供的一个可视化工具&#xff0c;用于&#x…

尚品汇-(十七)

目录&#xff1a; &#xff08;1&#xff09;获取价格信息 &#xff08;2&#xff09;获取销售信息 前面的表&#xff1a; &#xff08;1&#xff09;获取价格信息 继续编写接口&#xff1a;ManagerService /*** 获取sku价格* param skuId* return*/ BigDecimal getSkuPrice…

『 Linux 』匿名管道应用 - 简易进程池

文章目录 池化技术进程池框架及基本思路进程的描述组织管道通信建立的潜在问题 任务的描述与组织子进程读取管道信息控制子进程进程退出及资源回收 池化技术 池化技术是一种编程技巧,一般用于优化资源的分配与复用; 当一种资源需要被使用时这意味着这个资源可能会被进行多次使…

mqtt.fx连接阿里云

本文主要是记述一下如何使用mqtt.fx连接在阿里云上创建好的MQTT服务。 1 根据MQTT填写对应端口即可 找到设备信息&#xff0c;里面有MQTT连接参数 2 使用物模型通信Topic&#xff0c;注意这里的post说设备上报&#xff0c;那也就是意味着云端订阅post&#xff1b;set则意味着设…

【轻松拿捏】Java-final关键字(面试)

目录 1. 定义和基本用法 回答要点&#xff1a; 示例回答&#xff1a; 2. final 变量 回答要点&#xff1a; 示例回答&#xff1a; 3. final 方法 回答要点&#xff1a; 示例回答&#xff1a; 4. final 类 回答要点&#xff1a; 示例回答&#xff1a; 5. final 关键…

搭建hadoop+spark完全分布式集群环境

目录 一、集群规划 二、更改主机名 三、建立主机名和ip的映射 四、关闭防火墙(master,slave1,slave2) 五、配置ssh免密码登录 六、安装JDK 七、hadoop之hdfs安装与配置 1)解压Hadoop 2)修改hadoop-env.sh 3)修改 core-site.xml 4)修改hdfs-site.xml 5) 修改s…

【进阶篇-Day9:JAVA中单列集合Collection、List、ArrayList、LinkedList的介绍】

目录 1、集合的介绍1.1 概念1.2 集合的分类 2、单列集合&#xff1a;Collection2.1 Collection的使用2.2 集合的通用遍历方式2.2.1 迭代器遍历&#xff1a;&#xff08;1&#xff09;例子&#xff1a;&#xff08;2&#xff09;迭代器遍历的原理&#xff1a;&#xff08;3&…

排序——交换排序

在上篇文章我们详细介绍了排序的概念与插入排序&#xff0c;大家可以通过下面这个链接去看&#xff1a; 排序的概念及插入排序 这篇文章就介绍一下一种排序方式&#xff1a;交换排序。 一&#xff0c;交换排序 基本思想&#xff1a;两两比较&#xff0c;如果发生逆序则交换…