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 盘,都安装到…...

网络安全法中关于网络信息的保护和监管,有哪些规定?
网络安全法作为我们数字时代的重要法律保障,对于网络信息的保护和监管有着明确且详细的规定。这些规定不仅体现了国家对于网络安全的重视,也为我们每个人在数字世界中提供了坚实的法律屏障。 首先,我们来看一个关于网络运营者主体责任的案例。…...

前端XHR请求数据
axios封装了XHR(XMLHttpRequest) 效果 项目结构 Jakarta EE9,Web项目。 无额外的maven依赖 1、Web页面 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title&…...

利用香港多IP服务器优化网站访问速度的关键策略?
利用香港多IP服务器优化网站访问速度的关键策略? 随着数字化时代的不断发展,网站的全球访问速度成为企业吸引用户、提升竞争力的重要因素。特别对于跨国企业而言,如何确保全球用户都能享受到稳定快速的访问体验显得尤为重要。在这一背景下,…...

如何快速将视频做成二维码?扫描二维码播放视频的制作方法
视频二维码的用途越来越多,比如常见的有产品展示、企业宣传、教程说明、个人展示等都可以生成二维码,通过扫码在手机或者其他设备上预览内容,从而提升其他人获取视频的速度,实现内容的快速分享。 对于有制作视频二维码需求的小伙…...

使用python开发的闭运算调试器
使用python开发的开运算调试器 简介效果代码 简介 用来调试闭运算效果的小工具,滑动条可以控制滤波核的大小,用来查看不同滤波核下的闭运算效果。 效果 代码 import sys from PyQt5.QtWidgets import QApplication, QWidget, QVBoxLayout, QHBoxLayou…...

一例Phorpiex僵尸网络变种的分析
概述 这是一例Phorpiex僵尸网络变种,通过NSIS打包,加载恶意dll(Flaminius.dll),读取dat文件(Preoral.dat),在内存解密并解压缩出一个Pe,创建同名傀儡进程并注入。通过可移动存储介质传播&#…...

PDF文件转换为CAD的方法
有时候我们收到一个PDF格式的设计图纸,但还需要进行编辑或修改时,就必须先将PDF文件转换回CAD格式。分享两个将PDF转换回CAD的方法,一个用到在线网站,一个用到PC软件,大家根据情况选择就可以了。 ☞在线CAD网站转换 …...

Java为什么会成为现在主流的编程语言
Java为什么会成为现在的主流语言 前言一、Java语言概述Java是什么为什么大多数人会选择从事Java为什么从事Java的工作者数量从年递减 二、Java语言的特点简单性面向对象分布式(微服务)健壮性安全性体系结构中立可移植性解释型高性能多线程动态性 三、Jav…...

动手学深度学习16 Pytorch神经网络基础
动手学深度学习16 Pytorch神经网络基础 1. 模型构造2. 参数管理1. state_dict()2. normal_() zeros_()3. xavier初始化共享参数的好处 3. 自定义层4. 读写文件net.eval() 评估模式 QA 1. 模型构造 定义隐藏层–模型结构定义前向函数–模型结构的调用 import torch from torch…...

前端无样式id或者class等来定位标签
目录: 1、使用背景2、代码处理 1、使用背景 客户使用我们产品组件,发现替换文件,每次替换都会新增如下的样式,造就样式错乱,是组件的文件,目前临时处理的话就是替换文件时删除新增的样式,但是发…...