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

显示公历(阳历)日历

  • -3 显示系统前一个月,当前月,下一个月的月历
  • -j 显示在当年中的第几天(一年日期按天算,从1月1号算起,默认显示当前月在一年中的天数)
  • -y 显示当前年份的日历

(显示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)关于权限的总结

  1. 目录的可执行权限是表示你可否在目录下执行命令。
  2. 如果目录没有-x权限,则无法对目录执行任何命令,甚至无法cd进入目, 即使目录仍然有-r 读权限(这个地方很容易犯错,认为有读权限就可以进入目录读取目录下的文件)
  3. 而如果目录具有-x权限,但没有-r权限,则用户可以执行命令,可以cd进入目录。但由于没有目录的读权限
  4. 所以在目录下,即使可以执行ls命令,但仍然没有权限读出目录下的文档。

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

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

相关文章

软件压力测试怎么做

随着信息技术的迅猛发展&#xff0c;软件在各行各业的应用越来越广泛&#xff0c;其稳定性、可靠性和性能表现也受到了越来越多的关注。在这样的背景下&#xff0c;软件压力测试显得尤为重要。本文将详细介绍软件压力测试的概念、目的、方法以及实施步骤&#xff0c;帮助读者更…

Python自动化SQL注入和数据库取证工具库之sqlmap使用详解

概要 在网络安全领域,SQL注入仍然是最常见的攻击之一。sqlmap是一个开源的自动化SQL注入和数据库取证工具,它提供了广泛的功能来检测和利用SQL注入漏洞。本文将详细介绍sqlmap的安装、特性、基本与高级功能,并结合实际应用场景,展示其在网络安全测试中的应用。 安装 sqlm…

翻译《The Old New Thing》- What does the CS_CLASSDC class style do?

What does the CS_CLASSDC class style do? - The Old New Thing (microsoft.com)https://devblogs.microsoft.com/oldnewthing/20060602-00/?p30993 Raymond Chen 2006年06月02日 CS_CLASSDC 类样式有什么作用&#xff1f; 简要 本文讨论了CS_CLASSDC类样式的问题&#xff…

在深圳如何办理港澳通行证

目录 一、办理费用&签注二、准备材料三、办理流程(一) 线上预约(二) 拍摄照片回执1. 方式一2. 方式二3. 方式三 (三) 现场办理 四、等待拿证五、常见答疑1. 是否需要深圳居住证&#xff1f;2. 其他城市怎么办理&#xff1f;3. 什么是签注&#xff1f; 参考资料 自 2023 年 …

企业研发必备网络:这些关键特性,你get了吗?

对于以研发为核心的企业&#xff0c;如软件开发、生物制药、智能汽车等&#xff0c;安全、稳定的研发网络可是他们业务发展不可或缺的。那么&#xff0c;这些研发网络究竟有哪些独特之处&#xff0c;又能为企业带来哪些价值呢&#xff1f; 首先&#xff0c;我们知道企业研发常常…

笔记本电脑如何录音?小白也能轻松学会!

“笔记本电脑如何录音呀&#xff1f;我正在准备一场线上的演讲&#xff0c;想录制一段自己的声音作为练习。可是我翻遍了笔记本电脑的各个角落&#xff0c;还是找不到录音功能在哪里。演讲对我来说很重要&#xff0c;我真的很需要这个功能。有人知道笔记本电脑的录音功能在哪里…

海思Hi3065H 200MHz 高性能 RISCV32 A² MCU

这是一款海思自研的RISCV32内核的高性能实时控制专用MCU&#xff0c; 具有高性能、高集成度、高可靠性、易开发的特点&#xff0c;同时还有嵌入式AI能力。 CPU • RISC-V200MHzFPU 存储 • Up to 152KB Code Flash • 8KB Data Flash • 16KB SRAM 个人认为这是MCU梯队非常…

Linux交叉编译

一. 交叉编译 1.使用环境要求 新版本的orangepi-build是在Ubuntu22.04的x64电脑或虚拟机上运行的 lsb_release -a //查看自己的虚拟机版本 因为编译出的SDK大概有16G大小&#xff0c;因此&#xff0c;至少给虚拟机分配50G的大小。 2.获取Linux SDK 方法一&#xff1a;从…

如何对SQL Server中的敏感数据进行加密解密?

为什么需要对敏感数据进行加密&#xff1f; 近几年有不少关于个人数据泄露的新闻&#xff08;个人数据通常包含如姓名、地址、身份证号码、财务信息等&#xff09;&#xff0c;给事发公司和被泄露人都带来了不小的影响。 许多国家和地区都出台了个人数据保护的法律法规&#…

centos7.9安装es7.12.0

下载es 国内镜像&#xff1a;https://mirrors.huaweicloud.com/elasticsearch/7.12.0/ 下载并上传内容到/usr/local目录下 解压&#xff1a; tar -zxvf /uar/local/elasticsearch-7.12.0-linux-x86_64.tar.gz安装 es一般不能用root启动&#xff0c;因此需要创建es:es用户和…

CF 944 (Div. 4) A~G

文章目录 A My First Sorting Problem&#xff08;模拟&#xff09;B Different String(模拟、字符串)C Clock and Strings&#xff08;模拟&#xff09;D Binary Cut &#xff08;贪心&#xff09;E Find the Car&#xff08;二分查找、数学&#xff09;F Circle Perimeter&am…

momentjs

Moment.js 是一个用于处理日期和时间的 JavaScript 库&#xff0c;它提供了许多方便的函数和方法来操作、格式化和解析日期时间。官网 常见用法 格式化日期时间&#xff1a;可以使用format方法将日期时间格式化为指定的字符串格式&#xff0c;例如YYYY-MM-DD HH:mm:ss。获取日…