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

news2024/11/13 21:31:45

目录

一、用户和组概念

(一)、用户的概念

(二)、组的概念

补充组

主要组

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

(一)、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.coloradmin.cn/o/1950892.html

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

相关文章

Java面试八股之什么是声明式事务管理,spring怎么实现声明式事务管理?

什么是声明式事务管理,spring怎么实现声明式事务管理? 声明式事务管理是一种编程范式,它允许开发人员通过声明性的配置或注解,而不是硬编码事务处理逻辑,来指定哪些方法或类应该在其上下文中执行事务。这种方法将事务…

Kadane 算法 | 53. 最大子数组和 + 918. 环形子数组的最大和

目录 1 维基百科2 53. 最大子数组和2.1 代码思路2.2 完整代码 3 918. 环形子数组的最大和3.1 代码思路3.2 完整代码 1 维基百科 最大子数组问题 在计算机科学中,最大子数组问题的目标是在数组的一维方向找到一个连续的子数组,使该子数组的和最…

Axious的请求与响应

Axious的请求与响应 1.什么是Axious Axious是一个开源的可以用在浏览器和Node.js的异步通信框架,它的主要作用就是实现AJAX异步通信,其功能特点如下: 从浏览器中创建XMLHttpRequests ~从node.js创建Http请求 支持PromiseAPI 拦截请求和…

[UVM源代码研究] 聊聊UVM中的callback机制

1. callback机制是什么? 以最高效的方式完成芯片验证,一直以来都是验证人员的首要目标,那么最直接的方式就是环境的移植和重用,一个优秀的验证工程师,在开发环境的过程中,一定会考虑环境的继承和重用。 继…

c++ 智能指针shared_ptr与make_shared

shared_ptr是C11引入的一种智能指针,‌它允许多个shared_ptr实例共享同一个对象,‌通过引用计数来管理对象的生命周期。‌当最后一个持有对象的shared_ptr被销毁时,‌它会自动删除所指向的对象。‌这种智能指针主要用于解决资源管理问题&…

简单小案例分析

一、容器和实例关系 <div class"app"><h1>Hello,{{name}}</h1> </div> <div class"app"><h1>Hello,{{name}}</h1> </div><script>//创建Vue实例new Vue({el:".app", //el用于指定当前V…

北大延毕硕士×INFJ | 我解脱了

前言 拿了双证&#xff0c;我终于能静下心来复盘一下我延毕一年的经历了。 给后面也许有相同困境的朋友们做个参考或者心理疏导作用。 延毕的原因 我延毕的主要原因是论文研三的时候论文没有完成&#xff0c;我们专业的论文一般是6个月全身心投入可以完成。我这个人是典型的…

7月24日JavaSE学习笔记

序列化版本控制 序列化&#xff1a;将内存对象转换成序列&#xff08;流&#xff09;的过程 反序列化&#xff1a;将对象序列读入程序&#xff0c;转换成对象的方式&#xff1b;反序列化的对象是一个新的对象。 serialVersionUID 是一个类的序列化版本号 private static fin…

77.WEB渗透测试-信息收集-框架组件识别利用(1)

免责声明&#xff1a;内容仅供学习参考&#xff0c;请合法利用知识&#xff0c;禁止进行违法犯罪活动&#xff01; 内容参考于&#xff1a; 易锦网校会员专享课 上一个内容&#xff1a;76.WEB渗透测试-信息收集- WAF、框架组件识别&#xff08;16&#xff09; java&#xff…

The Llama 3 Herd of Models.Llama 3 模型论文全文

现代人工智能(AI)系统是由基础模型驱动的。本文提出了一套新的基础模型,称为Llama 3。它是一组语言模型,支持多语言、编码、推理和工具使用。我们最大的模型是一个密集的Transformer,具有405B个参数和多达128K个tokens的上下文窗口。本文对Llama 3进行了广泛的实证评价。我们…

【Django】前端技术HTML常用标签(开发环境vscode)

文章目录 安装两个常用插件HTML常用标签定义文档类型DOCTYPE网页的结构html/head//title/body/div标题h1/h2/h3/h4/h5分割线hr段落 p列表ul/li&#xff0c;ol/li超链接a文本span图片img按钮button表格table&#xff08;table、tr、th、td&#xff09;表单form 安装两个常用插件…

深度学习环境配置——总结下近期遇到的”坑“

文章目录 1. 问题1&#xff1a;硬件选择的误区2. 问题2&#xff1a;操作系统的适配难题3. 问题3&#xff1a;深度学习框架的安装陷阱4. 问题4&#xff1a;CUDA与cuDNN的版本匹配问题5. 问题5&#xff1a;网络配置的瓶颈6. 问题6&#xff1a;数据预处理的技巧7. 问题7&#xff1…

CVPR`24 | 4D编辑哪家强?浙大首次提出通用指导4D编辑框架:Instruct 4D-to-4D

文章链接&#xff1a;https://arxiv.org/pdf/2406.09402 项目地址&#xff1a;https://immortalco.github.io/Instruct-4D-to-4D/ 今天和大家一起学习的是Instruct 4D-to-4D&#xff0c;可以通过2D扩散模型实现4D感知和时空一致性&#xff0c;以生成高质量的指令引导的动态场景…

用户使用算力共享平台流程

目录 用户使用算力共享平台流程 一、用户注册与认证 二、接入算力资源 三、任务发布与管理 四、商业调度与资源分配 五、任务执行与结果验证 六、支付与结算 七、评价与信誉建立 算力架构概述 “以案赋能” | 首届“华彩杯”算力应用创新大赛全国总决赛获奖案例选编

【JUC】Java锁介绍

文章目录 阿里锁开发规范乐观锁和悲观锁悲观锁乐观锁 synchronized 类锁、对象锁synchronized有三种应用方式锁相关的8种案例演示&#xff08;对象锁、类锁&#xff09;标准访问ab两个线程&#xff0c;请问先打印邮件还是短信&#xff1f;sendEmail钟加入暂停3秒钟&#xff0c;…

【Python机器学习】决策树的构造——递归构建决策树

我们可以采用递归的原则处理数据集&#xff0c;递归结束的条件是&#xff1a;程序遍历完所有划分数据集的属性&#xff0c;或者每个分支下的所有实例都具有相同的分类。如果所有实例具有相同的分类&#xff0c;则得到一个叶子节点或者终止块。任何到达叶子节点的数据必然属于叶…

软考:软件设计师 — 7.软件工程

七. 软件工程 1. 软件工程概述 &#xff08;1&#xff09;软件生存周期 &#xff08;2&#xff09;软件过程 软件开发中所遵循的路线图称为 "软件过程"。 针对管理软件开发的整个过程&#xff0c;提出了两个模型&#xff1a;能力成熟度模型&#xff08;CMM&#…

uniapp引入自定义图标

目录 一、选择图标&#xff0c;加入购物车 二、下载到本地 三、导入项目 四、修改字体引用路径 五、开始使用 这里以扩展iconfont图标为例 官网&#xff1a;iconfont-阿里巴巴矢量图标库 一、选择图标&#xff0c;加入购物车 二、下载到本地 直接点击下载素材&#xff0…

mysql中You can’t specify target table for update in FROM clause错误

mysql中You can’t specify target table for update in FROM clause错误 You cannot update a table and select directly from the same table in a subquery. mysql官网中有这句话&#xff0c;我们不能在一个语句中先在子查询中从某张表查出一些值&#xff0c;再update这张表…

matplotlib 画图函数,最常用的

并排显示2个图片 import os import numpy as np from PIL import Image import matplotlib.pyplot as pltimage1 Image.open(a.png) image2 Image.open(a2.png)# Create a figure with two subplots (1 row, 2 columns) fig, axes plt.subplots(1, 2, figsize(10, 5))# Di…