Linux——管理本地用户和组(详细介绍了Linux中用户和组的概念及用法)

目录

一、用户和组概念

(一)、用户的概念

(二)、组的概念

补充组

主要组

二、获取超级用户访问权限

(一)、su 命令和su -命令

( 二)、sudo命令

三、管理本地用户账户

(一)创建用户

(二)修改用户

(三)删除用户 

(四)设置用户密码

四、管理本地组账户

(一)创建组

(二)修改组

(三)删除组

(四)更改组成员

(五)临时更改主要组 


一、用户和组概念

(一)、用户的概念

用户主要分为超级用户(root),系统用户和普通用户

  1. 超级用户账户负责管理系统,超级用户的名称为root,其账户的UID为0,超级用户具有完全的系统访问权限
  2. 系统用户账户提供支持服务进程使用,这些进程通常不需要以超级用户身份运行。系统会为它们分配非特权账户,确保其文件和其他资源不受彼此以及以上系统上普通用户的影响。用户无法使用系统用户账户以交互方式登录。
  3. 普通用户对系统具有有限的访问权限。

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

[kiosk@foundation0 ~]$ id
uid=1000(kiosk) gid=1000(kiosk) groups=1000(kiosk),982(libvirt) context=unconfined_u:unconfined_r:unconfined_t:s0-s0:c0.c1023

查看其它用户的信息,将用户名作为参数传递给id命令即可

eg:

 使用ls -l 命令查看文件的所有者,ls -ld命令查看目录的所有者,而不是目录的内容

 上图中,第一列表示第一个字母表示类型,-表示普通文件,d表示目录,l表示软链接(也称符号链接),第二列表示硬链接数目,第三列显示用户名

 使用ps命令可查看进程信息。默认仅显示当前shell中的进程。

  • -a选项可查看与某一终端相关联的所有进程
  • -u选项可查看与进程相关联的用户

在pa -au输出中,第一列显示用户名,第二列显示进程id。

在默认情况下,系统使用/etc/passwd文件存储有关本地用户的信息,/etc/passwd文件的每一行都包含了每个用户的信息

如上显示了/etc/passwd文件中的最后三行用户信息,代码块的每一部分用:分隔。

示例:      usr01:x:1000:1000:User One:/home/user01:/bin/bash

 代码块解释:

  • user01:此用户的用户名
  • x:用户密码(用户密码存储在这里,x为一个占位符)
  • 1000:此用户账户的uid编号
  • 1000:此用户账号的主要组的GID编号
  • User One:用户描述或者真是姓名
  • /home/user01:用户的主目录,以及登录shell启动时的工作目录
  • /bin/bash:用户的默认shell程序(一些账户,例如系统账户使用/sbin/nologin  shell来禁止使用该账户进行交互式登录)
(二)、组的概念
补充组

组通俗理解就是一群用户的集合。组可向其中的所有用户授予文件访问权限,组内的用户享有该组的所有权限,这种通俗意义上的组称为组员用户的补充组,补充组一般允许存在多个成员。

与用户一样,组也具有组名以便于识别。在内部,系统通过分配唯一标识符(组ID或GID)来区分不同的组。

默认情况下,系统使用/etc/group存储有关本地组的信息

如上图/etc/group文件中展示了最后三行的内容,代码块分为四部分,以:分隔

示例:group01:x:10000:user01,user02,user03

  • group01:此组的名称
  • x:组密码字段,x为一个标识符
  • 10000:此组的GID编号
  • user01,user02,user03:属于此组的成员列表
主要组

每个用户有且只有一个主要组,这个组按照GID列在/etc/passwd文件中,主要组拥有用户创建的文件。

在创建普通用户时,会创建一个与用户同名的组,作为该用户的主要组。

二、获取超级用户访问权限

大多数操作系统具有一个超级用户,该用户拥有系统的全部权限,在linux中,该用户为root 用户。但因为root用户的权限过大,很容易将系统置于危险之中,因此系统管理员一般以普通用户的身份登录,仅在必要时候获取root 用户权限进行操作

(一)、su 命令和su -命令

su命令可以使当前用户切换到另一个用户账号,但需要提供要切换的用户账号的密码。(以root用户切换时不需要密码)

su命令与su -命令不同的是su -命令可以切换到shell登录环境。

当su 或su -后面不加用户名时,一般默认为切换到root 用户

( 二)、sudo命令

一般情况下,系统管理员为了安全原因会为root用户配置为没有有效的密码。因此不能使用su或者su -命令获取root用户的权限,此时,可以使用sudo命令

与su 和su -不同的是,sudo命令要求用户使用自己的密码进行身份验证(避免root用户密码的泄露)而不需要要切换用户账户的密码

sudo+命令+选项+参数=使用root用户身份执行该命令   :    sudo -i 为切换到root账户的命令

同时,sudo命令的另一个优点是默认将所有执行的命令记录到/var/log/secure中

/etc/sudoers文件 是sudo命令的主要配置文件。可以使用visudo命令进行编辑。

以下图片是使用su -命令进入root用户进行的操作(刚开始学习,刚才尝试使用sudo -i 命令显示kiosk用户不被允许使用该操作,因此使用su -命令演示),查看/etc/sudoers文件中设置可以使用sudo命令切换到root账户的组和用户

  • %符号表示其后面的 wheel为一个组
  • ALL=(ALL)指具有此文件的任何主机上(第一个ALL),wheel组中的任何用户(第二个ALL)都可以在系统上运行命令
  • 最后一个ALL指所有的命令

/etc/sudoers文件中含有/etc/sudoers.d目录中的所有文件,因此可以通过创建文件放在/etc/sudoers.d目录下来为用户或者组添加sudo访问权限

三、管理本地用户账户

(一)创建用户

useradd username命令用于创建一个名为username用户的账号,系统创建用户的同时也设置了用户的主目录和账户信息,同时也为用户创建了一个私有组(当用户创建文件时,文件必须有所属用户和所属组,系统会将用户的私有组作为创建文件的所属组),但此时用户未设置密码,只有设置密码后用户才可以登录其账号。

(二)修改用户

usermod --help可以展示usermod命令的选项

以下是一些比较重要常用的选项解释: 

  • -a:与-G选项一起使用时意为将组添加到当前用户的组成员当中去,与替换当前用户补充组意思不同
  • -c:将COMMENT文本添加到注释字段
  • -d:为用户账户指定一个主目录
  • -g:为用户账户指定主要组
  • -G:为用户账户指定不充足的逗号2分隔列表
  • -L:锁定账户
  • -m:将用户的主目录移到新的位置(必须与-d选项搭配使用)
  • -S:为用户指定特定的登录shell
  • -U:解锁用户账户
(三)删除用户 

 userdel username命令意为从/etc/passwd文件中删除用户账号,但用户的主目录仍在,userdel -r username命令可以在删除用户账户的同时删除用户的主目录

(四)设置用户密码

passwd username可以为用户设置初始密码或者更改密码

四、管理本地组账户

(一)创建组

groupadd命令用于创建组,不带任何选项时,系统将从/etc/login.defs文件中GID_MIN和GID_MAX变量中指定一个可用的GID,所指定的GID将大于当前所有组的GID,即使有较小的GID可以选择

groupadd命令 -g选项指定选择GID

(二)修改组

groupmod命令可以修改组的属性

groupmod 命令 -n选项可以更改组的名称

上图将group01组的名称修改为group1

groupmod命令 -g 选项可以更改组队的GID

上图将group1组的GID从1008 改为了1010

(三)删除组

groupdel命令用于删除组

 

上图将group1组从/etc/group文件中删除

(四)更改组成员

usermod 命令-g选项用于更改用户的主要组

上图将用户user01 的主要组从user01改为了group01

使用usermod -aG命令将用户添加到某一补充组

上图将user01用户添加到group02补充组中 

(五)临时更改主要组 

在shell 对话中,newgrp 命令临时切换主要组,一次只能有一个组时主要组,当重新登录时,主要组将恢复默认值

上图中,将user01用户的主要组从group01临时更改为group02 

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

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

相关文章

ERROR: Cannot find command ‘git’- do you have ‘git’ installed and in your PATH?

ERROR: Cannot find command ‘git’- do you have ‘git’ installed and in your PATH? 目录 ERROR: Cannot find command ‘git’- do you have ‘git’ installed and in your PATH? 【常见模块错误】 【解决方案】 欢迎来到英杰社区https://bbs.csdn.net/topics/61780…

Transformer自然语言处理实战pdf阅读

一.第一章 欢迎来到transformer的世界 1.解码器-编码器框架 在Transformer出现之前,NLP的最新技术是LSTM等循环架构。这些架 构通过在神经网络连接使用反馈循环,允许信息从一步传播到另一 步,使其成为对文本等序列数据进行建模的理想选择。如…

图片检查 python脚本

图片检查 python脚本 import os from PIL import Imagedef is_image_broken(image_path):try:img Image.open(image_path)img.verify() # Verify that it is, in fact an imagereturn Falseexcept (IOError, SyntaxError) as e:return Truedef check_images_in_directory(di…

Unity分享:继承自MonoBehaviour的脚步不要对引用类型的字段在声明时就初始化

如果某些字段在每个构造函数中都要进行初始化,很多人都喜欢在字段声明时就进行初始化,对于一个非继承自MonoBehaviour的脚步,这样做是没有问题的,然而继承自MonoBehaviour后就会造成内存的浪费,为什么呢?因…

多模态大模型应用中的Q-Former是什么?

多模态大模型应用中的Q-Former是什么? Q-Former是一种新型的神经网络架构,专注于通过查询(Query)机制来改进信息检索和表示学习。在这篇博客中,我们将详细探讨Q-Former的工作原理、应用场景,并在必要时通过…

pyqt designer使用spliter

1、在designer界面需要使用spliter需要父界面不使用布局,减需要分割两个模块选中,再点击spliter分割 2、在分割后,再对父界面进行布局设置 3、对于两边需要不等比列放置的,需要套一层 group box在最外层进行分割

大数据学习之Flink基础

Flink基础 1、系统时间与时间时间 系统时间(处理时间) 在Sparksreaming的任务计算时,使用的是系统时间。 假设所用窗口为滚动窗口,大小为5分钟。那么每五分钟,都会对接收的数据进行提交任务. 但是,这里有…

GoogleCTF2023 Writeup

GoogleCTF2023 Writeup Misc NPC Crypto LEAST COMMON GENOMINATOR? Web UNDER-CONSTRUCTION NPC A friend handed me this map and told me that it will lead me to the flag. It is confusing me and I don’t know how to read it, can you help me out? Attach…

VSCode切换默认终端

我的VSCode默认终端为PowerShell,每次新建都会自动打开PowerShell。但是我想让每次都变为cmd,也就是Command Prompt 更改默认终端的操作方法如下: 键盘调出命令面板(CtrlShiftP)中,输入Terminal: Select Default Prof…

Hisilicon 适配新遥控器

Hisilicon 适配新遥控器 适配NEC红外遥控器: 相关文档: Android解决方案开发指南:输入 红外驱动使用说明及注意事项 Application Notes HMS 开发指南:IR HMS sample 使用指南:IR 1、查看公版遥控器 sample_ir 没有此命令,不是没有编译打开,而是名字变成ir_user:…

Java 中的Stream流

Stream流就像工厂中的流水线操作。 如何使用Stream&#xff1f; 1、首先要获取Stream流&#xff0c;那么如何获取呢? 对于不同的数据&#xff0c;有不同的获取方法。 ①单列集合 方法名说明default Stream<E> stream()Collection接口中的默认方法 所以实现了Colle…

Multi Range Read与Covering Index是如何优化回表的?

上篇文章末尾我们提出一个问题&#xff1a;有没有什么办法可以尽量避免回表或让回表的开销变小呢&#xff1f; 本篇文章围绕这个问题提出解决方案&#xff0c;一起来看看MySQL是如何优化的 回表 为什么会发生回表&#xff1f; 因为使用的索引并没有整条记录的所有信息&…

使用shell脚本在Linux主机上创建一个admin账号,并将uid配置为特定值

#!/bin/bash #说明&#xff1a;在当前主机上创建一个admin账号&#xff0c;将uid设置为1101&#xff1b; #如果账号已存在&#xff0c;则要判断uid是否为1101&#xff0c;不是的话则配置为1101&#xff1b; #如果系统中已存在其它账号使用了1101这个uid&#xff0c;则要提前变更…

AI学习指南机器学习篇-半监督聚类Python实践

AI学习指南机器学习篇-半监督聚类Python实践 在机器学习领域&#xff0c;聚类是一种常见的算法&#xff0c;它可以帮助我们对数据进行分组和分类。而在现实世界中&#xff0c;我们往往会面临一种情况&#xff1a;我们拥有一些有标签的数据&#xff08;已知类别&#xff09;&am…

DataEase一键部署:轻松搭建数据可视化平台

DataEase是一个开源的数据可视化和分析工具&#xff0c;旨在帮助用户轻松创建和共享数据仪表盘。它支持多种数据源&#xff0c;包括关系型数据库&#xff0c;文件数据源&#xff0c;NoSQL数据库等&#xff0c;提供强大的数据查询、处理和可视化功能。DataEase 不仅是一款数据可…

VMware虚拟机中CentOS7自定义ip地址并且固定ip

配置固定ip(虚拟机) 前提&#xff1a;虚拟机网络配置成&#xff0c;自定义网络并选择VMnet8(NAT 模式) 操作(如下图)&#xff1a;点击虚拟机–》设置–》–》硬件–》网络适配器–》自定义&#xff1a;特定虚拟网络–》选择&#xff1a;VMnet8(NAT 模式) 虚拟机网络设置 需要记…

【漏洞复现】Jenkins CLI 接口任意文件读取漏洞(CVE-2024-23897)

漏洞简介 Jenkins是一款基于JAVA开发的开源自动化服务器。 Jenkins使用args4j来解析命令行输入&#xff0c;并支持通过HTTP、WebSocket等协议远程传入命令行参数。在args4j中&#xff0c;用户可以通过字符来加载任意文件&#xff0c;这导致攻击者可以通过该特性来读取服务器上…

论文快过(图像配准|Coarse_LoFTR_TRT)|适用于移动端的LoFTR算法的改进分析 1060显卡上45fps

项目地址&#xff1a;https://github.com/Kolkir/Coarse_LoFTR_TRT 创建时间&#xff1a;2022年 相关训练数据&#xff1a;BlendedMVS LoFTR [19]是一种有效的深度学习方法&#xff0c;可以在图像对上寻找合适的局部特征匹配。本文报道了该方法在低计算性能和有限内存条件下的…

PMP-敏捷项目管理实践-敏捷Scrum实践

你好!我是 Lydia-穎穎 ♥感谢你的陪伴与支持 ~~~ 欢迎一起探索未知的知识和未来,现在lets go go go!!! 前言 敏捷思维模式由价值观定义,以原则为指导,并在许多不同的实践中体现。具体的实践方法包括但不限于Scrum、XP(极限编程)、看板、TDD(测试驱动开发)等。可根据不…

【PyTorch】基于LSTM网络的气温预测模型实现

假设CSV文件名为temperature_data.csv&#xff0c;其前五行和标题如下&#xff1a; 这里&#xff0c;我们只使用Temperature列进行单步预测。以下是整合的代码示例&#xff1a; import pandas as pd import numpy as np import torch import torch.nn as nn import torch.op…