目录
- Unix性能稳定但价钱昂贵,因此发展出了开源的、类似Unix风格的Linux
- 搭网站都优先选择Linux,安全性较高
- 内核版本号XX.YY.ZZ:XX为主版本号,YY为次版本号,次版本号为奇数表示开发版,偶数为稳定版,ZZ为补丁次数
1. 单用户操作系统和多用户操作系统
- 单用户操作系统:
同一时间只能由一个用户使用,一个用户独享系统全部硬件和软件资源,Windows XP 之前的版本都是单用户操作系统 - 多用户操作系统:
一台计算机同一时间可以由多个用户使用,多个用户共同享用系统的全部硬件和软件资源,Unix 和 Linux 的设计初衷就是多用户操作系统
2. 文件目录结构
2.1 磁盘
- 主引导记录(MBR)放置该硬盘的信息区,是整个硬盘最重要的区域,一般来说,MBR有512个字节,且可以分为两个部分
- 第一部分有446个字节,用于存放引导代码,即是bootloader
- 第二部分有64个字节,用于存放磁盘分区表,其中,每个分区的信息需要用16个字节来记录。因此,一个硬盘最多可以有4个分区,这4个分区称之为主分区和扩展分区
- 由于扩展分区只能有一个,所以这4个分区可以是4个主分区或者3个主分区加1个扩展分区
- 扩展分区不能直接使用,还需要将其划分为逻辑分区才行,逻辑分区没有数量上限制,扩展分区其实是指向正确的额外分区表
- 示例:
/dev/hda5
:dev表示硬件设备文件所在目录,hd表示IDE设备,sd表示SCSI设备,a表示硬盘顺序号,以a、b、c、d表示,5为分区顺序号,以数字1、2、3表示 - SCSI、SATA、IDE三种硬盘接口的认识及对比
2.2 默认分区
安装Linux时,默认分为三个区,分别是/boot分区、swap分区和根分区,这三个分区分别对应的盘符是hda1、hda2、hda3
- boot分区:约100MB.该分区存放Linux的Grub(bootloader)和内核源码
- swap分区:即为虚拟内存,用于当系统内存空间不足时,先将临时数据存放在swap分区,等待一段时间后,再将数据调入到内存中执行。虚拟内存只是暂时存放数据,在该空间内并没有执行,且该分区没有对应的目录,用户无法访问,只能由系统访问
- 根分区
2.3 关键目录
Linux目录类似一个树,最顶层是其根目录
/
:根目录,所有文件都在它下面/home
:普通用户家目录/etc
:系统配置文件存放的目录,不建议在此目录下存放可执行文件
用户和组/bin
:普通用户可执行的命令,如常用命令ls、tar、mv、cat
等/boot
:存放系统引导装载程序,启动镜像/lib
:系统库文件/dev
:存放设备文件,几乎任何硬件外设都会在这里面有对应的文件,包括硬盘,U盘,光驱,串口,打印机等等。只要硬件连接上了电脑,并且正常驱动起来,/dev/下就会产生对应的文件。其中的存储设备在产生了设备文件以后,不能够直接使用,要挂载(按照一定的格式去解析设备里的文件)到一定的目录才能够看到里面的文件。/media
:是自动挂载的目录,比如U盘插在ubuntu下会自动挂载,就会在/media下生成一个目录,这个目录就是U盘所在目录,或者说文件/mnt
:手动挂载一些临时媒体设备的目录/opt
:安装外部大型程序/proc
:虚拟的文件系统,并不存在于某个磁盘上,而是开机后由核心在内存中产生,用于提供关于系统的信息/root
:管理员的家目录/sbin
:管理员可以执行的命令/usr
:系统文件/var
:一些存在变量的文件例如数据库,邮件,日志/lost+found
:这个目录平时是空的,系统非正常关机而留下“无家可归”的文件- Linux目录结构和作用
3. 桌面环境
- 可以简单地认为GNOME和KDE是并列关系,它们都是基于X-Window的桌面环境,通过X-Window其才能运行,目标都是为Linux开发最好的图形环境,都说kde参考windows而gnome参考mac os。
- Ubuntu 16.04.1的桌面环境是Canonical 自己定制的 Unity 。但Canonical 在 Ubuntu 18.04 发行版里又重新用回了 GNOME,放弃了 Unity。
- 从Linux的图形界面切换到命令界面:Ctrl+Shift+Alt+Fn(n=2,3,4,5,6),按Ctrl+Alt+F1回到图形界面
4. 终端
Ctrl+Win+D
:显示桌面
Ctrl+Alt+T
:打开终端
Ctrl+C
:强制中断程序的执行
Ctrl+Z
:将任务中断,但是并不结束,仍然在进程中维持挂起状态
fg
命令: 重新启动前台被中断的任务
bg
命令:把被中断的任务放在后台执行
Ctrl+Shift+C
:复制
Ctrl+Shift+V
:粘贴
Tab
:自动补齐
Ctrl+L
:清屏
Ctrl+U
:从光标处清空至行首
Ctrl+K
:从光标处清空至行尾
\
:反斜杠,强制换行,实际上还是一行
[root@xx ~]#
:root为当前登录的用户名称,xx为计算机名称,~为当前目录,#代表管理员权限,$为普通用户权限
4.1 系统信息
uname -r 查看内核版本,可以去https://www.exploit-db.com上搜索一下漏洞
-a 显示主机名、内核版本、硬件平台等信息
hostname 查看主机的完整名称,从而判断该计算机服务器在网络当中的具体角色
ifconfig 显示所有接口的ip
cat /proc/cpuinfo 查看CPU信息
cat /proc/meminfo 查看内存信息
4.2 获得命令帮助
内部命令的帮助:help
大多数外部命令:--help
4.3 系统及服务相关命令
sudo 系统管理者的身份(root)执行指令
sudo nautilus 以root权限打开文件管理器,进行操作
sudo service apache2 start 开启apache服务,开启成功后可以在浏览器输入ip地址验证
sudo ifconfig 查看本机网络配置
sudo passwd root 修改用户root的密码
sudo apt update 下载最新的软件列表,更新本地软件包缓存信息(包含软件名,版本,校验值,依赖关系等)
sudo apt upgrade 安装更新,下载最新软件包,并替换系统上过时的软件
sudo apt intall XXX 从sources.list源安装XXX软件
useradd xy 增加用户
passwd xy 修改用户xy的密码
userdel -r xy 删除用户同时删除宿主目录
echo "It is a test" 字符串的输出
halt 关机
shutdown -r now 重启
4.4 文件及应用相关命令
- 以
-
引导短格式选项(单个字符) - 以
--
引导长格式选项(多个字符) - 多个短格式选项可以写在一起,只用一个
-
引导
locate sqlmap 查找sqlmap路径
pwd 显示当前所在目录完整路径
ls 当前路径下有哪些文件
-a 全部的档案,包括隐藏档(.开头的)
-l 显示详细资料
-h 以字节单位显示信息
-R 递归显示每一级目录下还有什么目录
ll 是“ls -l"的别名
du -sh /etc 查看文件大小
mkdir demo1 建立demo1文件夹
-p a/b/c 递归创建a文件下的b下的c
touch 文件名 新建空文件,若已有相同文件名,则只会更新文件修改时间,可以用来迷惑管理员
ln -s /a/1.txt 建立软链接,相当于win下的快捷方式
nano text 建立文本文档text并打开
date > 1.txt 把日期查看结果导入到文件里
>> 追加内容
cd root 进入root文件夹,按Tab键可以自动补全最接近的名称
.. 返回上一级目录,可以在上传时用来切换到有执行权限的目录
- 返回到上一次所在的目录
cp text ../demo 复制文件text到上一层的demo2
-r 递归复制整个目录树
-rf 无提示的递归复制整个目录树
mv install.log / 把文件移动到根目录下
rm text 删除text
-r 递归删除文件
-rf 无提示地强制递归删除文件,并且不能够恢复,谨慎使用
find / -name re* 查找文件
-user
-size
-type
wc 统计文件中的单词数量、字节数、行数
cat text 打印文件内容
head -n 2 text 打印头两行
tail -n 2 text 打印末尾两行
4.4.1 压缩与打包
- 打包:将一堆文件或目录什么的变成一个总的文件。
- 压缩:将一个大的文件经过某种压缩算法变成一个小文件。
- 为什么要区分这两个概念呢?因为Linux中的很多压缩程序只能针对一个文件进行压缩,所以当你想要压缩一大堆文件时,首先需要打个包,然后压缩。
gzip install.log install.log.gz 压缩 -9 高度压缩 gzip -d install.log.gz 解压缩 bzip2 install.log install.log.bz2 另一种压缩方式,相比gzip压缩率更高 tar -cvf 4.tar 1 2 3 将文件1 2 3打包归档为4.tar -xvf 4.tar 解包归档文件4.tar -tvf 4.tar 不解包查看包内文件 -rvf 4.tar 4 追加 rpm -ivh rpm包文件 安装(i)并显示安装详细信息(v)和安装进度(h) -U 更新,原本未安装的进行安装 -F 更新,原本未安装的放弃安装 -e 卸载 dpkg -i xx.deb 安装 -l 列出系统中所有已安装的软件包信息 -r xx 卸载
- dpkg与rpm、apt-get与yum
- RPM(Red-Hat Package Manager(RPM软件包管理器)):这一文件格式名称虽然打上了RedHat的标志,但是其原始设计理念是开放式的
- 在安装存在依赖关系的软件包时,可以先配置yum源
vi /etc/yum.repos.d/rhel-source.repo 打开yum源文件 删除包括[rhel-source-beta]在内的下方所有内容 修改enabled=1 修改baseurl=file:///media/Server 复制gpgkey后的内容:/etc/pki/rpm-gpg/RPM-GPG-KEY-redhat-release :wq 保存退出 yum -y install man 安装,此时可以不用进入软件包路径,且yum会处理所需要的依赖包
4.4.2 文件权限
4.5 网络配置
名称 | 网卡类型 |
---|---|
eth0 | 以太网 |
lo | 回环 |
ppp0 | 使用PPP协议的串口设备(通常指调制解调器) |
wlan0 | 无线网卡 |
route -n 查看主机中路由表信息
netstat [选项] 查看系统的网络连接状态、路由表、接口统计等信息
netstat -antp | grep 80 查看80端口上运行的web服务器
px -aux 查看进程
top 动态的查看进程,按q退出
kill 结束进程
service network restart 重启network网络服务
ifdown eth0 禁用网络接口
ifup eth0 启用网络接口
iptables -L -n 查看防火墙
iptables -F 关闭防火墙
setenforce 0 临时关闭selinux
- 防火墙
防火墙
iptables命令详解和举例 - SELinux
SELinux入门
4.7 xxd命令
- xxd命令用于用二进制或十六进制显示文件内容
- xxd命令