Linux用户及用户组知识总结

news2024/11/15 9:08:46

在这里插入图片描述

✅作者简介:热爱国学的Java后端开发者,修心和技术同步精进。
🍎个人主页:Java Fans的博客
🍊个人信条:不迁怒,不贰过。小知识,大智慧。
💞当前专栏:Java案例分享专栏
✨特色专栏:国学周更-心性养成之路
🥭本文内容:Linux用户及用户组知识总结

文章目录

    • Linux用户权限和文件权限基础
      • Linux用户权限
      • Linux文件权限基础
      • 文件所有者
      • 文件所属组
      • 其他人
    • Linux用户身份切换
      • su
      • sudo
        • 1、 sudo的执行过程
        • 2、 使用sudo的好处
      • visudo
    • Linux用户组管理
      • 有效组与初始组
      • 新建用户组
      • 修改用户组
      • 删除用户组

在这里插入图片描述

Linux用户权限和文件权限基础

  Linux系统的权限管理可以分为两个方面,针对用户与针对文件,而通常所说的权限管理通常是针对文件。

Linux用户权限

  Linux是一个多用户多任务的分时操作系统,要想进入系统,必须有一个账号。用户的账号一方面可以帮助系统管理员对使用系统的用户进行跟踪,并控制他们对系统资源的访问;另一方面也可以帮助用户组织文件,并未用户提供安全性保护。

  在Linux操作系统中,root拥有至高无上的权限,也被称为超级权限的拥有者、超级管理员,很多普通用户无法执行的操作root用户都可以完成。

  在Linux系统中,每个文件、目录和进程,都归属与某个用户,没有用户许可其他普通用户是无法操作的,但对root除外。Root用户的特权性还表现在root可以超越任何用户和用户组来对文件或目录进行读取、修改或删除(在系统正常的许可范围内);对可执行程序的执行、终止;对硬件设备的添加、创建和移除等;也可以对文件和目录的所属用户、权限进行修改,以适合系统管理的需要(因为root是系统中权限最高的特权用户)。

  正是因为Linux系统中root具有如此大的权限,所以实际生产的Linux管理中,一般不要使用root账户进行系统管理,因为这个账户的权限实在太大了,如果操作不当可能导致不可挽回的结果。

Linux文件权限基础

  在Linux系统中,每个文件、目录和进程,都归属于某一个用户,同时每个文件也都具有非常多的属性和权限。Linux文件的权限管理,就是要搞清楚你我他的关系,搞清文件是自己的、朋友的还是其他人的。

文件所有者

  Linux是真正的多用户、多任务操作系统,也就是经常会出现多个人同时使用一台机器工作的情况。多个人同时使用一台计算机虽然可以提高计算机的利用率,但是也带来很多的问题,比如:如何保障个人隐私文件的安全,如何设置文件的信息共享等。Linux为了解决上述问题引入了所有者的概念,即一个文件只能属于一个用户,该用户可以设置它的权限与属性,来达到保护个人隐私与文件安全的目的。

文件所属组

  Linux系统中的组一般值的是在一台计算机上的组,Linux中支持一个账户同时属于多个组。

其他人

  除了文件的所有者和文件的所属组之外的用户,通过文件权限设置可以控制其他人对文件的相关操作。

Linux用户身份切换

  大部分Linux发行版的默认账户是普通用户,而更改系统文件或者执行某些命令,需要root身份才能进行,这就需要从当前用户切换到root用户。

  Linux中切换用户的命令有su和sudo两种。

su

  su命令的全称就是 switch user ,顾名思义就是切换用户身份,使得用户可以在Shell中以其他身份运行程序。除非该用户自己是超级用户root,不然切换用户身份时都需要密码。

名称:su
使用权限:所有账户
使用方式:su [参数] [用户名]
说明:使用root账户切换到任何账户都不需要密码,普通账户之间切换和普通账户切换到root账户,都需要知道被切用户的密码。

参数说明
-直接使用-,代表使用login-shell的变量文件读取方式来登录系统。
-f,-fast不必读启动文件,仅用于csh或tcsh两种Shell。
-l,login加了这个参数之后,就好像是重新登录一样,大部分环境变量(例如HOME、SHELL和USER等)都是以该使用者(USER)为主,并且工作目录也会改变。如果没有指定USER,默认情况是root。
-m,-preserve-environment执行su时不改变环境变数。
-p功能与-m完全一致。
-c command变更账号为USER的使用者,并执行命令(command)后再变回原来的使用者。
-help显示说明文件。
-version显示版本资讯。

  su命令与su –命令切换root账户的最大区别:
    su命令只是切换了root身份,但是Shell环境仍然是普通用户的Shell;
    su –命令连用户和Shell环境一起切换成root身份了。
    只有切换了Shell环境才不会出现PATH环境变量错误。

在root身份下切换到seashorewang身份。

在这里插入图片描述

  说明:使用su seashorewang切换到seashorewang账户后去查看环境变量的时候发现环境变量仍然是root的环境变量;退出后使用su – seashorewang切换用户发现环境变量完全切换成了seashorewang用户的环境变量。

在seashorewang身份下切换到root身份。

在这里插入图片描述

  说明:使用su root切换到root账户后去查看环境变量的时候发现环境变量仍然是seashorewang的环境变量;退出后使用su – root切换用户发现环境变量完全切换成了root用户的环境变量。

在seashorewang身份下以 non-login shell 方式切换到root身份,并验证。

在这里插入图片描述
在这里插入图片描述

  说明1:查看环境变量发现,环境变量没有发生改变。但是使用ID查看的时候发现确实是root身份。虽然切换到了root身份,但是查看环境变量和赋值情况的时候,还有很多环境变量中存在seashorewang。

  说明2:env 用来查看环境变量及其赋值信心。

在seashorewang身份下以 login shell 方式切换到root身份,并验证。

在这里插入图片描述

  说明:查看环境变量发现,环境变量没有发生改变。但是使用ID查看的时候发现确实是root身份。虽然切换到了root身份,但是查看环境变量和赋值情况的时候,环境变量中的信息也都换成了root。。

在seashorewang身份下切换到test账户。

在这里插入图片描述
在这里插入图片描述

  说明:在进行账户切换的过程中出现了权限不够的情况,切换到root账户下,然后使用chmod命令给予test的根目录其他用户的访问权限,继续切换,切换成功。

sudo

  使用su切换到某个用户或者以某个用户的权限来运行某条命令,都必须使用相应用户的口令。比如某个普通账户想执行一个只有root用户才具有权限的指令,则需要直接拥有root的权限,这似乎不太可能,因此还需要有其他的解决方式。

  su 主要用来以某个用户的身份运行某条指令。相对于su命令需要知道新切换用户的密码,sudo 命令的执行仅需要自己的密码即可,甚至可以设置不需要密码即可执行。

  不是所有人都能够执行sudo,而是仅有/etc/sudoers内的用户才能够执行sudo这个命令。必须使用visudo命令才能编辑/etc/sudoers配置文件。

  名称:sudo
  使用权限:普通账户与root
  使用方式:sudo [参数] [命令] [用户名]
  说明:默认情况下只有root账户可以执行sudo命令,其他账户如果想执行该命令需要得到root的授权才可以。

参数说明
-V显示版本编号。
-h显示版本编号及指令的使用方式说明。
-l显示出自己(执行sudo的使用者)的权限。
-v因为sudo在第一次执行时或是在N分钟内没有执行(N预设为五)会问密码,这个参数是重新做一次确认,如果超过N分钟,也会问密码。
-k将会强迫使用者在下一次执行sudo时问密码(不论有没有超过N分钟)。
-b将要执行的指令放在背景执行。
-pprompt可以更改问密码的提示语,其中%u会代换为使用者的账号名称,%h会显示主机名称。
-uusername/ # uid不加此参数,代表要以root的身份执行指令,而加了此参数,可以以username的身份执行指令(# id为该username的使用者号码)。
-s执行环境变数中的SHELL所指定的shell,或是/etc/passwd里所指定的shell。
-H将环境变数中的HOME(家目录)指定为要变更身份的使用者家目录(如不加-u参数就是系统管理者root)。
command要以系统管理者身份(或以-u更改为其他人)执行的指令。

1、 sudo的执行过程

  (1) 当用户执行sudo时,系统于/etc/sudoers文件中查找该用户是否有执行sudo的权限。
  (2) 若用户具有可执行sudo的权限后,便让用户输入自己的密码来确认,也可以设置为不需要密码。
  (3) 若密码输入成功,便开始执行sudo后续的命令,root执行sudo时不需要输入密码。
  (4) 若欲切换的身份与执行身份相同,那也不需要密码。

2、 使用sudo的好处

  不需要知道root的密码也可以使用root的权限来运行命令,而使用su则必须要知道root的密码。

在seashorewang用户下,使用sudo命令查看/etc/passwd文件的前三行。

在这里插入图片描述

  说明:使用sudo命令时提醒该用户没有在sudoer文件中。

以sshd身份在/tmp/下建立一个名称为myweb的文件。

在这里插入图片描述

  说明:对比发现sudo对应root的用法,就是可以让sudo以任何其他身份在系统内管理文件。

列出sudo目前的权限。

在这里插入图片描述

查看sudo的版本信息。

在这里插入图片描述

在这里插入图片描述

visudo

  root用户可以使用visudo命令来设置/etc/sudoers。将visudo拆开看就是使用vi命令打开sudo的配置文件。

visudo打开的/etc/sudoers文件中需要修改的一共有四个部分
  ① 用户账号,系统的哪个账号可以使用sudo命令,默认为root。
  ② 登录者来源主机名,这个账号由哪台主机连接到本主机。
  ③ 可切换的身份,这个账户可切换成什么身份来执行后面的命令。
  ④ 可以执行的命令,这个命令写绝对路径。

在这里插入图片描述
在这里插入图片描述

让seashorewang账户具有查看/etc/passwd文件的权限。

(1) 使用root修改sudoers文件

在这里插入图片描述

  说明:最后这句话的意思是让seashorewang账户在/etc/passwd这个文件上拥有和root一样的权限。

(2) 切换回seashorewang,查看/etc/shadow文件。

在这里插入图片描述

  说明:经过授权后seashorewang账户可以访问/etc/shadow文件。

让test用户具有帮助root修改其他账号的密码。

在这里插入图片描述

在这里插入图片描述

  新建账号test2,为其设置密码,设置sudoers文件,让该账号具有可以创建账号的权限。
(1) 使用root修改sudoers文件。

在这里插入图片描述

(2)切换到test2,执行相关操作。

在这里插入图片描述
在这里插入图片描述

  说明:可以看到test2账号具有了增加账号的权限。

Linux用户组管理

有效组与初始组

  /etc/passwd里面的第4栏被称为GID。这个GID所对应的组被称为初识组initial group。即当用户登录系统,立刻就拥有这个群组的相关权限。

用groups命令查看用户所隶属的组。

在这里插入图片描述

  说明1:在不同的账户 下使用groups命令都会得到相应用户所隶属的组。

  说明2:再root账户使用groups查看的时候发现用户组有两个,其中root组就是其有效组,也就是第一个组是有效组。一个用户可以属于多个组,但在某一时刻只能隶属于一个组。

将root用户的有效组调整为seashorewang。

在这里插入图片描述

说明:newgrp 用来切换用户的有效群群组。

新建用户组

  用户组的操作主要是增删改。用户的增删改涉及/etc/group和/etc/gshadow两个文件。

  名称:groupadd
  使用权限:root
  使用方式:groupadd [参数] [用户组名]

参数说明
-g后面跟GID,直接指定某个GID。
-r新建系统用户组,与/etc/login.defs内的GID_MIN有关。
-o允许设置相同id的群组。
-f强制执行,默认是不允许创建相同ID的组的,使用此参数就可以,而且不用-o选项。

新建一个用户组,名称为group1。

在这里插入图片描述

  说明:group1的GID为505,每次新建一个组,GID会自动加1.

新建一个系统用户组,名称为system1。

在这里插入图片描述

  说明:之前说过500以内的GID为系统预留,这里建立的就是系统用户组。

新建一个用户组,名称为group5,指定其GID为600。

在这里插入图片描述

  说明:加上-g后按照指定的GID生成新的组,但前提是这个GID没有被使用过。

修改用户组

  名称:groupmod
  使用权限:root
  使用方式:groupmod [参数] [用户组名]

参数说明
-g gid指定id。
-o允许设置相同组id的群组。
-n group_name修改用户组名为group_name。

将用户组group1的名称改为grp1。

在这里插入图片描述

将用户组group3的GID修改为999.

在这里插入图片描述

删除用户组

  名称:groupdel
  使用权限:root
  使用方式:groupdel [用户组名]

删除组grp1。

在这里插入图片描述

  说明:删除后,发现配置文件中已经没有了该组的信息。

删除组seashorewang。

在这里插入图片描述

  说明:seashorewang用户组提示不能删除,原因是已经被某个用户(这里是root账户)使用为有效组。


  码文不易,本篇文章就介绍到这里,如果想要学习更多Java系列知识点击关注博主,博主带你零基础学习Java知识。与此同时,对于日常生活有困扰的朋友,欢迎阅读我的第四栏目:《国学周更—心性养成之路》,学习技术的同时,我们也注重了心性的养成。

在这里插入图片描述

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

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

相关文章

SAP 供应商创建默认字段(屏幕格式)后台配置总结

供应商创建默认字段(屏幕格式)后台配置总结 供应商创建时默认字段(屏幕格式的配置在好几个地方的配置来控制。 一 、定义与采购组织特定的屏幕格式 (事务代码: OMFK) IMG路径为如下图: 在这里…

commons-beanutils的三种利用原理构造与POC

写在前面 commons-beanutils 是 Apache 提供的一个用于操作 JAVA bean 的工具包。里面提供了各种各样的工具类,让我们可以很方便的对bean对象的属性进行各种操作。其中比较常使用的有 MethodUtils/ConstructorUtils/PropertyUtils/BeanUtils/ConvertUtils等。 分析…

Python-文件、eval函数

1.文件的概念和作用1.1文件的概念和作用计算机的文件,就是存储在某种长期储存设备上的一段数据长期存储设备包括:硬盘、U盘、移动硬盘、光盘......文件的作用将数据长期保存下来,在需要的时候使用CPU内存 硬盘1.2文件的存储方式在计算机中&am…

机器视觉_HALCON_HDevelop用户指南_3.用HDevelop采集图像

文章目录三、用HDevelop采集/获取图像3.1. 从文件中读取图像3.2. 查看图像3.3. 图像采集助手3.3.1. 从文件或文件夹中获取图像3.3.2. 通过图像获取接口获取图像3.3.3. 修改生成的代码三、用HDevelop采集/获取图像 本章节标题的英文是Image Acquisition,直译是图像采…

微信小程序跳转页面三种方式

wx.navigateTo 保留当前页面,跳转到应用内的某个页面。但是不能跳到 tabbar 页面。使用 wx.navigateBack 可以返回到原页面。小程序中页面栈最多十层。 wx.navigateBack 关闭当前页面,返回上一页面或多级页面。可通过 getCurrentPages 获取当前的页面…

搜索入门技能树

搜索地址 以下哪个网址不能用来搜索: https://so.csdn.net/so/searchhttps://so.csdn.net/waphttps://devbit.csdn.net/searchhttps://dev.csdn.net/ 搜索频道 以下哪个不属于搜索频道: 全站博客下载图片 技能树 在搜索结果页展示的技能树模块中&am…

51单片机学习笔记-2数码管显示

2 数码管显示 [toc] 注:笔记主要参考B站江科大自化协教学视频“51单片机入门教程-2020版 程序全程纯手打 从零开始入门”。 注:工程及代码文件放在了本人的Github仓库。 2.1 静态数码管显示 2.1.1 原理介绍   LED数码管:数码管是一种简单…

办公技巧:分享7个非常实用的PPT技巧

❤️作者主页:IT技术分享社区 ❤️作者简介:大家好,我是IT技术分享社区的博主,从事C#、Java开发九年,对数据库、C#、Java、前端、运维、电脑技巧等经验丰富。 ❤️荣誉: CSDN博客专家、数据库优质创作者🏆&…

分享14个你可能还未用上但又实用的CSS属性

大家好,今天分享 14 个实用的CSS属性,你可能还未用上,这些 CSS 属性将帮助你提高开发的效率,本篇文章将介绍上半部分,废话不多说,我们快来了解下吧。一、:in-range 和 :out-of-range 伪类:in-range 和 :out…

域内权限维持:DSRM后门

01、简介 每个域控制器都有一个目录还原模式(DSRM)帐户,它的密码是在安装域控时设置的,实际上它对应的就是sam文件里的本地管理员“administrator”,基本很少会被重置,因此有着极强的隐蔽性。攻击者通过获取域控的DSRM密码&#x…

分布式事务| 使用 dotnetcore/CAP 的本地消息表模式

本地消息表模式本地消息表模式,其作为柔性事务的一种,核心是将一个分布式事务拆分为多个本地事务,事务之间通过事件消息衔接,事件消息和上个事务共用一个本地事务存储到本地消息表,再通过定时任务轮询本地消息表进行消…

运放电路中输入失调电压Vos及温漂-运算放大器

实际运放与理想运放具有很多差别,要理解这些差别,就必须认识实际运放的参数。下图是用于描述实际运放几个关键参数的等效模型。模型中,第一个黄色运放是一个近似的理想运放,只有Auo不是无穷大,其余都是理想的。第二个运…

【GD32F427开发板试用】 CAN总线收发测试

本篇文章来自极术社区与兆易创新组织的GD32F427开发板评测活动,更多开发板试用活动请关注极术社区网站。作者:meijing 这篇测试下CAN通信的收发测试,代码使用库例程中修改。 硬件部分 测试用到了CAN0、串口0和定时器1。 1> CAN0使用的接…

ccflow代码

ccflow代码目录概述需求:设计思路实现思路分析1.什么是流程版本管理?流程讲义:参考资料和推荐阅读Survive by day and develop by night. talk for import biz , show your perfect code,full busy,skip hardness,make a better r…

企业如何利用制造业ERP管理系统做好仓库管理?

仓库管理,对于生产制造型企业来说是重中之重,很多制造企业的大部分”身家“,都在仓库里了。众多的原材料和堆积如山的成品、半成品,往往占用了企业大部分的流动资金。来料是否及时,物料是否齐备,库存是否安…

流程引擎与应用系统分布式部署架构

一、为什么应用系统和流程引擎需要分开部署 有句话讲:存在即合理。在实际的企业应用需求里有如下几种场景,需要把业务系统和流程引擎分开部署。 企业流程治理需求。即整个企业只部署一套流程平台BPM,也叫企业级流程中心BPM、或者跨系统端到…

canal数据同步安装、使用

canal源码仓库:https://github.com/alibaba/canal博主使用的是canal 1.5.5版本 MySQL 5.7.32 JDK:1.8 canal各个版本:https://github.com/alibaba/canal/releasescanal-adapter下载 canal-admin 下载 canal-deployer 下载上传到目标服务器对应目录下解压…

初识ros-Navigation

最近一直在看京天Turtlebot3 waffle pi的导航部分,这篇文章就介绍一下相关内容。导航模块是一个独立完整的模块,内容比较多也很深入。因为笔者没有看过源码,只是一些概念上的了解,做个整理,为后续的源码阅读做准备。本…

苏嵌实训——day16

文章目录一、进程间通信:1.传统通信方式:2. IPC通信方式(第五代操作系统):(1)传统通信之无名管道(2)传统通信方式之有名管道(3)使用有名管道来实现…

Python实现清除文件夹中重复视频

目录一、二进制文件二、摘要算法(MD5)三、shutil模块四、视频清除视频全在一个文件夹里视频在不同的文件夹里一、二进制文件 二进制文件是以文本的二进制形式存储在计算机中。 用户一般不能直接读取它们,需要通过相应的软件才能将其显示出来。 二进制文件一般是可…