管理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 什么是分布式系统? 分布式系统是由一组通过网络进行通信、为了完成共同的任务而协调工作的计算机节点组成的系统。这些节点可能位于不同的物理位置,但它们协同工作以提供一个统一的计算平台或服务。分布式系统…

对于复杂的数学模型,怎样利用 MATLAB 的优化工具箱进行准确的参数估计和模型拟合?

要利用MATLAB的优化工具箱进行准确的参数估计和模型拟合,可以按照以下步骤进行: 定义模型:根据问题的需求和数学模型的形式,定义好模型的数学表达式。 收集数据:收集实际观测数据,这些数据将用于拟合模型和…

Ubuntu linux安装新版本go

加速网站:GOPROXY.IO - A Global Proxy for Go Modules 下载地址:All releases - The Go Programming Language Ubuntu jammy版本里面自带的go版本较低,build ollama的时候报错,于是升级go 升级操作 从上面下载地址找到自己需…

25秋招面试算法题 (Go版本)

文章目录 科大讯飞 0713找01不能出现太多 科大讯飞 0713 找01 牛牛拥有一个长度为 n 的01 串,现在他想知道,对于每个字符,在它前面的最近的不同字符的下标是多少? 输入描述 本题为多组测试数据,第一行输入一个正整…

代码随想录第五十五天打卡

42. 接雨水 接雨水这道题目是 面试中特别高频的一道题,也是单调栈 应用的题目,大家好好做做。 建议是掌握 双指针 和单调栈,因为在面试中 写出单调栈可能 有点难度,但双指针思路更直接一些。 在时间紧张的情况有,能写出…

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…

python中的pickle模块和json模块

目录 pickle: Python 中的pickle 是一个内置模块,用于序列化和反序列化 Python 对象结构。序列化是将对象转换成字节流的过程,这样对象就可以被存储到文件中或者通过网络传输。反序列化则是将这些字节流重新转换成原始对象的过程。 json: json模块是 …

实现多层感知机

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

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

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

持续集成的自动化之旅:Gradle在CI中的配置秘籍

持续集成的自动化之旅:Gradle在CI中的配置秘籍 引言 持续集成(Continuous Integration, CI)是现代软件开发中的一项基础实践,它通过自动化的构建和测试流程来提高软件质量和开发效率。Gradle作为一个灵活的构建工具,…

【眼疾病识别】图像识别+深度学习技术+人工智能+卷积神经网络算法+计算机课设+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. 提升作物产量和质量…

Elsaticsearch java基本操作

索引 基本操作 package com.orchids.elasticsearch.web.controller;import cn.hutool.core.collection.CollUtil; import cn.hutool.json.JSONUtil; import com.orchids.elasticsearch.web.po.User; import io.swagger.annotations.Api; import io.swagger.annotations.ApiOpe…

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

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

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

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