【Linux】Linux 权限的理解

首先我们先介绍Linux中基本的用户认识:

Linux下有两种用户:超级用户(root)和普通用户

  • 超级用户:可以再linux系统下做任何事情,不受限制
  • 普通用户:在linux下做有限(权限较低)的事情。
  • 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

命令:su [用户名]

  • 普通用户切换到 root 的命令su 需要输入root用户的密码
  • root用户切换到普通用户 不需要输入密码可以直接进行切换

什么是权限呢?

        权限是用来约束目标对象的,有可能是人也有可能是一个网站亦或是一个app。在Linux 中,权限是控制用户对文件和目录访问的一种机制。每个文件和目录都有三种基本权限:读取(r)、写入(w)执行(x)。这些权限分别适用于三类用户:文件的拥有者(u)文件所属组的用户(g)其他用户(other)权限是Linux对用户管理方面的一种手段。

Linux 和 Windows 的文件类型差别很大。Windows的文件类型是通过文件的后缀来划分的,我们用户虽然可以按照Windows的那种方式在Linux下按照后缀名来区分文件类型(用来提示用户,后缀名其实是文件名的一部分),但是Linux本身区分文件类型的方式与文件后缀无关(如下图所示)。

Linux是通过ll下的众多属性列中的第一列的第一个字符来区分文件类型的。


Linux下的文件类型:

  • - :普通文件 (源代码,库文件,可执行程序,文档压缩包等等)
  • d:目录文件
  • c:字符设备文件(硬件比如键盘,显示器)
  • b:块设备(磁盘...)
  • l:链接文件(快捷方式)
  • p:管道文件

        l即link是连接的缩写,我们Windows系统中桌面上的快捷方式即是链接文件。


文件权限值的表示方法

  • a)字符表示方法
    • ll下的第一列后9个字符用来表示该文件对于拥有者,所属者和其他用户所对应的权限。这三类用户每类用户分别对应着三个字符。

  • b)8进制数值表示方法


如何操作权限?

设置文件的属性

a)chmod

功能:设置文件的访问权限
格式:chmod [参数] 权限 文件名
常用选项:
        R -> 递归修改目录文件的权限
说明:只有文件的拥有者和root才可以改变文件的权限

  • chmod 用户表示符+/-=权限字符 文件名
  • chmod 三位8进制数字 文件名
# chmod u+rw /home/test.txt
# chmod u+w,o-x,... /home/test.txt
# chmod 664 /home/test.txt
# chmod 640 /home/test.txt

设置文件所属角色

b)chown
功能:修改文件的拥有者
格式: chown [参数] 用户名 文件名

c)chgrp

功能:修改文件或目录的所属组
格式: chgrp [参数] 用户组名 文件名
常用选项: -R 递归修改文件或目录的所属组


d)umask
功能:
查看或修改文件掩码
新建文件夹默认权限=0666
新建目录默认权限=0777

但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候umask会对起始权限去做约束

假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
格式: umask 权限值
说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用户默认为0002。

# umask //查看
# umask 040//设置

目录的权限

  • 可执行(x)权限: 如果目录没有可执行权限, 则无法cd到目录中

  • 可读(r)权限:如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容

  • 可写(w)权限: 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件


普通用户如何提升权限

命令:sudo +命令

  • 受信任用户提升权限只需要输入自己用户的密码
  • 不受信任用户提升权限需要输入root用户的密码

粘滞位

Linux系统中有很多用户,可能会有以下情景,我们需要在一个公共的目录进行临时文件的操作(增删查改),希望可以通过这个公共的目录让这些用户实现消息共享,信息传递。粘滞位是在一个公共的目录下,大家一起进行文件操作。

一个文件是否可以被删除与文件本身无关系,这是目录的权限。如果有人在公共目录下创建了一个私密文件,除了拥有者以外其他人都不能读不能写不能执行,但是其他人却可以删除这个文件。为了让一个公共目录大家各自可以进行rwx操作,但是不可以互删对方的文件,怎么做呢?答案是给目录设置粘滞位(权限的一种特殊情况)。

当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由

  • 超级管理员删除
  • 该文件的所有者删除

为什么要将用户划分成拥有者(u)、所属组(g)和其他用户(other)呢?

        通过对用户群体进行划分,可以直接对这个群体起到管理和约束的效果。如果只有拥有者和其他用户,就没有我们所谓的中间状态,无法将本应该可以读写你文件的人(你团队的人...)与真正的其他人(other)进行有效的区分。

        拥有者(u)、所属组(g)和其他用户(other)对应的不是人,而是对于角色(身份)的划分。su-切换用户,切换的是人。角色是要由人来扮演的,角色又反向地去限制扮演他的人。


总结

  • 目录的可执行权限是表示你可否在目录下执行命令。
  • 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd 进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  • 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

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

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

相关文章

给阿里云OSS绑定域名并启用SSL

为什么要这么做? 问题描述: 当用户通过 OSS 域名访问文件时,OSS 会在响应头中增加 Content-Disposition: attachment 和 x-oss-force-download: true,导致文件被强制下载而不是预览。这个问题特别影响在 2022/10/09 之后新开通 OS…

spring boot整合https协议

整体目录 1. 生成SSL证书 首先,使用keytool生成一个自签名证书。打开命令行工具并运行以下命令: keytool -genkeypair -alias myserver -keyalg RSA -keysize 2048 -keystore keystore.jks -validity 365 这将创建一个名为keystore.jks的文件&#xf…

【Window主机访问Ubuntu从机——Xrdp配置与使用】

使用Xrdp在Window环境下远程桌面访问Ubuntu主机 文章目录 Ubuntu安装图形化界面Ubuntu安装Xrdp通过网线连接两台主机Window主机有线连接配置Ubuntu从机设置测试有线连接 Window主机打开远程桌面功能参考文章总结 Ubuntu安装图形化界面 sudo apt update sudo apt upgrade sudo …

游戏引擎学习第10天

视频参考:https://www.bilibili.com/video/BV1LyU3YpEam/ 介绍intel architecture reference manual 地址:https://www.intel.com/content/www/us/en/developer/articles/technical/intel-sdm.html RDTS(读取时间戳计数器)指令是 x86/x86_64 架构中的…

计算机网络(11)和流量控制补充

这一篇对数据链路层中的和流量控制进行详细学习 流量控制(Flow Control)是计算机网络中确保数据流平稳传输的技术,旨在防止数据发送方发送过多数据,导致接收方的缓冲区溢出,进而造成数据丢失或传输失败。流量控制通常…

PVE纵览-安装系统卡“Loading Driver”的快速解决方案

PVE纵览-安装系统卡“Loading Driver”的快速解决方案 文章目录 PVE纵览-安装系统卡“Loading Driver”的快速解决方案摘要通过引导参数解决PVE安装卡在“Loading Driver”问题官方解决方法 关键字: PVE、 显卡、 Loading、 Driver、 nomodeset 摘要 在虚拟机…

Docker在CentOS上的安装与配置

前言 随着云计算和微服务架构的兴起,Docker作为一种轻量级的容器技术,已经成为现代软件开发和运维中的重要工具。本文旨在为初学者提供一份详尽的指南,帮助他们在CentOS系统上安装和配置Docker及相关组件,如Docker Compose和私有…

在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5

在 Oracle Linux 8.9 上安装Oracle Database 23ai 23.5 1. 安装 Oracle Database 23ai2. 连接 Oracle Database 23c3. 重启启动后,手动启动数据库4. 重启启动后,手动启动 Listener5. 手动启动 Pluggable Database6. 自动启动 Pluggable Database7. 设置开…

实验6记录网络与故障排除

实验6记录网络与故障排除 实验目的及要求: 通过实验,掌握如何利用文档记录网络设备相关信息并完成网络拓扑结构的绘制。能够使用各种技术和工具来找出连通性问题,使用文档来指导故障排除工作,确定具体的网络问题,实施…

Go开发指南- Goroutine

目录: (1)Go开发指南-Hello World (2)Go开发指南-Gin与Web开发 (3)Go开发指南-Goroutine Goroutine 在java中我们要实现并发编程的时候,通常要自己维护一个线程池,并且需要去包装任务、调度任务和维护上下文切换。这个过程需要消耗大量的精…

解决failed to execute PosixPath(‘dot‘) 或者GraphViz‘s executables not found

在网上找了很多方法都没解决,所以写一篇文章帮助和我遇到同样问题的人 解决方法: 因为python解释器会解释转移字符,因此在环境变量中把\bin换成\\bin即可 解决过程: 系统:win10 已安装pip install graphviz&#xff0…

力扣 LeetCode 541. 反转字符串II(Day4:字符串)

解题思路&#xff1a; i可以成段成段的跳&#xff0c;而不是简单的i class Solution {public String reverseStr(String s, int k) {char[] ch s.toCharArray();// 1. 每隔 2k 个字符的前 k 个字符进行反转for (int i 0; i < ch.length; i 2 * k) {// 2. 剩余字符小于 …

官方压测工具memtier-benchmark压测redis

1 概述 memtier_benchmark是一种高吞吐量的性能基准测试工具&#xff0c;主要用于Redis和Memcached。它是 Redis官方开发团队开发的&#xff0c;旨在生成各种流量模式&#xff0c;以便测试和优化以上两个数据库的性能。 memtier_benchmark的一些关键特点如下&#xff1a; 多…

用 Python 从零开始创建神经网络(三):添加层级(Adding Layers)

添加层级&#xff08;Adding Layers&#xff09; 引言1. Training Data2. Dense Layer Class 引言 我们构建的神经网络变得越来越受人尊敬&#xff0c;但目前我们只有一层。当神经网络具有两层或更多隐藏层时&#xff0c;它们变成了“深度”网络。目前我们只有一层&#xff0c…

MFC工控项目实例三十实现一个简单的流程

启动按钮夹紧 密闭&#xff0c;时间0到平衡 进气&#xff0c;时间1到进气关&#xff0c;时间2到平衡关 检测&#xff0c;时间3到平衡 排气&#xff0c;时间4到夹紧开、密闭开、排气关。 相关代码 void CSEAL_PRESSUREDlg::OnTimer_2(UINT nIDEvent_2) {// if (nIDEvent_21 &am…

Java I/O(输入/输出)——针对实习面试

目录 Java I/O&#xff08;输入/输出&#xff09;什么是Java I/O流&#xff1f;字节流和字符流有什么区别&#xff1f;什么是缓冲流&#xff1f;为什么要使用缓冲流&#xff1f;Java I/O中的设计模式有哪些&#xff1f;什么是BIO&#xff1f;什么是NIO&#xff1f;什么是AIO&am…

Exploring Defeasible Reasoning in Large Language Models: A Chain-of-Thought A

文章目录 题目摘要简介准备工作数据集生成方法实验结论 题目 探索大型语言模型中的可废止推理&#xff1a;思路链 论文地址&#xff1a;http://collegepublications.co.uk/downloads/LNGAI00004.pdf#page136 摘要 许多大型语言模型 (LLM) 经过大量高质量数据语料库的训练&…

数据结构--数组

一.线性和非线性 线性&#xff1a;除首尾外只有一个唯一的前驱和后继。eg&#xff1a;数组&#xff0c;链表等。 非线性&#xff1a;不是线性的就是非线性。 二.数组是什么&#xff1f; 数组是一个固定长度的存储相同数据类型的数据结构&#xff0c;数组中的元素被存储在一…

MySQL技巧之跨服务器数据查询:基础篇-更新语句如何写

MySQL技巧之跨服务器数据查询&#xff1a;基础篇-更新语句如何写 上一篇已经描述&#xff1a;借用微软的SQL Server ODBC 即可实现MySQL跨服务器间的数据查询。 而且还介绍了如何获得一个在MS SQL Server 可以连接指定实例的MySQL数据库的连接名: MY_ODBC_MYSQL 以及用同样的…

Unity教程(十八)战斗系统 攻击逻辑

Unity开发2D类银河恶魔城游戏学习笔记 Unity教程&#xff08;零&#xff09;Unity和VS的使用相关内容 Unity教程&#xff08;一&#xff09;开始学习状态机 Unity教程&#xff08;二&#xff09;角色移动的实现 Unity教程&#xff08;三&#xff09;角色跳跃的实现 Unity教程&…