wahaha2025-03-21文章来源:SecHub网络安全社区
Docker 是一个开源的应用容器引擎,让开发者可以打包他们的应用 以及依赖包到一个可移植的镜像中,然后发布 到任何流行的 Linux或 Windows操作系统的机器上,也可以实现虚拟化。容器是完全使用 沙箱机制,相互之间不 会有任何接口。
容器操作 :
docker ps #列出容器
docker ps -a #显示所有的容器,包括未运行的
docker stats #显示容器资源的使用情况
容器生命周期管理 :
docker run #创建一个新的容器并运行一个命令
docker run -d --name nginxtest -p 8999:80 nginx:latest
docker docker
docker start/stop/restart #启动/停止/重启容器 docker rm #删除一个或多个容器
rmi #删除镜像
exec #在运行的容器中执行命令
docker exec -it nginx /bin/sh #在容器 nginx 中以交互 模式执行
也可以通过 docker ps -a 命令查看已经在运行的容器, 然后使用容器 ID 进入容器
本地镜像管理 :
docker images #列出本地镜像
docker images -a #列出本地所有 的镜像
镜像仓库 :
docker pull #从镜像仓库中拉取或者更新指定镜像
docker search #从Docker Hub 查找镜像
docker push #将本地的镜像上传 到镜像仓库 ,要先登陆到镜像仓库
数据传输 : #宿主机与容器之间上传与下载文件
docker cp ./1.txt nginxtest:/tmp/
docker cp nginxtest:/tmp/1.txt .
cd: 改变当前工作目录
ls: 显示出指定目录下所有的文件 -a 显示隐藏文件
mkdir: 创建文件目录
rm:
-f 强制删除 -rf 递归删除
cp:
cp 1.txt /opt
拷贝文件
-r 拷贝文件夹下所有文件
cat: 列出文件内容
mv:
移动文件 mv 1.txt /opt 重命名文件 mv 1.txt 2.txt
touch: 创建文件
find:
查找文件 find / -name 1.txt
sudo: 执行root权限
pwd: 显示当前路径
chmod:
改变文件权限
chmod +x 添加可执行权限
useradd: 创建用户
netstat: 查看当前开放端口 netstat -anltp
lsof: 查看端口与进程之间的联系 lsof -i:80
ps:
ps -ef 查看进程
/bin: bin是Binary的缩写,这个目录存放着最经常使 用的命令。
/boot: 这里存放的是启动Linux时使用的—些核心文件, 包括—些连接文件以及镜像文件。
/dev: dev是Device(设备)的缩写,该目录下存放的 是Linux的外部设备,在Linux中访问设备的方式 和访问文件 的方式是相同的。
/etc: 这个目录用来存放所有的系统管理所需要的配置 文件和子目录。
/home: 用户的主目录,在Linux中,每个用户都有—个 自己的目录, —般该目录名是以用户的账号命名 的。 /root: 该目录为系统管理员,也称作超级权限者的用户 主目录。
/lib: 这个目录里存放着系统最基本的动态连接共享库, 其作用类似于Windows里的DLL文件。几乎所 有的应用程
序都需要用到这些共享库。
/tmp: 这个目录是用来存放—些临时文件的。
/usr: 这是—个非常重要的目录,用户的很多应用程 序和文件都放在这个目录下,类似于windows 下的program files目录。
/usr/bin: 系统用户使用的应用程序。
/usr/sbin: 超级用户使用的比较高级的管理程序和系统守 护程序。
/usr/src: 内核源代码默认的放置目录。
/sbin:
s就是Super User的意思,这里存放的是系统管 理员使用的系统管理程序。
/var: 这个目录中存放着不断扩充着的东西,我们习惯将那 些经常被修改的目录放在这个目录下。包括各种日志文 件。
/run: 是—个临时文件系统,存储系统启动以来的信息。
/mnt: 系统提供该目录是为了让用户临时挂载别的文件系统 的,我们可以将光驱挂载在/mnt/上,然后进入该目录 就可以查看光驱里的内容了。
/opt: 这是给主机额外安装软件所摆放的目录,默认是空的。
/proc: 这个目录是—个虚拟的目录,它是系统内存的映射, 我们可以通过直接访问这个目录来获取系统信息。这
个目录的内容不在硬盘上而是在内存里。
ls -al 会看到下面这些
第一个字符表示的是文件类型,文件类型有很 多种,一般 [d] 表示的是目录,能用cd命令进 入到这个目录中。可 以看到图中几乎所有都是 目录。如果是 [-] 则表示文件,如果是 [l] 则表 示链接文件,如果是 [b] 则表示设备文件 中的 可随机存取设备,如果是 [c] 则表示为设备文 件中的一次性读取设备(键盘、鼠标)。
- : 代表普通文件 d:代表目录 l:代表软链接 b:代表块文件 c:代表字符设备
drwxr-xr-x 2 kali kali 4096 Jan 27 12:52 Downloads
-rw-r--r-- 1 root root 56 Jun 16 23:29 hash.txt
第一组数据 -rw-r--r-- rw-r--r-- 代表文件所属的权限
r : 文件可读。
w : 文件可修改。
- : 表示暂时没有其他权限。 x : 表示可执行
rw- 表示文件所拥有者的权限。
r-- 表示文件所在组的用户的权限。 r-- 表示其他组的用户的权限。
同样的,可以用数字代替, r=4,w=2,x=1。
第二组数据 1,如果文件类型为目录,表示目录下 的字目录个数;如果文件类型是普通文件,这个数 据就表示这个文 件的硬链接个数
第三组数据 root . 表示该文件所有者为root用户 第四组数据root. 表示该文件所在组为root组 第五组数据56 表示文件的大小为多少字节,如果为 一个目录,则为4096
第六组数据表示最后一次修改时间
第七组数据表示文件名称
tar解压缩命令
tar -zcvf 123.tar.gz update.sh 2.txt #压缩 -c create
tar -zxvf 123.tar.gz #解压 -x 拆包
update.sh编写
#!/bin/sh
mv -f 2.txt 3.txt #用2.txt替换3.txt
—般都是上传—些waf文件 平台解包后自动对其chmod + x添加执行权限
查找进程:
ps -ef | grep Music|grep -v grep |awk '{print $2}'|xargs kill -9 #查找进 程命令
awk #读取文件的每—行,并处理其中的每—个字段,$2为第二个字段即第二列
grep -v grep #过滤掉自身查找的进程
xargs的作用是将标准输入转为命令行参数
go语言的fix方法
update.sh
cp ./修改后编译好的文件 /编译文件的目录
ps -ef |grep go编译的名字| awk '{print $2}' | xargs kill -9
cd /编译文件目录 &&./执行编译文件 > /dev/null 2>&1
文件上传:
防御的时候我们是要把要修补的文件上传到服务器里,替换原来服务器中的文件,所以我们要知道文 件具体的路径, 但是—般来说题目不会直接给,不同开发语言不同框架的目录也不尽相同。 这个时候就要用到—个小tips:
题给示例 :
mv -f explorer.php /www/html/
我们要替换的文件很有可能不是在根目录下的/www/html,所以这个示例很鸡肋 那就从根目录里面查找 :
mv -f explorer.php $(dirname `find / -name 'explorer.php' 2>/dev/null`)/explorer.php
用find命令从根目录查找名为explorer.php的文件,然后返回他的路径名(dirname) 2>/dev/null的作用是避免 返回—些错误的信息,比如说查找过程中会返回权限不足等错误。
update.sh例子
php
#!/bin/bash
cp /index.php /var/www/html/index.php
go
#!/bin/bash
kill -9 $(pidof app)
cp ezgo_patch /app chmod +x /app
/app 2>&1 >/dev/null &
python
#!/bin/sh
cp /app.py /app/app.py
ps -ef | grep python | grep -v grep | awk '{print $2}' | xargs kill -9
cd /app && nohup python app.py >> /opt/app.log 2>&1 &
nodejs
#!/bin/sh
cp server.js /app/server.js
ps -ef | grep node | grep -v grep | awk '{print $2}' | xargs kill -9
cd /app && nohup node server.js >> /opt/aa.log 2>&1 &