linux - 权限的概念

目录

用户权限

超级用户与普通用户的区别

超级用户(root):

普通用户:

切换用户身份

使用sudo执行高权限命令

用户管理

用户组管理

文件权限

文件访问者类别

基本权限

权限表示方法

权限修改

chmod

chown

chgrp

umask

粘滞位

一些提示


本博客我们要了解用户权限和文件的权限

用户权限

Linux下有两种⽤⼾:超级⽤⼾(root)、普通⽤⼾。普通⽤⼾:在linux下做有限的事情。超级⽤⼾:可以再linux系统下做任何事情,不受限制超级⽤⼾的命令提⽰符是“#”,普通⽤⼾的命令提⽰符是“$”。

超级用户与普通用户的区别

在Linux系统中,用户主要分为两类:超级用户(root)和普通用户。它们在系统权限和操作范围上有显著差异。

超级用户(root)

  • 拥有系统的最高权限,可以执行任何操作,包括修改系统文件、安装软件、管理用户等。
  • 命令提示符通常以“#”结尾,表示当前用户为超级用户。
  • 由于权限过高,建议仅在必要时使用root账户,以避免误操作导致系统损坏。因此平时我们就用普通用户来对linux进行操作,避免出现 rm -rf /这种巨大错误

普通用户

  • 权限受限,只能执行与自身相关的操作,如管理个人文件、运行普通程序等。
  • 无法直接修改系统文件或执行需要高权限的操作。
  • 命令提示符通常以“$”结尾,表示当前用户为普通用户。

切换用户身份

在Linux系统中,可以通过以下命令在超级用户和普通用户之间切换:

从普通用户切换到超级用户

su -

输入该命令后,系统会提示输入root用户的密码,验证成功后即可切换到root用户。

从超级用户切换回普通用户

exit

输入该命令后,系统会退出root用户,返回到之前的普通用户身份。

使用sudo执行高权限命令

为了避免频繁切换用户,普通用户可以使用sudo命令临时获取超级用户权限来执行特定命令。例如:

sudo apt-get update

该命令会提示输入当前用户的密码,验证成功后以root权限执行apt-get update

用户管理

创建新用户

sudo adduser username

该命令会创建一个新用户,并提示设置密码和其他信息。

创建好后我们就可以用普通用户来操作linux了

删除用户

sudo deluser username

该命令会删除指定用户及其主目录。

修改用户密码

sudo passwd username

该命令允许超级用户为指定用户修改密码。

用户组管理

我们只设置超级用户root和普通用户两个权限是否够用呢?答案是够用的,但是用着不舒服,如果我们要给一些用户一些权限,那么就要给这些用户一个一个分配,到时候又要一个一个取消。十分麻烦,因此就有了用户组来统一管理权限

一个用户有一个主组和多个附属组,一个用户加入到另一个组里后,这个组就是这个用户的附属组

一个用户被创建的时候,会默认给这个用户生成一个主组,主组的名字就是用户名。

为了方便理解,我用团体来类比,每个人都是一个团体,这个团体就叫主体(主组)。然后可以归属其他团体,归属后就会以团体身份操作对方资源。

通过文件属性查看,第一个dgj是这个文件所属者,即谁创建它的;第二个dgj是这个文件的创建者的所属组,因为dgj的主组是dgj,所以所属组默认就是dgj了。

通过给出所属组,相当于创建者背后的团体成员,就可以进行权限的区别对待了。

主组是可以修改的,但是不建议这样。感兴趣这可以查阅资料

将用户添加到用户组

sudo usermod -aG groupname username

该命令将指定用户添加到指定用户组中。

例如 sudo usermod -aG  A B

那么B用户就进入A用户的主组了,

创建新用户组

sudo addgroup groupname

该命令会创建一个新的用户组。这个组不是任何用户的主组,因此要通过修改主组的命令给它分配用户

删除用户组

sudo delgroup groupname

该命令会删除指定的用户组。

通过以上方法,可以有效地管理Linux系统中的用户和权限,确保系统的安全性和稳定性。

至于在哪体现用户组和普通用户权限区别,具体在文件权限来看

文件权限

首先我们了解一下文件的类型

我们看每个文件属性最前面的一个字母就是描述的文件类型

d:文件夹     -:普通文件   

l: 软链接      b:快设备文件(如硬盘)

p:管道文件 c:字符设备文件

s:套接口文件

可以使用file命令 来显示当前文件是什么类型

文件访问者类别

  1. 文件和文件目录所有者
  2. 文件和文件目录所有者所在的组的用户
  3. 其他用户

基本权限

  1. 读:Read对⽂件⽽⾔,具有读取⽂件内容的权限;对⽬录来说,具有浏览该⽬录信息

    的权限,即能不能用 ls 查看

  2. 写:Write对⽂件⽽⾔,具有修改⽂件内容的权限;对⽬录来说具有删除或创建⽬录内

    ⽂件的权限,即能不能用rm或者rmdir 和 touch或者mkdir

  3. 执行:execute对⽂件⽽⾔,具有执⾏⽂件的权限;对⽬录来说,具有进⼊⽬录的权

    限,即能不能用 cd 命令进入

  4. -:表示没有这个权限,下图可以看出

上图的九项就是权限的描述,分别是读写执行重复三次,为什么要出复三次呢?

这是描述所有者,所属组,其他用户的权限说明,每个类型都有三个权限来描述分别是读写执行。

通过这九项三大类,就可以把文件权限管理的十分恰当,但也有不足,后面说

权限表示方法

_ _ _   _ _ _   _ _ _三类分别看,每个_有两个情况,因此有2^3=8种,所以我们可以用三位八进制来简洁表示我们的权限。

例如 rw__wx___ 就是110 011 000就是630

一个文件创建后的默认权限是666,一个目录创建的默认权限是777

权限修改

一个文件的修改权一般只能是文件所有者或者root

chmod

功能:设置⽂件的访问权限

格式:chmod [参数] 权限 ⽂件名 常⽤选项:

• R -> 递归修改⽬录⽂件的权限

• 说明:只有⽂件的拥有者和root才可以改变⽂件的权限

chmod命令权限值的格式:

1 ⽤⼾表⽰符+/-=权限字符

◦ +:向权限范围增加权限代号所表⽰的权限

◦ -:向权限范围取消权限代号所表⽰的权限

◦ =:向权限范围赋予权限代号所表⽰的权限

◦ ⽤⼾符号:

◦ u:拥有者

◦ g:拥有者同组⽤

◦ o:其它⽤⼾

◦ a:所有⽤⼾

◦ 实例:

▪ chmod u+w /home/abc.txt

▪ chmod o-x /home/abc.txt

▪ chmod a=x /home/abc.txt

2 三位8进制数字

◦ 实例:

▪ chmod 664 /home/abc.txt

▪ chmod 640 /home/abc.txt

chown

修改一个文件的所有者

格式:chown [参数] ⽤⼾名 ⽂件名

-R 递归修改⽂件或⽬录的所属者


chgrp

修改一个文件的所属组

-R 递归修改⽂件或⽬录的所属组

chgrp users 文件名

umask

首先要了解 权限掩码是什么,我们创建一个文件和目录:

我们发现文件权限不是66,目录权限也不是777

这是因为有权限掩码,权限掩码就是让某些权限在创建的时候不给出

第一位是特殊权限位不用管。因此权限掩码就是000 000 010,即其他组没有写权限。也就和ll的对应上了

粘滞位

有一个潜在的问题,只要一个用户拥有目录写的权限就可以删除这个目录下的文件,这是不可取的。我创建的文件凭什么被你给删除掉了呢? 

因此有了粘滞位

chmod +t 目录

当⼀个⽬录被设置为"粘滞位"(⽤chmod +t),则该⽬录下的⽂件只能由
1. 超级管理员删除

2. 该⽬录的所有者删除

3. 该⽂件的所有者删除
 

一些提示

• ⽬录的可执⾏权限是表⽰你可否在⽬录下执⾏命令。

• 如果⽬录没有 -x 权限,则⽆法对⽬录执⾏任何命令,甚⾄⽆法 cd 进⼊⽬, 即使⽬录仍然有 -r 读

权限(这个地⽅很容易犯错,认为有读权限就可以进⼊⽬录读取⽬录下的⽂件)

• ⽽如果⽬录具有 -x 权限,但没有 -r 权限,则⽤⼾可以执⾏命令,可以 cd 进⼊⽬录。但没有

⽬录的读权限

• 所以在⽬录下,即使可以执⾏ ls 命令,但仍然没有权限读出⽬录下的⽂档。

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

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

相关文章

Python函数返回值的艺术:为何True/False是更优实践及例外情况分析

在Python编程实践中,子程序的返回值设计往往是一个容易被忽视但却至关重要的设计决策。本文将深入探讨为什么返回True/False往往是更好的选择,何时应该避免这种做法,以及如何处理与None值相关的问题。 为什么返回True/False是更好的实践&…

STM32单片机内存分配详细讲解

单片机的内存无非就两种,内部FLASH和SRAM,最多再加上一个外部的FLASH拓展。在这里我以STM32F103C8T6为例子讲解FLASH和SRAM。 STM32F103C8T6具有64KB的闪存和20KB的SRAM。 一. Flash 1.1 定义 非易失性存储器,即使在断电后,其所…

【Tools】Visual Studio使用经验介绍(包括基本功能、远程调试、引入第三方库等等)

这里写目录标题 1. VS基本使用1.1. 快捷键1.2. 查看变量地址1.3. 查看代码汇编1.4. visual studio 热重载功能的使用1.5. vs远程服务器调试1.6. 引入第三方库VLD1.7. release debug模式 1. VS基本使用 1.1. 快捷键 ctrl c :复制光标所在行 注意:只需要光标在这…

网络爬虫学习之httpx的使用

开篇 本文整理自《Python3 网络爬虫实战》,主要是httpx的使用。 笔记整理 使用urllib库requests库的使用,已经可以爬取绝大多数网站的数据,但对于某些网站依然无能为力。 这是因为这些网站强制使用HTTP/2.0协议访问,这时urllib和r…

Python内存管理:赋值、浅拷贝与深拷贝解析

赋值与共享资源 在Python中,直接赋值操作(如 list2 list1)会导致两个变量共享同一个内存地址。这意味着对 list1 的修改会直接影响到 list2,因为它们指向同一个对象。 注意: 赋值等于完全共享资源 如果我们不希望这样完全共享&…

CentOS7原有磁盘扩容实战记录(LVM非LVM)【针对GPT分区】

一、环境 二、命令及含义 fdisk ‌ ‌ fdisk‌是一个较老的分区表创建和管理工具,主要支持MBR(Master Boot Record)格式的分区表。MBR分区表支持的硬盘单个分区最大容量为2TB,最多可以有4个主分区。fdisk通过命令行界面进行操…

获取相机图像(ROS2)

文章目录 前言一、获取笔记本自带相机图像1.打开终端2.安装usb-cam功能包3.启动相机节点4.再打开一个终端5.启动rqt查看图像(1)方法一:点击窗口选项,打开图像话题(2)方法二:使用命令行,直接打开图像话题 二、获取USB相机图像总结 …

Go 语言中接口类型转换为具体类型

类型转换方法 在 Go 语言中,将接口类型转换为具体类型主要有以下几种方法: 1. 类型断言(Type Assertion) var i interface{} "hello"// 基本形式 s : i.(string) // 将接口i转换为string类型 fmt.Println(s) // 输…

ES C++客户端安装及使用

介绍 Elasticsearch , 简称 ES ,它是个开源分布式搜索引擎,它的特点有:分布式,零配置,自动发现,索引自动分片,索引副本机制,restful 风格接口,多数据源&…

力扣-94.二叉树的中序遍历

题目描述 给定一个二叉树的根节点 root &#xff0c;返回 它的 中序 遍历 。 class Solution { public:void inorder(TreeNode* root, vector<int>& res){//C这里&一定要加if(!root)return;inorder(root->left,res);res.push_back(root->val);inorder(ro…

《大模型微调实战:Llama 3.0全参数优化指南》

全参数微调&#xff08;Full Parameter Fine-Tuning&#xff09;是推动大模型适应垂直领域任务的核心技术&#xff0c;尤其对于Llama 3.0这类千亿级参数模型而言&#xff0c;其性能优化与场景适配能力直接决定了实际应用价值。然而&#xff0c;全参数微调面临计算成本高、内存占…

张 提示词优化(相似计算模式)深度学习中的损失函数优化技巧

失函数的解释 损失函数代码解析 loss = -F.log_softmax(logits[

《Spring Boot 4.0新特性深度解析》

Spring Boot 4.0的发布标志着Java生态向云原生与开发效能革命的全面迈进。作为企业级应用开发的事实标准框架&#xff0c;此次升级在运行时性能、云原生支持、开发者体验及生态兼容性四大维度实现突破性创新。本文深度解析其核心技术特性&#xff0c;涵盖GraalVM原生镜像支持、…

协作赋能-1-制造业生产流程重构

制造业生产流程重构——从“信息孤岛”到“全链协同” 在制造业的数字化转型浪潮中&#xff0c;一个看似矛盾的现象正在蔓延&#xff1a;企业部署了ERP、MES、PLM等管理系统&#xff0c;却仍未摆脱“纸质工单满天飞、跨部门扯皮不断”的困境。以汽车制造业为例&#xff0c;其…

基于React的高德地图api教程002:自定义地图样式

文章目录 2、自定义地图样式2.1 自定义底图样式2.2 添加卫星地图和路网图2.3 完整代码下载2、自定义地图样式 2.1 自定义底图样式 高德地图提供了多种地图样式,对底图进行设置,可选样式如下图所示: 添加地图样式切换控件: <div style={{marg

谷歌Gemini生图升级:与GPT-4o的对决,谁更胜一筹?

在人工智能技术的快速发展中&#xff0c;图像生成&#xff08;即“生图”&#xff09;已经成为AI领域的一大热点。谷歌最近对其多模态模型Gemini 2.0 Flash的生图功能进行了升级&#xff0c;从之前的“实验版”&#xff08;Gemini 2.0 Flash Experimental Image Generation&…

OpenAI官方指南,详细解释了何时使用哪种AI模型

&#xff08;1&#xff09;GPT-4o • 日常任务专家&#xff1a;头脑风暴/会议纪要/邮件撰写/创意生成 • 全模态支持&#xff1a;兼容GPTs插件/数据分析/图像生成/画布协作/高级语音等功能&#xff0c;支持文档/图片/CSV/音视频等多格式输入 【典型用例】 • 将会议记录提炼…

火山引擎发展方向

火山引擎作为字节跳动旗下的企业级技术服务平台&#xff0c;要发展客户需要结合自身技术优势、行业趋势和市场需求&#xff0c;制定差异化的策略。以下是一些关键方向和建议&#xff1a; --- ### **一、明确目标市场定位** 1. **聚焦核心赛道** - **泛互联网行业**&…

在 Angular 中, `if...else if...else`

在 Angular 中&#xff0c;模板语法本身并不直接支持 if...else if...else 这样的多条件分支结构。不过&#xff0c;你可以通过使用 *ngIf 指令结合其else模板功能来实现类似的效果。下面是如何模拟if...else if...else逻辑的方法&#xff1a; 示例&#xff1a;实现if...else …

利用Backtrader实现回测策略的可视化与图表绘制

Plotting功能是Backtrader的一大特色,能够帮助直观地展示交易数据、策略表现等信息,为分析和优化交易策略提供有力支持。 (一)Backtrader的主要特点 灵活性:支持多种数据源和交易接口,用户可以根据自己的需求灵活选择。无论是股票、期货、外汇等不同类型的金融市场数据,…