C++系统编程篇——Linux初识(系统安装、权限管理,权限设置)
(1)linux系统的安装
- 双系统---不推荐
- 虚拟机+centos镜像(可以使用)
- 云服务器/轻量级云服务器(强烈推荐)
①云服务器(用xshell连接)
ssh root@公网IP 然后输入password
①添加用户:
· adduser user_111
· passwd user_111
②用户登录:
· ssh user@公网IP password
③修改用户:
· userdel -r user_111
②虚拟机
(2)Linux应用场景及版本
1.企业后台最常用----服务器(centos居多,Ubuntu)
2.手机--安卓手机/平板--Linux
3.嵌入式领域
4.智能家居领域,汽车领域
商业化版本:
技术版本:主版本号.次版本号.修正次数(偶数:稳定版本,奇数:开发版本)
(3)操作系统是什么?为什么要有操作系统?
操作系统是一款进行软件资源管理的软件,Linux是一款具体的擦偶做系统的品类,centos7是一款具体的linux操作系统
1.对下提供基本的管理工作,让各种硬件工作在一个稳定的、高效的、安全的状态当中(手段)
2.对上要提供一个高效的、稳定的安全运行环境里(用户的,目的)
(4)指令
1.基础指令
命令 | 功能 |
pwd | 查看当前文件所在位置 |
ls | 罗列出当前路径下的文件名 |
cd | 进入指定的文件夹 |
cd - | 跳转到最近一次所处的路径下 |
cd ~ | 进入用户家目录 |
clear- | 清屏 |
touch file.txt | 用于修改文件的访问时间和修改时间,或者创建新的空文件,在当前目录下,快速创建一个新的普通文件 |
whoami | 查看当前正在使用的人是谁 |
which | 要求系统打印出我所指定的命令名称在系统所在的路径 |
alias | 给其他命令起一个别名(别名只在当前会话中有效) (创建一个名为 ll 的别名,将其映射为 ls -l 命令:alias ll='ls -l') |
tree | 以树的形式显示目录结构 (tree example) |
(sudo) yum -y install tree | 安装 |
madir | 在当前路径下,创建一个新的文件夹 |
rmdir | 删除空目录 |
rm | 删除文件或目录 |
man | Linux帮助手册 |
cp | 在不同的位置创建文件的副本 (创建一个名为 "file2.txt" 的副本,其内容与 "file1.txt" 相同:cp file1.txt file2.txt) |
mv | 移动文件或目录的,也可以用来重命名文件或目录 (将文件 "file1.txt" 移动到指定目录中:mv file1.txt /path/to/directory/) (将文件重命名为 "newname.txt":mv oldname.txt newname.txt) |
cat tac是逆向输出查看 | 查看较小的文件,会将整个文件的内容一次性输出到屏幕上 |
more | more 命令比较适合查看大文件,是分页器,它会将文件内容逐页显示在终端上,并在显示完一页后停止,等待用户按键继续查看下一页。 |
less | 允许用户在文件的内容中进行前后翻页、搜索、跳转等操作,并且在查看文件时,不会像 more 那样一次性加载整个文件内容(推荐) |
head | 显示开头或结尾某个数量的文字区块 (查看开头二十行:head -20 big.txt 默认10行) |
tail | 显示指定文件末尾内容(查看结尾二十行:tail -20 big.txt 默认10行) |
| 级联多条指令 (查看文件中间内容(8790~8800行):head -8800 big.txt | tail -10) |
wc | 统计文本行数 |
date | 指定格式显示时间: date +%Y:%m:%d %H : 小时(00..23) %M : 分钟(00..59) %S : 秒(00..61) %X : 相当于 %H:%M:%S %d : 日 (01..31) %m : 月份 (01..12) %Y : 完整年份 (0000..9999) %F : 相当于 %Y-%m-%d |
cal | 显示公历(阳历)日历
(显示2018年的日历:Cal –y 2018) |
find | find命令在目录结构中搜索文件 |
grep | 在文件中搜索字符串,将找到的行打印出来 |
zip/unzip | 将目录或文件压缩成zip格式 -r 递归处理,将指定目录下的所有文件和子目录一并处理 |
tar | |
sz/rz | 把云服务器上的文件传输到本地/本地文件上传到云服务器 |
scp | scp xxx.tgz root(用户名)@IP:/root(拷贝到对方的位置) |
bc | 浮点运算 |
uname –r | 来获取电脑和操作系统的相关信息 |
[Tab]按键 | 『命令补全』和『档案补齐』的功能 |
[Ctrl]-c按键 | 让当前的程序『停掉』 |
[Ctrl]-d按键 | 『键盘输入结束(End Of File, EOF 戒 End OfInput)』的意思;另外,他也可 以用来取代exit |
shutdown | 关机 |
2.详细的谈论课件中的所有的指令 -- 附加Linux周边的配套知识
① 文件 = 文件属性 + 文件内容
② 在linux中, .
开头的文件是隐藏项目
- 在任何目录下,都会默认具有两个隐藏目录,
.
和..
. ->
用它来表示当前路径.. ->
用它来表示上级目录
③家目录
任何一个用户,首次登录所处路径都是自己的家目录
家目录:root---超级管理员账户--- /root
XXX用户 --- 普通用户 --- /home/XXX
④ 重定向
输出重定向:
echo
(把本来应该显示在显示器上的数据,显示在文件中):
- echo “hello”>file
- 创建一个空文件:>file
- 清空一个文件:>file
追加重定向:
- 从结尾处写入(不会清空):
echo “hello”>>file
(两个>)
输入重定向:
cat < code.c
(从文件code.c中读取并重定向到显示器中)
构建一个大文件的方法
i=1;while [ $i -le 10000 ]; do echo "hello Linux $i"; let i++; done > big.txt
当 i < 10000 时,往文件big.txt中写入i = 1,并执行 i++(注意空格)
(5)shell命令以及运行原理
Linux严格意义上说的是一个操作系统,我们称之为“核心(kernel)“ ,但我们一般用户,不能直接使用kernel,而是通过kernel的“外壳”程序,也就是所谓的shell,来与kernel沟通。
如何理解?为什么不能直接使用kernel?
从技术角度,Shell的最简单定义:命令行解释器(command Interpreter)
主要包含: 将使用者的命令翻译给核心(kernel)处理。 同时,将核心的处理结果翻译给使用者。
对比windows GUI,我们操作windows 不是直接操作windows内核,而是通过图形接口,点击,从而完成我们的 操作(比如进入D盘的操作,我们通常是双击D盘盘符.或者运行起来一个应用程序)
shell 对于Linux,有相同的作用,主要是对我们的指令进行解析,解析指令给Linux内核。反馈结果在通过内核运行出结果,通过shell解析给用户。
(6)Linux权限的概念
Linux下有两种用户:超级用户(root)、普通用户。
- 超级用户:可以再linux系统下做任何事情,不受限制
- 普通用户:在linux下做有限的事情。 超级用户的命令提示符是“#”,普通用户的命令提示符是“$”。
用户切换:
- 从root用户切换到普通用户user,则使用
su user
- 从普通用户user切换到root用户则使用
su root
(root可以省略),此时系统会提示输入root用户的口令。
(7)Linux权限管理
①文件访问者的分类(人)
u---User 文件和文件目录的所有者
g---Group 文件和文件目录的所有者所在的组的用户
o---Others 其它用户
②文件类型和访问权限(事物属性)
a) 文件类型
- | 普通文件 |
d | 文件夹 |
i | 软链接(类似Windows的快捷方式) |
b | 块设备文件(例如硬盘、光驱等) |
p | 管道文件 |
c | 字符设备文件(例如屏幕等串口设备) |
s | 套接口文件 |
b) 基本权限
读(r/4) | Read对文件而言,具有读取文件内容的权限 对目录来说,具有浏览该目录信息的权限 |
写(w/2) | Write对文件而言,具有修改文件内容的权限 对目录来说具有删除移动目录内文件的权限 |
执行(x/1) | execute对文件而言,具有执行文件的权限 对目录来说,具有进入目录的权限 iv.“-”表示不具有该项权限 |
③文件权限值的表示方法
a) 字符表示方法
b) 8进制数值表示方法
④文件访问权限的相关设置方法
a) chmod
- 功能:设置文件的访问权限
- 格式:chmod [参数] 权限文件名
- 常用选项:R -> 递归修改目录文件的权限
- 说明:只有文件的拥有者和root才可以改变文件的权限
chmod命令权限值的格式
①用户表示符+/-=权限字符
例: chmod u+w /home/abc.txt
chmod o-x /home/abc.txt
chmod a=x /home/abc.txt
+ | 向权限范围增加权限代号所表示的权限 |
- | 向权限范围取消权限代号所表示的权限 |
= | 向权限范围赋予权限代号所表示的权限 |
用户符号 | u:拥有者 |
g:拥有者同组用 | |
o:其它用户 | |
a:所有用户 |
②三位8进制数字
例: chmod 664 /home/abc.txt
chmod 640 /home/abc.txt
b) chown
- 功能:修改文件的拥有者
- 格式:chown [参数] 用户名文件名
- 实例:
- chown user1 f1
- chown -R user1 filegroup1
c) chgrp
- 功能:修改文件或目录的所属组
- 格式:chgrp [参数] 用户组名文件名
- 常用选项:-R 递归修改文件或目录的所属组
- 实例:
- chgrp users /abc/f2
d) umask
- 功能:
- 查看或修改文件掩码
- 新建文件夹默认权限=0666
- 新建目录默认权限=0777
- 但实际上你所创建的文件和目录,看到的权限往往不是上面这个值。原因就是创建文件或目录的时候还要受到 umask的影响。假设默认权限是mask,则实际创建的出来的文件权限是: mask & ~umask
- 格式:umask 权限值
- 说明:将现有的存取权限减去权限掩码后,即可产生建立文件时预设权限。超级用户默认掩码值为0022,普通用 户默认为0002。
- 实例
- umask 755
- umask //查看
- umask 044//设置
(8)file指令
- 功能说明:辨识文件类型。
- 语法:file [选项] 文件或目录...
- 常用选项:
-c 详细显示指令执行过程,便于排错或分析程序执行的情形。
-z 尝试去解读压缩文件的内容。
- 使用 sudo分配权限
(1)修改/etc/sudoers 文件分配文件
chmod 740 /etc/sudoers
vi /etc/sudoer
格式:接受权限的用户登陆的主机 =(执行命令的用户)命令
(2)使用 sudo 调用授权的命令
格式:$ sudo –u 用户名命令
实例:$sudo -u root /usr/sbin/useradd u2
(9)目录的权限(粘滞位)
可执行权限(x) | 如果目录没有可执行权限, 则无法cd到目录中 |
可读权限(r) | 如果目录没有可读权限, 则无法用ls等命令查看目录中的文件内容 |
可写权限(w) | 如果目录没有可写权限, 则无法在目录中创建文件, 也无法在目录中删除文件 |
换句话来讲, 就是只要用户具有目录的写权限, 用户就可以删除目录中的文件, 而不论这个用户是否有这个文件的写权限. 这好像不太科学啊, 我张三创建的一个文件, 凭什么被你李四可以删掉? 我们用下面的过程印证一下.
[root@localhost ~]# chmod 0777 /home/
[root@localhost ~]# ls /home/ -ld
drwxrwxrwx. 3 root root 4096 9月 19 15:58 /home/
[root@localhost ~]# touch /home/root.c
[root@localhost ~]# ls -l /home/
总用量 4
-rw-r--r--. 1 root root 0 9月 19 15:58 abc.c
drwxr-xr-x. 27 litao litao 4096 9月 19 15:53 litao
-rw-r--r--. 1 root root 0 9月 19 15:59 root.c[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/root.c #litao可以删除root创建的文件
rm:是否删除有写保护的普通空文件 "/home/root.c"?y[litao@localhost ~]$ exit
logout
为了解决这个不科学的问题, Linux引入了粘滞位的概念
[root@localhost ~]# chmod +t /home/ # 加上粘滞位
[root@localhost ~]# ls -ld /home/
drwxrwxrwt. 3 root root 4096 9月 19 16:00 /home/
[root@localhost ~]# su - litao
[litao@localhost ~]$ rm /home/abc.c #litao不能删除别人的文件
rm:是否删除有写保护的普通空文件 "/home/abc.c"?y
rm: 无法删除"/home/abc.c": 不允许的操作
当一个目录被设置为"粘滞位"(用chmod +t),则该目录下的文件只能由
- 超级管理员删除
- 该目录的所有者删除
- 该文件的所有者删除
(10)关于权限的总结
- 目录的可执行权限是表示你可否在目录下执行命令。
- 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
- 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
- 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。
相关文章:

C++系统编程篇——Linux初识(系统安装、权限管理,权限设置)
(1)linux系统的安装 双系统---不推荐虚拟机centos镜像(可以使用)云服务器/轻量级云服务器(强烈推荐) ①云服务器(用xshell连接) ssh root公网IP 然后输入password ①添加用户: addus…...

No Cortex-M SW Device Found
将DIO和CLK管脚调换一下...

提升写作效率的秘密武器:一个资深编辑的AI写作体验
有句话说:“写作是一项你坐在打字机前流血的工作。”而如今,各类生成式软件的涌现似乎打破了写作这一古老的艺术形式壁垒。过去,作家们独自在书桌前冥思苦想,如今,一款名为“玲珑AI工具”的ai写作助手正悄然改变着文案写作行业的创作生态,成为提升写作效率的秘密武器。 在传统…...

Python sort() 和 sorted() 的区别应用实例详解
大家好,今天针对 Python 中 sort() 和 sorted() 之间的区别,来一个实例详细解读。sort — 顾名思义就是排序的意思,它可以接收的对象为可迭代的数据类型。今天以列表为例子演示两者的不同点、相同点,以及其中一些常用的高级参数使…...

七、Redis三种高级数据结构-HyperLogLog
Redis HyperLogLog是用来做基数统计的算法,HyperLogLog在优点是,在输入的元素的数量或者体积非常大时,计算基数占用的空间总是固定的、并且非常小。在Redis里每个HyperLogLog键只需花费12KB内存,就可以计算接近 264 个元素的基数。…...

2024年【金属非金属矿山(露天矿山)安全管理人员】模拟考试题库及金属非金属矿山(露天矿山)安全管理人员作业模拟考试
题库来源:安全生产模拟考试一点通公众号小程序 金属非金属矿山(露天矿山)安全管理人员模拟考试题库参考答案及金属非金属矿山(露天矿山)安全管理人员考试试题解析是安全生产模拟考试一点通题库老师及金属非金属矿山&a…...

网站DDoS攻击应对策略:全面防护与恢复指南
随着互联网的发展,网络安全问题日益凸显,其中DDoS(分布式拒绝服务)攻击成为了网站安全的主要威胁之一。当网站遭受DDoS攻击时,可能会面临服务中断、性能下降、数据泄露等严重后果。因此,了解并掌握DDoS攻击…...

线性/非线性最小二乘 与 牛顿/高斯牛顿/LM 原理及算法
最小二乘分为线性最小二乘和非线性最小二乘 最小二乘目标函数都是min ||f(x)||2 若f(x) ax b,就是线性最小二乘;若f(x) ax2 b / ax2 bx 之类的,就是非线性最小二乘; 1. 求解线性最小二乘 【参考】 2. 求解非线性最小二乘…...
mysqldump: Error 2013 导致mysql停止运行
https://www.cnblogs.com/DataArt/p/10173957.html 1 查询表大小 SELECT table_name AS "表名", round(((data_length index_length) / 1024 / 1024), 2) AS "大小(MB)" FROM information_schema.tables WHERE table_schema your_database_name AND …...

2023年数维杯国际大学生数学建模挑战赛D题洗衣房清洁计算解题全过程论文及程序
2023年数维杯国际大学生数学建模挑战赛 D题 洗衣房清洁计算 原题再现: 洗衣房清洁是人们每天都要做的事情。洗衣粉的去污作用来源于一些表面活性剂。它们可以增加水的渗透性,并利用分子间静电排斥机制去除污垢颗粒。由于表面活性剂分子的存在ÿ…...

python 两种colorbar 最大最小和分类的绘制
1 colorbar 按照自定义的最值绘制 归一化方法使用Normalize(vmin0, vmax40.0) import numpy as np import matplotlib as mpl import matplotlib.pyplot as plt import matplotlib.cm as cm import matplotlib.colors as mcolors from matplotlib import rcParams from matplot…...

Linux-基础IO
🌎Linux基础IO 文章目录: Linux基础IO C语言中IO交互 常用C接口 fopen fputs fwrite fgets 当前路径 三个文件流 系统文件IO open函数 …...
202006青少年软件编程(Python)等级考试试卷(二级)
第 1 题 【单选题】 以下程序的运行结果是?( ) l ["兰溪","金华","武义","永康","磐安","东阳","义乌","浦江"]for s in l:if"义"in s:print(…...
【LeetCode】每日一题:2244.完成所有任务需要的最少轮数
给你一个下标从 0 开始的整数数组 tasks ,其中 tasks[i] 表示任务的难度级别。在每一轮中,你可以完成 2 个或者 3 个 相同难度级别 的任务。 返回完成所有任务需要的 最少 轮数,如果无法完成所有任务,返回 -1 。 英文原题…...

百度文心一言 java 支持流式输出,Springboot+ sse的demo
参考:GitHub - mmciel/wenxin-api-java: 百度文心一言Java库,支持问答和对话,支持流式输出和同步输出。提供SpringBoot调用样例。提供拓展能力。 1、依赖 <dependency> <groupId>com.baidu.aip</groupId> <artifactId…...

59.基于SSM实现的网上花店系统(项目 + 论文)
项目介绍 本站是一个B/S模式系统,网上花店是在MySQL中建立数据表保存信息,运用SSMVue框架和Java语言编写。并按照软件设计开发流程进行设计实现充分保证系统的稳定性。系统具有界面清晰、操作简单,功能齐全的特点,使得基于SSM的网…...
什么是字节码?
字节码(Bytecode)是Java虚拟机(JVM)能够理解和执行的中间代码。Java源代码首先编译成字节码文件(扩展名为 .class),而不是直接编译成特定机器的机器码。字节码具有以下特点: 平台无…...
C++ JWT的使用
接入sdk需要使用JWT加密参数,做个记录以备后查 #include <iostream> #include <jwt-cpp/jwt.h> int main() { // 设置JWT的密钥(对于HS256) std::string secret_key "your-256-bit-secret"; // 创建一个新的JW…...

SpringBoot内置插件的使用(jackson和lombok)
文章目录 引言I lombok(自动为属性生成构造器)II jacksonsee also引言 idea正式版2021.2.2 已经捆绑安装jackson和lombok插件 I lombok(自动为属性生成构造器) Lombok能通过注解的方式,在编译时自动为属性生成构造器、getter/setter、equals、hashcode、toString方法。 htt…...

Franz Electron + React 源码启动运行填坑指南
环境要求 安装miniconda python 环境electron/rebuild用得着,miniconda 默认自带的 python 是 3.11 版本,比较新; 安装virsual studio 2019 要把C桌面相关的都安装了,大概需要20G,不要安装到 C 盘,都安装到…...
Vue记事本应用实现教程
文章目录 1. 项目介绍2. 开发环境准备3. 设计应用界面4. 创建Vue实例和数据模型5. 实现记事本功能5.1 添加新记事项5.2 删除记事项5.3 清空所有记事 6. 添加样式7. 功能扩展:显示创建时间8. 功能扩展:记事项搜索9. 完整代码10. Vue知识点解析10.1 数据绑…...
树莓派超全系列教程文档--(62)使用rpicam-app通过网络流式传输视频
使用rpicam-app通过网络流式传输视频 使用 rpicam-app 通过网络流式传输视频UDPTCPRTSPlibavGStreamerRTPlibcamerasrc GStreamer 元素 文章来源: http://raspberry.dns8844.cn/documentation 原文网址 使用 rpicam-app 通过网络流式传输视频 本节介绍来自 rpica…...

【人工智能】神经网络的优化器optimizer(二):Adagrad自适应学习率优化器
一.自适应梯度算法Adagrad概述 Adagrad(Adaptive Gradient Algorithm)是一种自适应学习率的优化算法,由Duchi等人在2011年提出。其核心思想是针对不同参数自动调整学习率,适合处理稀疏数据和不同参数梯度差异较大的场景。Adagrad通…...

MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...

遍历 Map 类型集合的方法汇总
1 方法一 先用方法 keySet() 获取集合中的所有键。再通过 gey(key) 方法用对应键获取值 import java.util.HashMap; import java.util.Set;public class Test {public static void main(String[] args) {HashMap hashMap new HashMap();hashMap.put("语文",99);has…...

从深圳崛起的“机器之眼”:赴港乐动机器人的万亿赛道赶考路
进入2025年以来,尽管围绕人形机器人、具身智能等机器人赛道的质疑声不断,但全球市场热度依然高涨,入局者持续增加。 以国内市场为例,天眼查专业版数据显示,截至5月底,我国现存在业、存续状态的机器人相关企…...
Rust 异步编程
Rust 异步编程 引言 Rust 是一种系统编程语言,以其高性能、安全性以及零成本抽象而著称。在多核处理器成为主流的今天,异步编程成为了一种提高应用性能、优化资源利用的有效手段。本文将深入探讨 Rust 异步编程的核心概念、常用库以及最佳实践。 异步编程基础 什么是异步…...
Java入门学习详细版(一)
大家好,Java 学习是一个系统学习的过程,核心原则就是“理论 实践 坚持”,并且需循序渐进,不可过于着急,本篇文章推出的这份详细入门学习资料将带大家从零基础开始,逐步掌握 Java 的核心概念和编程技能。 …...

云原生玩法三问:构建自定义开发环境
云原生玩法三问:构建自定义开发环境 引言 临时运维一个古董项目,无文档,无环境,无交接人,俗称三无。 运行设备的环境老,本地环境版本高,ssh不过去。正好最近对 腾讯出品的云原生 cnb 感兴趣&…...

GitFlow 工作模式(详解)
今天再学项目的过程中遇到使用gitflow模式管理代码,因此进行学习并且发布关于gitflow的一些思考 Git与GitFlow模式 我们在写代码的时候通常会进行网上保存,无论是github还是gittee,都是一种基于git去保存代码的形式,这样保存代码…...