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