Linux权限理解及环境基础开发工具使用

news2024/10/17 6:25:15

前言

Linux中有两种用户,一种是root用户,另一种是普通用户,二者的权限不一样,即能做的事情不一样。下面我们来细讲一下这些不同。

root用户能在Linux系统下做任何事情,而普通用户只能做有限的事情。

root用户的命令提示符是“#”,而普通用户的命令提示符是“¥”。

1. 如何切换用户呢?

su命令可以用来切换用户。

su root//切换到root用户
su zzj//切换到zzj用户

当从root切换到普通用户时,直接就可以切换,但如果从普通用户切换到root用户,则需要输入root的密码。

2. 权限管理

2.1 文件访问者分类

文件访问者分为三类:

1. 文件和目录的所有者:u--user

2. 文件和目录所有者所在组的用户:g--group

3. 其他用户:o-other

2.2 文件类型和访问权限

从左到右分别是:文件类型,权限,连接数,所有者,所有组,文件大小(kb),最新修改时间,文件名。

2.2.1 文件类型:

d:文件夹

-:普通文件

l:软文件

c:字符设备文件,如屏幕,键盘等

p:管道文件

s(socket):套接口文件

b(block):块设备文件,如硬盘,光驱等

2.2.2 基本权限

读权限:r。对于文件:具有读取文件内容的权限。对于目录:具有浏览该目录信息的权限

写权限:w。对于文件:具有具有修改文件内容的权限,如删除等。对于目录:具有删除移动目录内文件的权限

执行权限:x。对于文件:具有执行文件的权限。对于目录:具有进入目录的权限。

权限不仅可以用rwx表示,还可以用八进制的数字来表示:

rwx:7      rw-:6     r-x:5等。

2.3 文件权限修改

chmod:文件权限修改

2.3.1 命令权限制修改

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

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

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

用户符号:   u:拥有者 g:拥有者同组用 o:其它用户 a:所有用户

使用实例:

chmod a+rwx zzj.txt

将所有成员都加上全部权限。

2.3.2 八进制修改

chmod 777 zzj.txt

将所有成员都加上全部权限

2.3.3 修改文件拥有者

chown:修改文件拥有者

chown zzj zzj.txt

将zzj.txt的文件拥有者变为zzj。

注意:一般将文件的所有者改变需要在root用户下进行。

2.3.4 修改文件所属组

chgrp:修改文件所属组

chgrp zzj_1 test.txt

将所有组变为zzj_1。

2.3.5  umask

用于修改或查看文件掩码

新建目录时的默认权限为0777

新建文件夹的默认权限为0666

但是实际新建时,看到的权限不是这样,因为权限还收到文件掩码的影响,实际权限为:创建权限&~umask。

说明:root用户的默认掩码值为0022,普通用户的默认掩码值为0002.

2.3.5  粘滞位

其他用户想进入别人的用户目录下是根本进不去的,因此如果需要多人一起合作,就需要创建一个共享目录,共享目录中用户有写的权限,那就是可以删除文件,而且还可以删除别人的文件,那是不是有点不科学了?

为了解决这个问题,Linux引入了粘滞位的概念。

粘滞位:在一个目录被设置为粘滞位后,该目录下的文件只有root用户可以删除,以及该文件的所有者能删除。

设置粘滞位:chmod +t 。

other权限中的t就是粘滞位设置成功的表现。

3. Linux软件包yum

3.1 rzsz 

通过rz 和sz命令能实现不同操作系统中的软件的互相传输。

rz:能将Windows系统下的文件传输到Linux下。

sz:将Linux下的文件传输到Windows下。

3.2 使用yum安装软件

yum install -y sl

-y是因为每次安装时都会询问是否安装,-y就直接让系统不询问,直接安装。

sl就是对应的软件名进行替代。

卸载软件也是类似的:

yum remove -y ls

4. Linux开发工具

4.1 编辑器

这里介绍vim编辑器。

vim编辑器有三种模式,分别是命令模式,插入模式和底行模式。

命令模式:控制屏幕光标移动,删除字符/字/行,移动复制某区段以及进入insert模式

插入模式:只有在插入模式下才能进入文字输入,按esc退出到命令模式

底行模式:文件保存或退出

4.1.1 基本操作

在进入vim 的时候,一开始是命令行模式,按i进入插入模式。

命令模式通过shift +;进入底行模式

底行模式下:

w:保存当前文件

q:退出文件

w!:强制保存

q!:强制退出

wq!:强制保存并退出

命令行模式下的操作:

gg:定位到最上面一行

G:定位到末尾行

n +G:定位到任意行

$:定位到光标所在行的行尾

^:定位到光标所在行的行首

w,b:分别按单词进行往后,往前移动光标

h,j,k,l:光标向左,向下(jump),向上(king),向右。

(n)dd:删除(n)行

(n)yy:复制(n)行

(n)p:复制(n)次

(n)x:删除n个文字

(n)r:替换(n)个字符

R:进行替换模式,替换光标处的所有字符

u:撤销操作

Ctrl +r:取消撤销

Ctrl +^:将字符进行大小写转换

4.2 g++/gcc的使用

4.2.1 背景

代码转换为可执行文件前需要经历4个过程,分别是:

1. 预处理(进行宏替换)

头文件展开

 宏替换

 注释消除

 条件编译

gcc -E test.c -o test.i 

2. 编译(生成汇编)

gcc -S test.i -o test.s

3. 汇编(生成机器可执行代码)

gcc -c test.s -o test.o

4. 链接(生成可执行文件)

gcc test.o -o test.c

记忆方法:esc ,iso

4.2.2 库

在链接的时候,需要用到库,这些库在安装软件的时候就一起安装到了文件里面。因此,我们使用#include<stdio.h>的时候,编译器会在库里面去找包含的头文件,因此我们可以使用各种函数。

库一般分为动态库和静态库。

动态库指的是,在编译链接时没有把库文件的代码加入可执行文件中,而是在程序执行时加载库,这样可以节省系统开销。

动态库的一般后缀为“.so”。

gcc在编译时默认使用动态库,如果要使用静态库,需要使用选项 -static。

静态库是指,在编译链接时就把库文件的代码加入可执行文件中,这样会使生成的文件空间比较大,但是在运行时不再需要库文件。

后缀名一般为“.a”。

gcc选项:

-E:只进行预处理

-S:只进行编译

-c:只进行汇编

-o :输出到指定文件

-g:生成调试信息

-static:使用静态库

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

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

相关文章

FPGA采集adc,IP核用法,AD驱动(上半部分)

未完结&#xff0c;明天补全 IP核&#xff1a;集成的一个现有的模块 串口写好后基本不会再修改串口模块内部的一些逻辑&#xff0c;将串口.v文件添加进来&#xff0c;之后通过他的上层的接口去对他进行使用&#xff0c;所以我们打包IP&#xff0c;之后就不用去添加源文件了&a…

Pollard‘s p-1算法

概述 光滑数 (Smooth number)&#xff1a;指可以分解为多个小素数乘积的正整数 当p是N 的因数&#xff0c;并且p−1是光滑数&#xff0c;可以考虑使用Pollards p-1算法来分解N 当p是N的因数&#xff0c;并且p1是光滑数&#xff0c;可以考虑使用Williamss p1算法来分解N 这里…

Java 快速排序算法详解及通用实现模板案例示范

1. 引言 在众多排序算法中&#xff0c;快速排序&#xff08;QuickSort&#xff09; 是一种非常经典且高效的算法。它采用“分治法”的策略&#xff0c;通过递归地将数组分割成更小的部分&#xff0c;从而快速完成排序操作。快速排序的平均时间复杂度为 O(n log n)&#xff0c;…

webpack 学习入门

webpack 1. 简介1.1 webpack 是什么1.2 webpack 五个核心概念1.2.1 入口 - Entry1.2.2 出口 - Output1.2.3 Loader1.2.4 插件 - Plugins1.2.6 模式 - Mode 2. webpack 初体验2.1 初始化配置2.1.1. 准备2.1.2. 写代码2.1.3 编译打包应用 3. webpack 开发环境的基本配置3.1 打包样…

《深度学习》OpenCV EigenFaces算法 人脸识别

目录 一、EigenFaces算法 1、什么是EigenFaces算法 2、原理 3、实现步骤 1&#xff09;数据预处理 2&#xff09;特征提取 3&#xff09;构建模型 4&#xff09;识别 4、优缺点 1&#xff09;优点 2&#xff09;缺点 二、案例实现 1、完整代码 运行结果&#xff…

大学新生编程入门指南:如何选择编程语言与制定学习计划

大学新生编程入门指南&#xff1a;如何选择编程语言与制定学习计划 编程已成为当代大学生的必备技能&#xff0c;尤其是在信息技术高速发展的今天&#xff0c;编程能力不仅能帮助你在课堂学习中脱颖而出&#xff0c;更能为未来职业生涯打下坚实的基础。然而&#xff0c;面对如…

The 48 bit pointer

在 Intel CPU 和 Arm CPU 中&#xff0c;用户空间的指针地址默认都只使用低 48 位&#xff0c;高16 位总是 0。 写一小段代码验证下&#xff1a; #include <stdio.h> #include <memory.h> #include <stdlib.h>void o(long long ptr) {printf("%016p: &…

如何通过CDN优化网站服务器访问速度?

CDN&#xff0c;即内容分发网络&#xff08;Content Delivery Network&#xff09;&#xff0c;在现代互联网中起着重要作用。它可以显著提升网站服务器的访问速度。以下是CDN在加速网站访问方面的主要优势及其工作原理。 1. 全球分布的服务器节点 CDN通过在全球范围内布设多个…

mysql的重置

今天用Navicat16去连接mysql突然就连不上了。一直报错 连接本地mysql时出现2003-Can‘t connect to MySql server on ‘localhost‘(10061)错误。 以为是Navicat过期了。正好Navicat推出了Lite 17免费版本&#xff0c;心想正好可以尝尝鲜&#xff0c;而且还支持连接Redis&#…

C++:Boost的安装和使用

1、Boost简介 Boost的本质就是一个开源C库&#xff0c;它包含多种功能强大的模块&#xff0c;如&#xff1a;字符串文本处理模块、容器、算法、多线程、智能指针、线程池等模块 2、Boost的下载和安装 &#xff08;1&#xff09;Boost下载 官网&#xff1a;http://www.boost…

【JAVA毕业设计】基于Vue和SpringBoot的医院电子病历管理系统

本文项目编号 T 008 &#xff0c;文末自助获取源码 \color{red}{T008&#xff0c;文末自助获取源码} T008&#xff0c;文末自助获取源码 目录 一、系统介绍二、演示录屏三、启动教程四、功能截图五、文案资料5.1 选题背景5.2 国内外研究现状5.3 可行性分析 六、核心代码6.1 医…

股票分析软件设计

设计一个功能齐全的股票分析软件是一个复杂且有挑战性的项目&#xff0c;需要综合运用多种编程技术和金融知识。下面是一个总体设计思路和主要功能模块的概述&#xff1a; 主要功能模块&#xff1a; 1. 用户界面&#xff08;UI/UX&#xff09; - 显示K线图&#xff0c;并允许…

西门子变频器SINAMICS V20选型

SINAMICS V20共有五种外形尺寸可供选择&#xff0c;输出功率覆盖0.12kW-30kW&#xff1a; V20订货号 单相230V&#xff1a; 三相380V&#xff1a;

数据链中常见电磁干扰matlab仿真,对比噪声调频,线性调频,噪声,扫频,灵巧五种干扰模型

目录 1.算法运行效果图预览 2.算法运行软件版本 3.部分核心程序 4.算法理论概述 4.1 噪声调频干扰 4.2 线性调频干扰 4.3 噪声干扰 4.4 扫频干扰 4.5 灵巧干扰 5.算法完整程序工程 1.算法运行效果图预览 (完整程序运行后无水印) 2.算法运行软件版本 matlab2022a 3…

数据结构——单链表的基本操作

前言 介绍 &#x1f343;数据结构专区&#xff1a;数据结构 参考 该部分知识参考于《数据结构&#xff08;C语言版 第2版&#xff09;》29~36页 补充 后序代码中会遇见这个结构体 typedef struct LNode { ... }LNode,*LinkList; 对于这个代码&#xff0c;目的是定义线性表…

【云原生kubernetes系列--coredns篇】

1.corednsd的介绍 官网&#xff1a;https://coredns.io/ CoreDNS是一个灵活、可扩展的 DNS 服务器&#xff0c;可以充当 Kubernetes 集群 DNS。与 Kubernetes 一样&#xff0c;CoreDNS 项目由 CNCF coredns在K8S中的用途,主要是用作服务发现&#xff0c;也就是服务(应用)之间…

Python中 文件操作及与数据库的交互

在数据驱动的时代&#xff0c;Python不仅是一门强大的编程语言&#xff0c;更是与文件系统和数据库交互的重要工具。无论是读取配置文件、处理数据集&#xff0c;还是与数据库进行交互&#xff0c;Python都能轻松胜任。那么&#xff0c;如何高效地进行文件操作&#xff0c;并实…

uniapp 小程序0到1教程

先说明一下&#xff0c;uni-app的文档很乱 一、注册微信小程序 如果你还没有微信公众平台的账号&#xff0c;请先进入微信公众平台首页&#xff0c;点击 “立即注册” 按钮进行注册。注册的账号类型可以是订阅号、服务号、小程序以及企业微信&#xff0c;我们选择 “小程序”…

基本计算器 II

文章目录 题目解析解题小结 题目解析 给你一个字符串表达式 s &#xff0c;请你实现一个基本计算器来计算并返回它的值。 整数除法仅保留整数部分。 你可以假设给定的表达式总是有效的。所有中间结果将在 [-231, 231 - 1] 的范围内。 注意&#xff1a;不允许使用任何将字符…

lazyLoad

//1.通过React的lazy函数配合import()函数动态加载路由组件 > 路由组件代码会被分开打包 const Login lazy(()>import(/pages/Login)) //2.通过<Suspense>指定在加载得到路由打包文件前显示一个自定义loading界面 <Suspense fallback{<h1&…