【Linux】掌握Linux系统编程中的权限与访问控制

💞💞 前言

hello hello~ ,这里是大耳朵土土垚~💖💖 ,欢迎大家点赞🥳🥳关注💥💥收藏🌹🌹🌹
在这里插入图片描述

💥个人主页:大耳朵土土垚的博客
💥 所属专栏:Linux系统编程
这里将会不定期更新有关Linux系统编程有关的内容,希望大家多多点赞关注收藏💖💖

目录

  • 💞💞 前言
  • 1.Linux权限的概念
    • ✨su命令
      • ☑️**如何创建一个普通用户?**
  • 2.Linux权限管理
    • 2.1文件访问者的分类(人)
    • 2.2文件类型和访问权限(事物属性)
    • 2.3文件权限值的表示方法
      • ✨字符表示方法
      • ✨8进制数值表示方法
    • 2.4文件访问权限的相关设置方法
      • ✨chmod指令
      • ✨chown指令
      • ✨chgrp指令
      • ✨umask指令
  • 3.结语

1.Linux权限的概念

✨Linux下有两种用户:超级用户(root)、普通用户。
超级用户:可以再linux系统下做任何事情,不受限制
普通用户:在linux下做有限的事情

超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。

超级用户的命令提示符如下图所示:

在这里插入图片描述普通用户的命令提示符如下图所示:

在这里插入图片描述

✨su命令

格式:

su [用户名]

功能:

切换用户

例如,要从root用户切换到普通用户user,则使用 su user。 要从普通用户user切换到root用户则使用 su root(root可以省略),此时系统会提示输入root用户的口令

这里可以从root超级用户切换到普通用户:

su tutu   //tutu:普通用户的名字

在这里插入图片描述

因为root用户可以再linux系统下做任何事情,不受限制,所以从它切换到普通用户不用输入密码,而当普通用户切换到超级用户时则需要输入超级用户的密码;

☑️如何创建一个普通用户?

✨1.确保自己现在是root用户,可以输入whoami来查看:

在这里插入图片描述

✨2.在root用户下输入adduser+要创建的用户名(我这里用的是tutu),接着输入passwd+用户名设置该用户的密码,然后再重复输入新密码(注意这里输入密码不回显):

在这里插入图片描述

✨3.当出现下面的语句就说明创建成功啦🥳🥳:

在这里插入图片描述

2.Linux权限管理

我们在创建一个文件和目录后,使用ll指令,通常会看到显示出如下图所示的一连串字母和时间和文件/目录名:
在这里插入图片描述
上图中各部分表示的含义如下图所示:
在这里插入图片描述
对于红色部分我们来详细学习一下:
先来了解一下文件访问者

2.1文件访问者的分类(人)

分为三个类别:
文件和文件目录的所有者:u—User
文件和文件目录的所有者所在的组的用户:g—Group
其它用户:o—Others

接下来我们再来看红色部分

2.2文件类型和访问权限(事物属性)

在这里插入图片描述

  • 文件类型

d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件

可以看到上面创建的dir文件夹(目录)第一位是d;而file文件则是-

  • 基本权限

✨读(r):Read对文件而言,具有读取文件内容的权限;对目录来说,具有浏览该目录信息的权限
✨写(w):Write对文件而言,具有修改文件内容的权限;对目录来说具有删除移动目录内文件的权限
✨执行(x):execute对文件而言,具有执行文件的权限;对目录来说,具有进入目录的权限
✨“—”表示不具有该项权限

在这里插入图片描述

可以看到对于上图中的文件夹,所有者具有读、写和执行三种权限,文件所属组具有读和执行的权限,不具有写的权限,其他用户也是具有读和执行的权限,不具有写的权限;
对于上图中的普通文件,所有者具有读和写权限,不具有执行权限,文件所属组只具有权限,其他用户也只具有权限。

2.3文件权限值的表示方法

✨字符表示方法

Linux表示说明
r - -只读
- w -只写
- - x仅可执行
rw -可读可写
r - x可读可执行
- wx可写可执行
rwx可读可写可执行
- - -无权限

✨8进制数值表示方法

能用八进制表示的原因是读、写、可执行这三个权限要么有要么没有,类似于计算机中的二进制,可以用01来表示,比如- - - 就可以表示为000;rwx 就可以表示为 111 ;
111换算为十进制就是7,不超过8,那么我们为了省去使用二进制要写三个数的麻烦,就可以使用八进制,如下图表所示:

权限符号表示二进制表示八进制表示
r - -1004
- w -0102
- - x0011
rw -1106
r - x1015
- wx0113
rwx1117
- - -0000

2.4文件访问权限的相关设置方法

✨chmod指令

功能

用来更改文件或目录的权限的命令。
"chmod"是"change mode"的缩写。

格式

chmod [选项] [权限] 文件名

常用选项

R :递归修改目录文件的权限

说明

只有文件的拥有者和root才可以改变文件的权限

用户表示符

u:所有者的权限 g:所属组的权限 o:其他用户的权限 a:所有用户的权限(u、g、o的集合)

chmod指令权限格式

①用户表示符+/-=权限字符

+: 向权限范围增加权限代号所表示的权限
-: 向权限范围取消权限代号所表示的权限
=: 向权限范围赋予权限代号所表示的权限

实例一:

chmod u-rw file

其中:
在这里插入图片描述

结果如下:
在这里插入图片描述
实例二:

chmod a=x file

结果如下:
在这里插入图片描述
②三位8进制数字

chmod 644 file

结果如下:
在这里插入图片描述

✨chown指令

功能

修改文件的拥有者

格式

chown [参数] [用户名] 文件名

实例

chown tutu file

结果如下:
在这里插入图片描述

✨chgrp指令

功能

修改文件或目录的所属组

格式

chgrp [参数] [用户组名] 文件名

实例

chgrp tutu file

结果如下:
在这里插入图片描述

✨umask指令

功能

查看或修改文件掩码

格式:

umask [mode]

其中,mode是一个三位八进制数字,用来表示文件和目录权限的掩码。

☑️当我们创建一个新文件时,我们会发现文件访问权限是文件所有者可读可写,文件所属组和其他用户只可读,如下图所示:
在这里插入图片描述
☑️这是因为新建文件默认权限是666(八进制表示),新建文件夹默认权限是777,创建文件或目录的时候还要受到umask的影响,而我们当前的umask值为0022(第一个0可忽略不计,即022);
☑️umask命令将掩码(022)与文件默认权限(666)进行"与"运算,然后从默认权限中去除相应的权限(文件夹同理),如下图所示:
在这里插入图片描述

这里是umask & mask ^ mask(mask就是上图中的666)
或者也可以mask & ~umask

☑️所以我们创建文件显示出的权限是644

将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。也就是我们看到的644
实例一:

 umask  

显示当前的umask值
说明:超级用户默认掩码值为0022,普通用户默认为0002。

结果如下:
在这里插入图片描述
实例二:

umask 011

设置新的umask值为0011

此时我们再创建新文件时,可以看到权限和之前有所不同,变成了666:
在这里插入图片描述

3.结语

Linux权限是指对文件和目录的访问控制。每个文件和目录都有一个所有者和一个所属组,而且还可以赋予其他用户的访问权限。Linux权限控制了文件和目录的读、写和执行权限,通过设置不同的权限组合可以限制用户对文件和目录的访问。以上就是今天的所有内容啦~ 完结撒花~🥳🎉🎉

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

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

相关文章

电源小白入门学习7——USB充电、供电、电源路径管理

电源小白入门学习7——USB充电、供电、电源路径管理 USB充电系统需要考虑的因素开关充电和线性充电充电路径管理输入限流路径管理(动态功率管理)理想二极管帮助提高电池利用率输入过充抑制 上期我们介绍了锂离子电池的电池特性,及充电电路设计…

QT--1

类型界面 #include "mywidget.h"myWidget::myWidget(QWidget *parent): QWidget(parent) {//窗口相关设置this->resize(680,520);this->setFixedSize(680,520);this->setWindowTitle("Tim");this->setWindowFlag(Qt::FramelessWindowHint);th…

Java项目硅谷课堂后端报错处理

Java项目硅谷课堂后端报错处理总结 前言service_vod报错import javax.servlet.http.HttpServletResponse;找不到java.lang.IllegalStateException gateway报错Failed to configure a DataSourceUnsatisfiedDependencyException: Error creating bean with name gatewayConfigur…

自学是什么?如何学会自学?

如是我闻: 自学是什么? 对自学下一个定义,可以这样说: 自学就是自主的选择学习资源来学习。 而自学的方式,无论是看网课,读教材,做习题, 都是一般的的学习方法。 我们是无法从方…

生成一个好故事!StoryDiffusion:一致自注意力和语义运动预测器必不可少(南开字节)

文章链接:https://arxiv.org/pdf/2405.01434 主页:https://storydiffusion.github.io/ 对于最近基于扩散的生成模型来说,在一系列生成的图像中保持一致的内容,尤其是那些包含主题和复杂细节的图像,是一个重大挑战。本…

Ollama+Open WebUI部署大模型在linux平台

Ollama安装运行 Ollama容器拉取 docker pull ollama/ollamaOllama容器CPU运行 docker run -d --restartalways -v /home/docker/ollama:/root/.ollama -p 11434:11434 --name ollama ollama/ollamaOllama容器GPU运行 # nvidia-container-runtime-script.shsudo curl -s -L …

网络初始化配置

IPADDR192.168.23.10 #新的ip地址,ip的网段要与nat模式下的网段一致 NETMASK255.255.255.0 #子网掩码 GATEWAY192.168.23.2 #网关 DNS1114.114.114.114 #域名解析:配置为国内114.114.114.114,国外8.8.8.8 ONBOOTtrue 启动时该网卡…

(代码示例)使用crypto-js实现AES加密解密

npm install crypto-js # 官方文档 <https://www.npmjs.com/package/crypto-js>适用于需要检验的场景 比如敏感的前端query参数Cookie中的某个字段数据库中的敏感字段 // 做成文件 const CryptoJS require("crypto-js"); // 秘钥 const aesKey "59a…

【信息系统项目管理师练习题】信息系统治理

IT治理的核心是关注以下哪项内容? a) 人员培训和发展计划 b) IT定位和信息化建设与数字化转型的责权利划分 c) 业务流程的绩效管理 d) IT基础设施的优化利用 答案: b) IT定位和信息化建设与数字化转型的责权利划分 IT治理体系框架的组成部分包括以下哪些? a) IT战略目标、IT治…

视频降噪算法 Meshflow 介绍

介绍 Meshflow 视频降噪算法来自于 2017 年电子科技大学一篇高质量论文。 该论文提出了一个新的运动模型MeshFlow&#xff0c;它是一个空间平滑的稀疏运动场 (spatially smooth sparse motion field)&#xff0c;其运动矢量 (motion vectors) 仅在网格顶点 (mesh vertexes) 处…

一般显卡3d建模渲染够用吗?3d云渲染助力

3D建模和渲染对计算机硬件有较高要求&#xff0c;特别是显卡。显卡的性能直接影响渲染速度&#xff0c;低端和高端显卡在渲染效率上存在显著差异。对于追求快速渲染的用户&#xff0c;高端显卡是首选。那么&#xff0c;4050显卡是否能够满足3D建模渲染的需求呢?下面我们来探讨…

[蓝桥杯2024]-PWN:ezheap解析(堆glibc2.31,glibc2.31下的double free)

查看保护 查看ida 大致就是只能创建0x60大小的堆块&#xff0c;并且uaf只能利用一次 完整exp&#xff1a; from pwn import* #context(log_leveldebug) pprocess(./ezheap2.31)def alloc(content):p.sendlineafter(b4.exit,b1)p.send(content) def free(index):p.sendlineaft…

Java-(乘法表之后)增强for循环

这里我们先做个了解&#xff0c;之后我会在数组中进行详细介绍Java5引入了一种主要用于数组或集合的增强型for循环Java增强型for循环语法格式如下 For(声明语句&#xff1a;表达式&#xff09;{ //代码语句 } 声明语句&#xff1a;声明新的局部变量&#xff0c;该变量的类型…

高效转化,智能私信软件策略揭秘

在数字营销的浪潮中&#xff0c;智能私信软件策略正成为提升转化率的重要工具。这种软件以其个性化、自动化的特点&#xff0c;正在重新定义与客户的互动方式&#xff0c;让企业能够更加高效地吸引并留住潜在客户。 智能私信软件的核心在于其高度的定制化和人性化设计。通过大数…

opencv基础篇 ——(十六)图形绘制与填充

OpenCV 提供了丰富的图形绘制和填充功能&#xff0c;主要通过 cv::rectangle, cv::circle, cv::line, cv::polylines, cv::fillPoly 和 cv::ellipse 等函数实现。以下是一些基本的图形绘制和填充操作的说明&#xff1a; 矩形: 函数: cv::rectangle语法: cv::rectangle(img, rec…

【C++】Vector详解

Vector是什么&#xff1f; vector是C&#xff08;STL&#xff09;中的一种序列容器Vector是一个动态数组&#xff0c;内存空间是连续的&#xff0c;支持随机访问&#xff0c;支持迭代器访问 Vector代码实现 变量指向 代码初始化 #include<iostream> using namespace …

mysql优化面试总结

mysql优化 和 mysql优化之索引 两篇文章有大量的实验性的内容&#xff0c;我暂时没时间理解&#xff0c;把八股部分总结到这篇文章中&#xff0c;方便记忆 我们为什么要对sql进行优化 我们开发项目上线初期&#xff0c;由于业务数据量相对较少&#xff0c;一些SQL的执行效率对…

2024年电工杯数学建模竞赛A题B题思路代码分享

您的点赞收藏是我继续更新的最大动力&#xff01; 欲获取更多电工杯学习资料&#xff0c;可点击如下卡片链接 点击链接加入群聊【2024电工杯】&#xff1a;http://qm.qq.com/cgi-bin/qm/qr?_wv1027&k_PrjarulWZU8JsAOA9gnj_oHKIjFe195&authKeySbv2XM853pynlnXiv6M58…

java串口通讯

引maven <dependency><groupId>com.github.purejavacomm</groupId><artifactId>purejavacomm</artifactId><version>1.0.2.RELEASE</version> </dependency>工具类 package com.fx.client.utils;import java.io.IOException…

景源畅信数字:抖音怎么挂橱窗商品?

抖音作为一款短视频分享平台&#xff0c;近年来逐渐融入了电商功能&#xff0c;其中“橱窗”就是商家或个人展示和销售商品的一个重要工具。如何在抖音上挂橱窗商品&#xff0c;成为了众多商家关注的焦点。 一、确保账号资质&#xff1a;在抖音上挂橱窗商品前&#xff0c;需要确…