2017-07-18 11:05:20 +07:00
|
|
|
|
# Linux 基础
|
|
|
|
|
|
2017-08-05 19:44:45 +07:00
|
|
|
|
- [常用基础命令](#常用基础命令)
|
2017-08-06 13:52:07 +07:00
|
|
|
|
- [进程管理](#进程管理)
|
|
|
|
|
- [权限设置](#权限设置)
|
2017-08-05 19:44:45 +07:00
|
|
|
|
- [字节序](#字节序)
|
|
|
|
|
- [输入输出](#输入输出)
|
2017-07-18 23:05:44 +07:00
|
|
|
|
|
2017-08-05 19:44:45 +07:00
|
|
|
|
|
|
|
|
|
## 常用基础命令
|
2017-07-18 11:05:20 +07:00
|
|
|
|
```text
|
|
|
|
|
ls 用来显示目标列表
|
|
|
|
|
|
|
|
|
|
cd [path] 用来切换工作目录
|
|
|
|
|
|
|
|
|
|
pwd 以绝对路径的方式显示用户当前工作目录
|
|
|
|
|
|
|
|
|
|
man [command] 查看Linux中的指令帮助、配置文件帮助和编程帮助等信息
|
|
|
|
|
|
|
|
|
|
apropos [whatever] 在一些特定的包含系统命令的简短描述的数据库文件里查找关键字
|
|
|
|
|
|
|
|
|
|
cat [file] 连接文件并打印到标准输出设备上
|
|
|
|
|
|
|
|
|
|
less [file] 允许用户向前或向后浏览文字档案的内容
|
|
|
|
|
|
|
|
|
|
mv [file1] [file2] 用来对文件或目录重新命名,或者将文件从一个目录移到另一个目录中
|
|
|
|
|
|
|
|
|
|
cp [file1] [file2] 用来将一个或多个源文件或者目录复制到指定的目的文件或目录
|
|
|
|
|
|
|
|
|
|
rm [file] 可以删除一个目录中的一个或多个文件或目录,也可以将某个目录及其下属的所有文件及其子目录均删除掉
|
|
|
|
|
|
|
|
|
|
nano / vim / emacs 字符终端的文本编辑器
|
|
|
|
|
```
|
|
|
|
|
```text
|
|
|
|
|
管道命令符 "|" 将一个命令的标准输出作为另一个命令的标准输入
|
|
|
|
|
```
|
2017-07-18 23:05:44 +07:00
|
|
|
|
|
|
|
|
|
|
2017-08-06 13:52:07 +07:00
|
|
|
|
## 进程管理
|
|
|
|
|
- top
|
|
|
|
|
- 可以实时动态地查看系统的整体运行情况。
|
|
|
|
|
- ps
|
|
|
|
|
- 用于报告当前系统的进程状态。可以搭配 kill 指令随时中断、删除不必要的程序。
|
|
|
|
|
- 查看某进程的状态:`$ ps -aux | grep [file]`,其中返回内容最左边的数字为进程号(PID)。
|
|
|
|
|
- kill
|
|
|
|
|
- 用来删除执行中的程序或工作。
|
|
|
|
|
- 删除进程某 PID 指定的进程:`$ kill [PID]`
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 权限设置
|
|
|
|
|
在 Linux 中,文件或目录权限的控制分别以读取、写入、执行 3 种一般权限来区分,另有 3 种特殊权限可供运用。
|
|
|
|
|
|
|
|
|
|
使用 `ls -l [file]` 来查看某文件或目录的信息:
|
|
|
|
|
```text
|
|
|
|
|
$ ls -l /
|
|
|
|
|
lrwxrwxrwx 1 root root 7 Jun 21 22:44 bin -> usr/bin
|
|
|
|
|
drwxr-xr-x 4 root root 4096 Jul 28 08:48 boot
|
|
|
|
|
-rw-r--r-- 1 root root 18561 Apr 2 22:48 desktopfs-pkgs.txt
|
|
|
|
|
```
|
|
|
|
|
第一栏从第二个字母开始就是权限字符串,权限表示三个为一组,依次是所有者权限、组权限、其他人权限。每组的顺序均为 `rwx`,如果有相应权限,则表示成相应字母,如果不具有相应权限,则用 `-` 表示。
|
|
|
|
|
- `r`:读取权限,数字代号为 “4”
|
|
|
|
|
- `w`:写入权限,数字代号为 “2”
|
|
|
|
|
- `x`:执行或切换权限,数字代号为 “1”;
|
|
|
|
|
|
|
|
|
|
通过第一栏的第一个字母可知,第一行是一个链接文件 (`l`),第二行是个目录(`d`),第三行是个普通文件(`-`)。
|
|
|
|
|
|
|
|
|
|
用户可以使用 `chmod` 指令去变更文件与目录的权限。权限范围被指定为所有者(`u`)、所属组(`g`)、其他人(`o`)和所有人(`a`)。
|
|
|
|
|
- -R:递归处理,将指令目录下的所有文件及子目录一并处理;
|
|
|
|
|
- <权限范围>+<权限设置>:开启权限范围的文件或目录的该选项权限设置
|
|
|
|
|
- `$ chmod a+r [file]`:赋予所有用户读取权限
|
|
|
|
|
- <权限范围>-<权限设置>:关闭权限范围的文件或目录的该选项权限设置
|
|
|
|
|
- `$ chmod u-w [file]`:取消所有者写入权限
|
|
|
|
|
- <权限范围>=<权限设置>:指定权限范围的文件或目录的该选项权限设置;
|
|
|
|
|
- `$ chmod g=x [file]`:指定组权限为可执行
|
|
|
|
|
- `$ chmod o=rwx [file]`:制定其他人权限为可读、可写和可执行
|
|
|
|
|
|
|
|
|
|
|
2017-08-05 19:44:45 +07:00
|
|
|
|
## 字节序
|
2017-07-18 23:05:44 +07:00
|
|
|
|
目前计算机中采用两种字节存储机制:大端(Big-endian)和小端(Little-endian)。
|
|
|
|
|
|
|
|
|
|
>MSB (Most Significan Bit/Byte):最重要的位或最重要的字节。
|
|
|
|
|
>
|
|
|
|
|
>LSB (Least Significan Bit/Byte):最不重要的位或最不重要的字节。
|
|
|
|
|
|
|
|
|
|
Big-endian 规定 MSB 在存储时放在低地址,在传输时放在流的开始;LSB 存储时放在高地址,在传输时放在流的末尾。Little-endian 则相反。常见的 Intel 处理器使用 Little-endian,而 PowerPC 系列处理器则使用 Big-endian,另外 TCP/IP 协议和 Java 虚拟机的字节序也是 Big-endian。
|
|
|
|
|
|
|
|
|
|
例如十六进制整数 0x12345678 存入以 1000H 开始的内存中:
|
|
|
|
|
|
|
|
|
|
![](../pic/1.3_byte_order.png)
|
2017-08-05 19:44:45 +07:00
|
|
|
|
|
|
|
|
|
|
|
|
|
|
## 输入输出
|
|
|
|
|
- 使用命令的输出作为可执行文件的输入参数
|
|
|
|
|
- ```$ ./vulnerable 'your_command_here'```
|
|
|
|
|
- ```$ ./vulnerable $(your_command_here)```
|
|
|
|
|
- 使用命令作为输入
|
|
|
|
|
- ```$ your_command_here | ./vulnerable```
|
|
|
|
|
- 将命令行输出写入文件
|
|
|
|
|
- ```$ your_command_here > filename```
|
|
|
|
|
- 使用文件作为输入
|
|
|
|
|
- ```$ ./vulnerable < filename```
|