Linux达人养成计划I

584 查看

Linux达人养成计划I

标签(空格分隔): IT 渗透技术


[TOC]

格式不好的请看这里:https://www.zybuluo.com/Guristas/note/188265

1 Linux安装

系统分区

  • 主分区:最多只能有4个

  • 扩展分区

    • 最多只能有1个

    • 主分区加扩展分区最多有4个

    • 不能写入数据,只能包含逻辑分区

  • 逻辑分区

在Linux中,任何东西都是文件

常见硬件设备文件名

  • IDE硬盘:/dev/hd[a-d]

  • SCSI/SATA/USB硬盘:/dev/sd[a-p]

  • 光驱:/dev/cdromdev/hdc

  • 软盘:dev/fd[0-1]

  • 鼠标:/dev/mouse

分区设备文件名

  • /dev/hda1 IDE硬盘接口

  • dev/sda1 SCSI硬盘接口、SATA硬盘接口

挂载

  • 必须分区

    • / (根分区)

    • sqap分区(交换分区,4G以下,内存两倍,4G以上,内存一样)

  • 推荐分区

    • /boot 启动分区,200MB

2 Linux常用命令

2.1 命令基本格式

命令提示符
[root@localhost ~]#
其中:
root:当前登陆用户
localhost:主机名
~:当前所在目录(家目录)
\#:超级用户提示符
$:普通用户提示符

命令格式
命令 [选项] [参数]

文件权限
-rw-r--r--

  • - 文件类型(- 文件 d 目录 l 软链接文件)

  • rw- u所有者

  • r-- g所属组

  • r-- o其他人

2.2 目录处理命令

查询目录中内容:ls
ls [选项] [文件或目录]
选项:
-a:显示所有文件,包括隐藏文件
-l:显示详细信息
-d:查看目录属性
-h:人性化显示文件大小
-i:显示iNode

建立目录:mkdir
mkdir -p [目录名]
-p 递归创建

切换所在目录:cd
cd ~:进入当前用户的家目录
cd
cd -:进入上次目录
cd ..:进入上一级目录

删除空目录:rmdir
只能删除空目录

删除文件或目录:rm
rm -rf [文件或目录]
-r 删除目录
-f 强制

复制:cp
cp [选项] [原文件或目录] [目标目录]
-r 复制目录
-p 连带文件属性复制
-d 若原文件是链接文件,则复制链接属性
-a 相当于 -pdr 包括时间完全一样

剪切或改名命令:mv
mv [原文件或目录] [目标目录]

2.3 常见目录作用

  • / 根目录

  • /bin/ 命令保存目录(普通用户就可以读取的命令)

  • /boot/ 启动目录,启动相关文件

  • /dev/ 设备文件保存目录

  • /etc/ 配置文件保存

  • /home/ 普通用户的家目录

  • /lib/ 系统库

  • /mnt/ 系统挂载

  • /media/ 挂载目录

  • /root/ 超级用户的家目录

  • /tmp/ 临时目录

  • /sbin/ 命令保存目录(超级用户才能使用的目录)

  • /proc/ 直接写入内存的

  • /sys/

  • /usr/ 系统软件资源目录

  • /usr/bin/ 系统命令(普通用户)

  • /usr/sbin/ 系统命令(超级用户)

  • /var 系统相关文档内容

2.4 链接命令

ln -s [原文件] [目标文件]
-s 创建软链接

硬链接特征:

  1. 拥有相同的iNode和存储block块,可以看做是同一个文件

  2. 可通过iNode识别

  3. 不能跨分区

  4. 不能针对目录使用

软链接特征:

  1. 类似windows快捷方式

  2. 软链接拥有自己的iNode和block块,但是数据块中只保存原文件的文件名和iNode,并没有实际的文件数据

  3. lrwxrwxrwx l软链接,文件权限都为全rwx

  4. 修改任意文件,另一个都改变

  5. 删除原文件,软链接不能使用

2.5 文件搜索命令

2.5.1 locate命令

locate命令格式
locate 文件名
在后台数据块中按文件名搜索,搜索速度更快

/var/lib/mlocate/
locate命令所搜索的后台数据块

updatedb 更新数据库

/etc/updatedb.conf配置文件

  • PRUNE_BIND_MOUNTS = "yes" 开启搜索限制

  • PRUNEFS = 搜索时,不搜索的文件系统

  • PRUNENAMES = 搜索时,不搜索的文件类型

  • PRUNEPATHS = 不搜索的路径

2.5.2 命令搜索命令whereis which

whereis 命令名
搜索命令所在路径及帮助文档所在位置
选项:
-b:只查找可执行文件
-m:只查找帮助文件

PATH环境变量
命令:echo $PATH

2.5.3 find命令

find [搜索范围] [搜索条件]
避免大范围搜索,耗费系统资源,find是在系统当中搜索符合条件的文件名。如果需要匹配,使用通配符匹配,通配符是完全匹配。

通配符:

  • 匹配任意内容
    ? 匹配任意一个字符
    [] 匹配任意一个中括号内的字符

find /root -iname install.log
不区分大小写

find /root -user root
按照使用者搜索

find /root -nouser
查找没有所有者的文件

find /var/log/ -mtime +10
查找10天前修改的文件
-10 10天内修改的文件
10 10天前当天修改的文件
+10 10天前修改的文件
atime 文件访问时间
ctime 改变文件属性
mtime 修改文件内容

find . -size 25k
查找文件大小是25KB的文件
-25k 小于25KB
-25M 小于25MB 注意大小写

find . -inum 262422
查找iNode,与命令ls -i [文件名]搭配使用

find /etc -size +20k -a size -50k
查找etc目录下,大于20K且小于50K的文件
-a 逻辑与
-o 逻辑或

find /etc -size -a size -50k -exec ls -lh {} \;
查找目录下文件,并显示详细信息
-exec 命令 {}\; 对搜索结果执行操作

2.5.4 grep命令

grep [选项] 字符串 文件名
-i 忽略大小写
-v 排除指定字符串

  • find命令:在系统当中搜索符合条件的文件名,如果需要匹配,使用通配符匹配,通配符是完全匹配。

  • grep命令:在文件当中搜索符合条件的字符串,如果需要匹配,使用正则表达式进行匹配,正则表达式是包含匹配。

2.6 帮助命令

2.6.1 帮助命令man

man 命令
获取指定命令的帮助

man的级别
1:查看命令的帮助
2:查看可被内核调用的函数的帮助
3:查看函数和函数库的帮助
4:查看特殊文件的帮助(主要是/dev目录下的文件)
5:查看配置文件的帮助
6:查看游戏的帮助
7:查看其它杂项的帮助
8:查看系统管理员可用命令的帮助
9:查看和内核相关文件的帮助

查看命令拥有哪个级别的帮助
man -f 命令
相当于
whatis 命令

man -5 passwd

man -k 命令
相当于
apropos 命令

2.6.2 其他帮助命令

命令 --help
获取命令选项的帮助

shell内部命令帮助
help shell内部命令

whereis cd 确定是否是shell内部命令
help cd获取内部命令帮助

详细命令帮助info
info 命令
-回车:进入子帮助页面(带有*号标记)
-u:进入上层页面
-n:进入下一个帮助小节
-p:进入上一个帮助小节
-q:退出

2.7 压缩命令

常见压缩格式:.zip .gz .bz2 .tar.gz .tar.bz2

  • zip格式压缩

    `zip 压缩文件名 源文件`
    压缩文件
    `zip -r 压缩文件名 源目录`
    压缩目录
    `unzip 压缩文件`
    解压缩
    
  • gz格式压缩

    `gzip 源文件`
    压缩为.gz格式,源文件消失
    `gzip -c 源文件 > 压缩文件`
    压缩为.gz格式,源文件保留
    `gzip -r 目录`
    压缩目录下所有的子文件,但是不能压缩目录
    `gzip -d 压缩文件`   `gunzip 压缩文件`
    解压缩文件
    
  • bz2格式压缩

    `bzip2 源文件`
    压缩为bz2格式,不保留源文件
    `bzip2 -k 源文件`
    压缩之后保留源文件
    `bzip2`命令不能压缩目录
    
  • 打包命令tar

    `tar -cvf 打包文件名 源文件`
    -c:打包
    -v:显示过程
    -f:指示打包后的文件名
    
  • 解打包命令

    `tar -xvf 打包文件名`
    
  • .tar.gz格式压缩

    `tar -zcvf 压缩包名.tar.gz 源文件`
    `tar -zxvf 压缩包吗.tar.gz`
    
  • .tar.bz2压缩格式

    `tar -jcvf 压缩包名.tar.bz2 源文件`
    `tar -jxvf 压缩包名.tar.bz2`
    

2.8 关机与重启命令

2.8.1 shutdown命令

shutdown [选项] 时间
-c:取消前一个关机命令
-h:关机
-r:重启

2.8.2 其他关机命令

halt poweroff init 0

2.8.3 其他重启命令

reboot init 6

2.8.4 系统运行级别

0:关机
1:单用户
2:不完全多用户,不含NFS服务
3:完全多用户
4:未分配
5:图形界面
6:重启

2.8.5 退出登录

logout

2.9 挂载命令

  1. 查询与自动挂载

    `mount`
    查询系统中已经挂载的设备
    `mount -a`
    依据配置文件`/etc/fstab/`的内容,自动挂载
    
  2. 挂载命令格式

    `mount [-t 文件系统] [-o 特殊选项] 设备文件名 挂载点`
    -t 文件系统:加入文件系统类型来指定挂载的类型,可以ext3、ext4、iso9660等文件系统
    -o 特殊选项:可以指定挂载的额外选项
    `mount -o remount,noexec /home`
    重新挂载`/boot`分区,并使用noexec权限(不可执行)
    
  3. 挂载光盘

    `mkdir /mnt/cdrom/`
    建立挂载点,也可以是其他,如`/media`
    `mount -t iso9660 /dev/cdrom /mnt/cdrom/`
    `dev/sr0`与`/dev/cdrom`一样
    
  4. 卸载命令

    `umount 设备文件名或挂载点`
    
  5. 挂载U盘

    `fdisk -l`
    查看U盘设备文件名
    `mount -t vfat /dev/sdb1 /mnt/usb/`
    Linux默认是不支持NTFS文件系统的
    

2.10 用户登录查看

查看登录用户信息
w 用户名
命令输出:
USER:登录的用户名
TTY:登录终端
FROM:从哪个IP地址登录
LOGIN@:登录时间
IDLE:用户登录时间
JCPU:指的是和该终端连接的所有进程占用的时间。这个时间里不包括过去的后台作业时间,但却包括当前正在运行的后台作业所占用的时间。
PCPU:指当前进程所占用的时间
WHAT:当前正在运行的命令

查询当前登陆和过去登陆的用户信息
last
last命令默认是读取/var/log/wtmp文件数据
命令输出:
-用户名
-登陆终端
-登陆IP
-登陆时间
-退出时间(在线时间)

查看所有用户的最后一次登陆时间
lastlog
lastlog命令默认是读取/var/log/lastlog文件内容
-用户名
-登陆终端
-登陆IP
-最后一次登陆时间

3 shell基础

3.1 shell概述

shell是一个命令行解释器

  • bourne shell:1979年起Unix就开始使用bourne shell,包括sh、ksh、bash、psh、zsh

  • C shell:主要是在BSD版的Unix系统中使用,其语法与c语言类似,包括csh、tcsh

  • BASH:bash与sh兼容,现在的Linux使用bash作为用户的基本shell

echo $SHELL

Linux支持的shell
/etc/shells 该文件中可以查看支持的shell

3.2 脚本执行方式

  1. echo输出命令
    echo [选项] [输出内容]
    -e:支持反斜线控制的字符转换,支持输出十六进制
    echo -e "\e[1;31m 嫁人就要嫁凤姐 \e[0m"
    输出颜色:30m 黑色,31m 红色,32m 绿色,33m 黄色,34m 蓝色,35m 洋红,36m 青色,37m 白色

  2. 第一个脚本

vi hello.sh
#!/bin/bash
#The first program
echo -e "\e[1;34m 天上掉下个林妹妹!\e[0m"
    1. 脚本执行

    • 赋予执行权限,直接运行
      chmod 755 hello.sh
      ./hello.sh

    • 通过bash调用执行脚本
      bash hello.sh

    3.3 bash的基本功能

    3.3.1 命令的别名

    • 命令别名 == 人的小名

    • 查看与设定别名
      alias:查看系统中所有的命令别名
      alias 别名 = '原命令':设定命令别名(临时生效)

    • 别名永久生效与删除别名
      vi ~/.bashrc:写入环境变量配置文件(重新登录后生效)
      source ~/.bashrc:重载文件,使别名立即生效
      unalias 别名:删除别名(写入文件的还需要在文件里删除)

    • 命令生效顺序

    1. 执行用绝对路径或相对路径执行的命令

    2. 执行别名

    3. 执行bash的内部命令

    4. 执行按照$PATH环节变量定义的目录查找顺序找到的第一个命令

    • 常用快捷键

      • ctrl+c:中止命令

      • ctrl+l:清屏

      • ctrl+a:光标移到命令行首

      • ctrl+e:光标移到命令行尾

      • ctrl+u:从光标位置删除到行首

      • ctrl+z:命令放入后台

      • ctrl+r:在历史命令中搜索

    3.3.2 历史命令

    history [选项] [历史命令保存文件]
    -c:清空历史命令
    -w:把缓存中的历史命令写入历史命令保存文件~/.bash_history

    历史命令默认保存1000条,可以再环境变量配置文件/etc/profile中进行修改

    历史命令的调用

    • 使用上下箭头

    • 使用!n重复执行第n条历史命令

    • 使用!!重复执行上一条命令

    • 使用!字符串重复执行最后一条以该字符串开头的命令

    命令与文件的补全:按tab键

    3.3.3 输出重定向

    1. 标准输出重定向

    • 命令 > 文件 以覆盖的方式,把命令的正确输出输出到指定的文件或设备当中

    • 命令 >> 文件 以追加的方式

    1. 标准错误输出重定向(注意空格)

    • 错误命令 2>文件 覆盖

    • 错误命令 2>>文件 追加

    1. 同时保存

    • 命令 > 文件 2>&1 覆盖

    • 命令 >> 文件 2>&1 追加

    • 命令 &>文件 覆盖

    • 命令 &>>文件 追加

    • 命令>>文件1 2>>文件2 正确输出追加到文件1中,错误输出追加到文件2中

    1. 输入重定向
      wc [选项] [文件名]
      -c:统计字节数
      -w:统计单词数
      -l:统计行数

    3.3.4 管道符

    1. 多命令顺序执行

    • 命令1 ; 命令2 多个命令顺序执行,无逻辑关系

    • 命令1&&命令2 命令1正确执行,命令2才执行

    • 命令1||命令2 命令1不正确,命令2才执行
      ls && echo yes || echo no ls || echo no && echo yes有问题

    1. 管道符
      命令1 | 命令2 命令1的正确输出作为命令2的操作对象
      ll -a /etc/ | more
      netstat -an | grep "EXTABLISHED"

    3.3.5 通配符

    常用通配符

    • ?:匹配一个任意字符

    • *:匹配0个或任意多个任意字符,即匹配任意内容

    • []:匹配括号中任意一个字符

    • [-]:匹配括号中任意一个字符,-表示范围,如[a-z]

    • [^]:^表示非,如1表示匹配一个不是数字的字符

    bash中其他特殊符号

    • '' 单引号,在单引号中的所有特殊符号,都没有特殊含义

    • "" 双引号,在双引号中特殊符号都没有特殊含义,但是"$"、"`"、"\"是例外,拥有,调用变量的值,引用命令,转义符含义

    • `` 反引号,反引号括起来的内容是系统命令,在bash中会先执行它,和\$()的作用一样,但推荐使用\$()

    • $() 与反引号意义相同

    • # #开头表示注释

    • $ 调用变量的值

    • \ 转义符


    1. 0-9