ufw

# 放行某个端口
sudo ufw allow 3306 

# 查看ufw状态
sudo ufw status

# 删除某个端口规则
sudo ufw delete allow 3306

# 放行某个协议的端口
sudo ufw allow 3306/tcp

# 允许转发流量
sudo ufw default allow routed

# 修改回默认拒绝转发流量
sudo ufw default deny routed

# 重新加载UFW规则
sudo ufw reload

# 查看详细UFW规则
sudo ufw status verbose

# 查看UFW的默认策略
sudo ufw show raw

# 允许TUN接口的入站和出站流量
sudo ufw allow in on tun0
sudo ufw allow out on tun0

# 允许sing-box创建的虚拟子网流量
sudo ufw allow from 172.19.0.0/30
sudo ufw allow to 172.19.0.0/30

# 允许特定监听端口
sudo ufw allow 7890/tcp  # HTTP代理
sudo ufw allow 7891/tcp  # SOCKS代理
sudo ufw allow 17888/tcp # 混合代理

docker

基本信息和系统命令


# 查看Docker版本
docker version

# 显示Docker系统信息
docker info

# 查看Docker磁盘使用情况
docker system df

# 列出本地所有镜像
docker images
docker image ls

镜像管理

# 搜索镜像
docker search nginx

# 构建镜像
docker build -t myapp:1.0 .

# 删除镜像
docker rmi nginx:latest
docker image rm nginx:latest

# 查看镜像详细信息
docker image inspect nginx:latest

# 将镜像保存为tar文件
docker save -o nginx.tar nginx:latest

# 从tar文件加载镜像
docker load -i nginx.tar

容器管理

# 列出运行中的容器
docker ps

# 列出所有容器(包括停止的)
docker ps -a

# 启动已停止的容器
docker start mynginx

# 停止容器
docker stop mynginx

# 重启容器
docker restart mynginx

# 删除容器(必须先停止)
docker rm mynginx

# 强制删除正在运行的容器
docker rm -f mynginx

# 进入容器内部(交互式shell)
docker exec -it mynginx bash

# 查看容器日志
docker logs mynginx

# 在容器和主机之间复制文件
# 主机到容器
docker cp file.txt mynginx:/path/
# 容器到主机
docker cp mynginx:/path/file.txt ./

网络管理

# 列出所有网络
docker network ls

# 创建网络
docker network create mynetwork

# 删除网络
docker network rm mynetwork

# 查看网络详情
docker network inspect mynetwork

# 连接容器到网络
docker network connect mynetwork mynginx

# 断开容器与网络的连接
docker network disconnect mynetwork mynginx

# 创建容器时指定网络
docker run -d --name mynginx --network mynetwork nginx:latest

数据卷管理

# 列出所有数据卷
docker volume ls

# 创建数据卷
docker volume create mydata

# 删除数据卷
docker volume rm mydata

# 查看数据卷详情
docker volume inspect mydata

# 创建容器时挂载数据卷
docker run -d --name mynginx -v mydata:/usr/share/nginx/html nginx:latest

# 创建容器时挂载主机目录
docker run -d --name mynginx -v /home/user/html:/usr/share/nginx/html nginx:latest

docker-compose

# 启动所有服务
docker-compose up -d

# 停止所有服务
docker-compose down

# 查看服务状态
docker-compose ps

# 查看服务日志
docker-compose logs

# 构建或重建服务
docker-compose build

# 启动特定服务
docker-compose up -d nginx

# 停止特定服务
docker-compose stop nginx

# 重启特定服务
docker-compose restart nginx

# 删除docker-compose服务使用的所有镜像
docker-compose down --rmi all

curl

# 基本GET请求
curl https://example.com


# 保存响应到文件
curl -o output.html https://example.com

# 下载文件并显示进度条
curl -# -O https://example.com/file.zip

# 下载多个文件
curl -O https://example.com/file1.zip -O https://example.com/file2.zip

# GET请求(默认)
curl https://api.example.com/users

# POST请求
curl -X POST https://api.example.com/users

# PUT请求
curl -X PUT https://api.example.com/users/1

# DELETE请求
curl -X DELETE https://api.example.com/users/1

# HEAD请求(只获取HTTP头信息)
curl -I https://example.com

# 发送表单数据
curl -d "name=John&age=30" https://api.example.com/users

# 发送JSON数据
curl -X POST -H "Content-Type: application/json" -d '{"name":"John","age":30}' https://api.example.com/users

# 发送带换行符的JSON数据(更易读)
curl -X POST -H "Content-Type: application/json" \
  -d '{
    "name": "John",
    "age": 30,
    "email": "john@example.com"
  }' \
  https://api.example.com/users

# 从文件发送数据
curl -X POST -H "Content-Type: application/json" -d @data.json https://api.example.com/users

# 上传文件(表单上传)
curl -F "file=@photo.jpg" https://api.example.com/upload

# 上传多个文件
curl -F "file1=@photo1.jpg" -F "file2=@photo2.jpg" https://api.example.com/upload

# 添加请求头
curl -H "User-Agent: MyCustomAgent" https://example.com
curl -H "Accept: application/json" -H "Content-Type: application/json" https://api.example.com

# 发送基本认证
curl -u username:password https://api.example.com

# 发送Bearer令牌认证
curl -H "Authorization: Bearer eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9..." https://api.example.com

# 发送API密钥
curl -H "X-API-Key: your_api_key_here" https://api.example.com

# 使用HTTP代理
curl -x http://proxy.example.com:8080 https://example.com

# 使用SOCKS5代理
curl --socks5 proxy.example.com:1080 https://example.com

# 允许不安全的SSL连接(忽略证书验证)
curl -k https://example.com

# 使用特定的DNS服务器
curl --dns-servers 8.8.8.8 https://example.com

# 指定网络接口
curl --interface eth0 https://example.com

# 解析域名到特定IP
curl --resolve example.com:443:1.2.3.4 https://example.com

date

# 默认时间
date
date +%H:%M:%S

# 完整的日期和时间
date "+%Y-%m-%d %H:%M:%S"

# 查看系统的硬件时钟
sudo hwclock --show

分组权限创建

# 步骤1: 创建新的用户组webfiles
# 备注: 创建一个专门用于管理web文件的组,方便权限管理
sudo groupadd webfiles

# 步骤2: 将需要访问目录的用户添加到组中
# 备注: 添加caddy用户(当前目录所有者)到webfiles组
sudo usermod -a -G webfiles caddy

# 备注: 添加xiaohuang用户到webfiles组,使其获得目录访问权限
sudo usermod -a -G webfiles uluckyXH

# 步骤3: 更改目录的组所有权
# 备注: 保留caddy作为文件所有者,但将组更改为webfiles
# -R参数用于递归更改目录及其所有内容的所有权
sudo chown -R caddy:webfiles /www/file

# 步骤4: 设置目录权限
# 备注: 设置权限为775,表示:
# - 文件所有者(caddy)有读、写、执行权限
# - 组成员(webfiles组)有读、写、执行权限
# - 其他用户只有读和执行权限
sudo chmod -R 775 /www/file

# 步骤5: 设置默认权限继承(SGID位)
# 备注: 设置SGID位,确保在此目录中创建的新文件和目录自动继承组所有权
# 这样所有新创建的文件都会属于webfiles组
sudo chmod g+s /www/file

# 步骤6: 验证组是否创建成功
# 备注: 查看系统中所有组列表,确认webfiles组已创建
cat /etc/group | grep webfiles

# 步骤7: 验证用户是否已正确添加到组
# 备注: 检查caddy用户所属的组
groups caddy

# 备注: 检查xiaohuang(uluckyXH)用户所属的组
groups uluckyXH

# 步骤8: 验证目录权限设置
# 备注: 查看/www/file目录的详细权限信息
# 应显示所有者为caddy,组为webfiles,权限为drwxrwxr-x
ls -la /www/file

# 步骤9: 测试权限是否生效
# 备注: 切换到xiaohuang(uluckyXH)用户测试权限
su - uluckyXH

# 备注: 尝试在目录中创建测试文件
touch /www/file/test.txt

# 备注: 查看创建的文件权限,验证组所有权是否正确
ls -la /www/file/test.txt

# 步骤10: 如果需要,设置访问控制列表(ACL)进行更精细的权限控制
# 备注: 安装ACL工具(如果尚未安装)
sudo apt-get install acl

# 备注: 为特定用户设置特定权限
# 例如,给uluckyXH用户设置读写权限,但不给执行权限
sudo setfacl -m u:uluckyXH:rw- /www/file/specific_file.txt

# 备注: 查看文件的ACL设置
getfacl /www/file/specific_file.txt

Ubtun

# 更新系统
sudo apt update && sudo apt upgrade