中信建设有限责任公司华美分公司/安卓aso关键词优化
1. shell命令以及运行原理
Linux严格意义上来说是一个操作系统,我们称之为 "核心(kernel)" ,但我们一般的用户不呢个直接使用到核心,因为不会用。所以开发者在核心外面封装了一层 "外壳(shell)" 程序,来与核心沟通。
从技术角度,shell最简单的定义:命令行解释器(command interpreter) 主要包含:
1. 将使用者的命令翻译给核心处理
2. 将核心的处理结果翻译给使用者
就比如在windows操作系统中,我们的点击操作并不是直接作用在内核上,而是将命令交给shell,shell再翻译给内核,内核处理完之后将结果返回给shell,shell再翻译给用户,比如完成了一个窗口的关闭。
外壳程序在翻译命令的时候为了保证稳定性,操作系统不会崩掉。并不是自己上手翻译,而是创建子进程,让子进程进行命令行解释。因为如果外壳程序出问题了,即便内核操作系统还活着也用不了。
广义上我们经常说的操作系统是操作系统内核+外壳,狭义上的操作系统就单只内核。
在Linux中的外壳程序叫bash,它是一个可执行程序
2. Linux权限的概念
2.1 用户设置
Linux下有两种用户:超级用户(root),普通用户
超级用户:可以在Linux系统下做任何事情,不受限制
普通用户:在权限允许中做事情
超级用户的命令提示符是 "#" ,普通用户命令提示符是 "$"
下面我们使用 adduser 新建一个普通用户,passed 用来设置用户密码
在设置密码的时候它是没有显示的,但是我们是敲进去东西了,敲就好了。我这个密码设置的有点简单,所以报了一下,不用管他。
删除用户的时候 userdel -r 用户名 这里不展示删除了
切换用户
语法:su 用户名
例如要是从root用户切换成普通用户张三,可以直接 su zhangsan 。如果想从普通用户切换到root用户,要 su root(root可以省略) ,再输入root的密码。
切换用户就是让另一个用户过来继续操作,而不是进入另一个用户的家目录中。
退出用户的话就是用 ctrl+d
暂时提权
语法:sudo 命令
sudo命令可以暂时提升普通用户的权限至root执行命令,sudo命令后面直接加指令就行,系统会让用户输入目前账户的密码。不过这个操作要求该用户在系统的信任名单 /etc/sudoers 中,这个名单后面会讲到
2.2 Linux权限管理
一个文件的权限是访问者和文件自身属性的结合体
1. 文件访问者的分类
文件的所有者 (有权访问文件) user
文件的所属组 (有权访问文件) group
其他用户 (无权访问文件) other
如果煤油刻意设定组,则每个用户自成一组,组内的成员都可以访问这个文件,但是其他用户不能访问,这种设定是为了更细粒度的权限管理。
2. 文件类型和访问权限
头10个字符是文件的权限属性,那个数字之后再说,后面内容所对应的属性我都用不同颜色标注出来了。
权限属性中第一个字符是文件类型,d 是目录,- 是普通文件。之后3个字符为一组,分别表示拥有者、所属组、其他人的权限属性。
基本全权限:
r 可读 w 可写 x 可执行 - 没有该权限
文件类型:
d:文件夹
-:普通文件
l:软链接(类似Windows的快捷方式)
b:块设备文件(例如硬盘、光驱等)
p:管道文件
c:字符设备文件(例如屏幕等串口设备)
s:套接口文件
2.3 文件访问权限的相关设置方法
2.3.1 chmod 访问权限
语法:chmod [选项] 权限 文件名
功能:设置文件的访问权限
说明:只有文件的拥有者和root才可以改变文件的权限,这个参数选项我们一般用不到,除非可能用到 R 递归修改目录文件的权限
2.3.1.1 chmod 命令权限值的格式:
用户表示符 +/- 权限字符
+:向权限范围增加权限代号所表示的权限
-:向权限范围取消权限代号所表示的权限
用户符号:
u:拥有者
g:拥有者同组用
o:其它用户
a:所有用户
上面这段代码中我们给拥有者添加了可执行的权限,让这个文件看起来好像可以执行了,但是因为文件的内容就是不可执行的,因此我们即使 ./file.txt 尝试执行也无法成功。
我们还可以通过用 , 逗号隔开的方式一次操作几个权限。
这里要注意身份认证只会执行一次,就是说现在拥有者和组都是atlanteep,我只取消了拥有者的写权限,但是组的我加入了写权限,可是我们还是无法向文件中写入了。就是因为身份认证只会执行一次,检查到我的身份是atlanteep那么就直接看权限,禁止写入,那我的组即使能写,我也不能写了。
但这里有个例外,就是超级用户可以无视文件权限限制进行操作,这也是我这里换了个账号展示的原因。
上面这段代码红框中展示了 a 可以进行三个人同时操作,但是因为这个是root账号,所以即便没有写权限了,root也能往文件中写内容。
2.3.1.2 chmod 三位8进制数字修改权限
如果我们只看一组权限,分别是rwx,关闭或打开用二进制0、1表示,那么都打开就是 111 用8进制表示就是7,只关闭x就是 110 用八进制表示就是6,也就是说一个八进制数字就可以表示一个身份的权限组,三个八进制数字就可以完成一个文件权限属性的修改。
2.3.2 chown 修改拥有者
语法:chown [-选项] 用户名 文件名
这个选项一般也是 -R 递归更改目录用的
2.3.3 chgrp 修改所属组
语法:chgrp [-选项] 组名 文件名
同理,这个选项一般也是 -R 递归更改目录用的
这里要说一下普通用户不可随意将文件的拥有者和所属组进行更改,必须要sudo到root账号进行提权更改。
2.4 目录的权限
到这里我们对于权限以及身份有了较为清晰的认知,因此后面我们基本上都使用普通用户进行操作。
可读权限:
我们关闭拥有者的可读权限之后就不能看这个目录底下都有什么,但是可以进入目录,也可以在目录中写东西,创建文件或者目录,这个目录中的目录是可以正常查看的。
可写权限:
我们关闭拥有者的可写权限之后就不能在目录下写入新的文件或者目录,但是可以正常进入和查看目录。
可执行权限
我们关闭拥有者的可执行权限之后就不能进入这个文件了。
2.5 umask 权限掩码
我们把刚才在lesson4中建的东西都删除,限制重新创建一个目录和一个文件
我们观察刚新建出来的默认目录权限码值是775,文件权限码值是664。这个默认的码是怎么来的,下面我们不卖关子直接开讲。
一个目录的起始权限码其实是777,因为目录需要可读可写可执行;一个文件的起始权限码其实是666,因为文件不可执行但可读可写。那么在用户使用的时候可能不希望自己的东西被other读取,所以每次在创建好文件或目录之后都要修改一下权限属性,那么Linux系统为了避免这种繁琐的事情出现就搞了一个权限掩码。
可以看到我的权限掩码是0002,这个玩意我们只看后三位。
权限码 = 权限掩码按位取反 & 起始权限码
这样就得到了775 664,如果你对这个权限码不满意我们还可以更改,比如:
我们将权限掩码修改成077后就只有我们自己可以对文件有可执行和读写权限啦。
2.6 粘滞位
在正式进入粘滞位之前我们先设置一个小情景。比如说现在我和张三向搞一个共享目录,这个目录我们两个都能进去进行设置文件等操作。但是这个共享目录肯定不能建在我们中任何一个人的家目录下:
可以看到家目录是不允许除自己意外的任何人访问的,root除外。因此我们决定把这个共享目录设置在根目录下
普通用户是禁止配置根目录的,因此我们只能把root叫来帮忙建一下共享目录,此时还要把目录对于其他用户的w权限放开,这样我们才能在目录中设置文件。
设置好之后我们叫张三上号
现在张三也可以对这个文件进行查看和更改,但是其他人不行,比如现在又来了个李四
他看见我和张三共享文件不带他,于是他很生气就把这个文件删除了。
可以看到李四作为other虽然没有权限更改文件内容,但他可以直接删除文件,这个删除文件或添加文件的权限与文件本身无关,而是在于文件所在目录的权限情况
到这里我和张三就傻眼了,于是为了避免这种情况的再发生Linux给出了一个解决方案:粘滞位
就是在目录中加上 t 选项就可以保护目录里的文件,使得有粘滞位保护的目录中的文件,只能由:超级管理员、目录所有者、文件所有者删除 。
我们用root账号给这个目录加上粘滞位:
此时李四再想删出文件就没有权限了:
也就是说目录给了other w 权限后还可以再加上粘滞位 t 防止有人乱搞。
到此Linux中的权限全部讲解完了,下节我们将讲解Linux中的工具好让我们把代码写起来。
相关文章:

Linux·权限与工具(上)
1. shell命令以及运行原理 Linux严格意义上来说是一个操作系统,我们称之为 "核心(kernel)" ,但我们一般的用户不呢个直接使用到核心,因为不会用。所以开发者在核心外面封装了一层 "外壳(shell)" 程序,来与核心…...

成为CMake砖家(2): macOS创建CMake本地文档的app
大家好,我是白鱼。 使用 CMake 的小伙伴, 有的是在 Windows 上, 还有的是在 macOS 上。之前咱们讲了 windows 上查看 cmake 本地 html 文档的方式, 这篇讲讲 macOS 上查看 cmake 本地 html 文档的方法。 1. 问题描述 当使用 CMa…...

基于opencv的图片加水印实现方案
加水印应该是个很常见的需求,但是网上找的代码,都感觉不太完善。记录下自己搞出来的一个方案 水印有几个需求: 中文文字水印文字倾斜满图都是,而不是只有一个地方水印文字所在之处完全展示水印 实现思路 准备水印图 我是这么…...

STM32 IAP 需要关注的一些事
1、首先要知道STM32的程序是如何分布在FLASH中的。 2、升级的时候涉及到两个程序,一个是bootloader,一个是user程序,这两个程序的功能分别的什么作用的? 3、编译的固件是怎么分布的?通过那个配置文件去指导编译器去排布…...

高并发服务器-使用多进程(Multi-Process)实现【C语言】
在上期的socket套接字的使用详解中(socket套接字的使用详解)最后实现的TCP服务器只能处理一个客户端的请求发送,当有其他客户端请求连接时会被阻塞。为了能同时处理多个客户端的连接请求,本期使用多进程的方式来解决。 解决方案步…...

线程控制
对线程的控制思路和进程相似,创建、等待、终止,只需要调用接口就行。但是在Linux下没有线程的概念,因为Linux的设计者认为,线程是一种轻量级的进程,毕竟创建线程只需要创建PCB。因此Linux中使用多线程必须使用第三方pt…...

Spring Data Jpa 原生SQL联表查询返回自定义DTO
Spring Data Jpa 原生SQL联表查询返回自定义DTO 方案一:返回Map 这个就不说了 方案二:实体定义成接口的形式 该方式最直观!!推荐!!! 注意:XxxDto是interface接口,而…...

Hadoop3:HDFS存储优化之小文件归档
一、情景说明 我们知道,NameNode存储一个文件元数据,默认是150byte大小的内存空间。 那么,如果出现很多的小文件,就会导致NameNode的内存占用。 但注意,存储小文件所需要的磁盘容量和数据块的大小无关。 例如&#x…...

Golang | Leetcode Golang题解之第234题回文链表
题目: 题解: func reverseList(head *ListNode) *ListNode {var prev, cur *ListNode nil, headfor cur ! nil {nextTmp : cur.Nextcur.Next prevprev curcur nextTmp}return prev }func endOfFirstHalf(head *ListNode) *ListNode {fast : headslo…...

Unity Apple Vision Pro 开发(四):体积相机 Volume Camera
文章目录 📕教程说明📕教程内容概括📕体积相机作用📕创建体积相机📕添加体积相机配置文件📕体积相机配置文件参数📕体积相机的边界盒大小📕体积相机边界盒大小和应用边界盒大小的区别…...

C语言 | Leetcode C语言题解之第231题2的幂
题目: 题解: const int BIG 1 << 30;bool isPowerOfTwo(int n) {return n > 0 && BIG % n 0; }...

GitHub备份代码的学习笔记
1. 备份工具:GitHub CLI 2. 认证方式 2.1 公用云服务器:SSH 可以通过使用GitHub CLI(命令行界面)在本地创建一个新的GitHub仓库,并直接使用本地项目代码文件夹的名称作为仓库名称,无需手动输入相同的名称。这可以通过以下步骤实现: 首先,确保您已安装…...

微信小程序与本地MySQL数据库通信
微信小程序与本地MySQL数据库通信 因为本地MySQL服务器没有域名,也没有进行相应的请求操作封装,因此微信小程序没办法和数据库通信。 但是对于开发人员来说,没有数据库,那还能干撒?虽然我尝试过用json-server&#x…...

Flutter热更新技术探索
一,需求背景: APP 发布到市场后,难免会遇到严重的 BUG 阻碍用户使用,因此有在不发布新版本 APP 的情况下使用热更新技术立即修复 BUG 需求。原生 APP(例如:Android & IOS)的热更新需求已经…...

【机器学习-00】机器学习是什么?
在科技飞速发展的今天,机器学习已成为一个热门话题,广泛应用于各个行业和领域。那么,机器学习到底是什么?它又是如何工作的?本文将深入探讨机器学习的定义、原理及其在各领域的应用,带领读者走进这个神秘而…...

【BUG】已解决:WslRegisterDistribution failed with error: 0x800701bc
已解决:WslRegisterDistribution failed with error: 0x800701bc 欢迎来到英杰社区https://bbs.csdn.net/topics/617804998 欢迎来到我的主页,我是博主英杰,211科班出身,就职于医疗科技公司,热衷分享知识,武…...

无人机监测的必要性及方法
为什么需要无人机探测? 无人机的快速发展和广泛使用为各个行业带来了巨大好处,包括送货服务、农业和监控。然而,这种扩散也导致滥用现象增多,造成非法入侵空域、侵犯隐私和安全威胁。监控和探测在特定空域盘旋的无人机的能力变得…...

PHP框架详解:Symfony框架
Symfony是一个功能强大且高度灵活的PHP框架,广泛应用于企业级项目和复杂的Web应用开发。本文将详细介绍Symfony框架的主要特性,并通过实例展示其强大功能。 1. 什么是Symfony? Symfony是一个基于MVC(模型-视图-控制器࿰…...

在 Navicat BI 创建自定义字段:类型更改字段
早在 Navicat 17 的预览版中,我们就已经介绍了一些新的商业智能(BI)功能,即图表互动和计算字段。需要说明的是,计算字段不是 Navicat BI 中唯一可用的自定义字段类型。事实上,有五种:类型改变、…...

llama-index,uncharted and llama2:7b run locally to generate Index
题意:本地运行 llama-index、uncharted 以及 llama2:7b 来生成索引 问题背景: I wanted to use llama-index locally with ollama and llama3:8b to index utf-8 json file. I dont have a gpu. I use uncharted to convert docs into json. Now If it …...

vue、js截取视频任意一帧图片
html有本地上传替换部分,可以不看 原理:通过video标签对视频进行加载,随后使用canvas对截取的视频帧生成需要的图片 <template> <el-row :gutter"18" class"preview-video"><h4>视频预览<span&…...

STM32智能家居系统教程
目录 引言环境准备智能家居系统基础代码实现:实现智能家居系统 4.1 数据采集模块 4.2 数据处理与控制模块 4.3 通信与网络系统实现 4.4 用户界面与数据可视化应用场景:家居智能化管理问题解决方案与优化收尾与总结 1. 引言 智能家居系统通过STM32嵌入…...

uniapp 开发 App 对接官方更新功能
插件地址:升级中心 uni-upgrade-center - App - DCloud 插件市场 首先创建一个 uni-admin 项目,选择你要部署的云开发服务商: 然后会自动下载模板,部署云数据库、云函数 第二步:将新创建的 uni-admin 项目托管到…...

【PostgreSQL】PostgreSQL 教程
博主介绍:✌全网粉丝20W,CSDN博客专家、Java领域优质创作者,掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java技术领域✌ 技术范围:SpringBoot、SpringCloud、Vue、SSM、HTML、Nodejs、Python、MySQL、PostgreSQL、大数据、物…...

Qt类 | QLabel类详解
文章目录 一、QLabel类介绍二、Properties(属性)三、Public Functions(公共函数)1.构造函数2.alignment与setAlignment函数 -- 标签内容的对齐方式3.buddy与setBuddy函数 -- QLabel关联的伙伴控件4.hasScaledContents与setScaledC…...

深入剖析 Android 开源库 EventBus 的源码详解
文章目录 前言一、EventBus 简介EventBus 三要素EventBus 线程模型 二、EventBus 使用1.添加依赖2.EventBus 基本使用2.1 定义事件类2.2 注册 EventBus2.3 EventBus 发起通知 三、EventBus 源码详解1.Subscribe 注解2.注册事件订阅方法2.1 EventBus 实例2.2 EventBus 注册2.2.1…...

End-to-End Object Detection with Transformers【目标检测-方法详细解读】
摘要 我们提出了一种新的方法,将目标检测视为一个直接的集合预测问题。我们的方法简化了检测流程,有效地消除了许多手工设计的组件,如非极大值抑制程序或锚生成,这些组件显式编码了我们关于任务的先验知识。新框架的主要成分,称为DEtection TRansformer或DETR,是一个基于…...

CSS3实现提示工具的渐入渐出效果及CSS3动画简介
上一篇文章用CSS3实现了一个提示工具,本文介绍如何利用CSS3实现提示工具以渐入的方式呈现,以渐出的方式消失。 CSS3主要可以通过两个样式来实现动画效果:animation和transition。 其中,animation需要自己定义一组关键帧从而实现…...

JVM 垃圾回收算法
一、如何确定为垃圾 引用计数法 在对象中添加一个引用计数器,每当有一个地方引用它时,计数器值就加一;当引用失效时,计数器值就减一,当引用为0,则认为对象可被回收。引用计数不能解决循环引用的问题 根可…...

吴恩达大模型系列课程《Prompt Compression and Query Optimization》中文学习打开方式
Prompt Compression and Query Optimization GPT-4o详细中文注释的Colab观看视频1 浏览器下载插件2 打开官方视频 GPT-4o详细中文注释的Colab 中文注释链接:https://github.com/Czi24/Awesome-MLLM-LLM-Colab/tree/master/Courses/Prompt-Compression-and-Query-Op…...