初次提交

This commit is contained in:
2025-10-14 20:05:29 +08:00
commit 6e4e48fdd2
673 changed files with 437006 additions and 0 deletions

155
backend/fix_permissions.sh Normal file
View File

@@ -0,0 +1,155 @@
#!/bin/bash
# 权限问题修复脚本
echo "=== 云盘后端权限修复工具 ==="
# 检查当前用户
echo "当前用户: $(whoami)"
echo "用户ID: $EUID"
echo "主目录: $HOME"
echo "当前目录: $(pwd)"
# 1. 检查和创建.config目录
echo ""
echo "1. 检查用户配置目录..."
if [ ! -d "$HOME/.config" ]; then
echo "创建 .config 目录..."
mkdir -p "$HOME/.config" || {
echo "错误: 无法创建 .config 目录"
exit 1
}
echo "✓ .config 目录创建成功"
else
echo "✓ .config 目录已存在"
fi
# 2. 检查和创建systemd用户目录
echo ""
echo "2. 检查systemd用户目录..."
SYSTEMD_USER_DIR="$HOME/.config/systemd/user"
if [ ! -d "$SYSTEMD_USER_DIR" ]; then
echo "创建systemd用户目录..."
mkdir -p "$SYSTEMD_USER_DIR" || {
echo "错误: 无法创建systemd用户目录"
echo "尝试使用sudo创建..."
sudo -u $(whoami) mkdir -p "$SYSTEMD_USER_DIR" || {
echo "错误: 无法创建systemd用户目录尝试使用临时目录"
SYSTEMD_USER_DIR="/tmp/$(whoami)-systemd"
mkdir -p "$SYSTEMD_USER_DIR"
echo "使用临时目录: $SYSTEMD_USER_DIR"
}
}
echo "✓ systemd用户目录创建成功: $SYSTEMD_USER_DIR"
else
echo "✓ systemd用户目录已存在: $SYSTEMD_USER_DIR"
fi
# 3. 检查目录权限
echo ""
echo "3. 检查目录权限..."
echo ".config 目录权限: $(ls -ld $HOME/.config | awk '{print $1,$3,$4}')"
echo "systemd用户目录权限: $(ls -ld $SYSTEMD_USER_DIR | awk '{print $1,$3,$4}')"
# 4. 测试写入权限
echo ""
echo "4. 测试写入权限..."
TEST_FILE="$SYSTEMD_USER_DIR/.test_write"
if touch "$TEST_FILE" 2>/dev/null; then
echo "✓ 写入权限正常"
rm -f "$TEST_FILE"
else
echo "✗ 写入权限不足,尝试修复..."
chmod 755 "$HOME/.config" 2>/dev/null
chmod 755 "$SYSTEMD_USER_DIR" 2>/dev/null
if touch "$TEST_FILE" 2>/dev/null; then
echo "✓ 权限修复成功"
rm -f "$TEST_FILE"
else
echo "✗ 权限修复失败"
echo "可能的解决方案:"
echo "1. 检查磁盘空间: df -h"
echo "2. 检查用户配额: quota -u $(whoami)"
echo "3. 检查文件系统权限: mount | grep home"
echo "4. 联系系统管理员"
exit 1
fi
fi
# 5. 检查systemd用户服务是否启用
echo ""
echo "5. 检查systemd用户服务..."
if systemctl --user list-units --type=service --state=running &>/dev/null; then
echo "✓ systemd用户服务可用"
else
echo "⚠ systemd用户服务可能不可用"
echo "尝试启用用户systemd服务..."
# 对于某些系统需要启用linger
if command -v loginctl &> /dev/null; then
if loginctl show-user $(whoami) | grep -q "Linger=no"; then
echo "启用用户linger服务..."
loginctl enable-linger $(whoami) || echo "无法启用linger可能需要管理员权限"
fi
fi
fi
# 6. 创建测试服务文件
echo ""
echo "6. 创建测试服务文件..."
SERVICE_FILE="$SYSTEMD_USER_DIR/cloud-drive.service"
cat > "$SERVICE_FILE" << EOF
[Unit]
Description=Cloud Drive Backend Service
Documentation=https://github.com/your-repo/cloud-drive
After=network.target
[Service]
Type=simple
WorkingDirectory=$(pwd)
ExecStart=$(pwd)/venv/bin/python $(pwd)/main.py
Restart=always
RestartSec=10
StandardOutput=journal
StandardError=journal
SyslogIdentifier=cloud-drive
[Install]
WantedBy=default.target
EOF
if [ -f "$SERVICE_FILE" ]; then
echo "✓ 服务文件创建成功: $SERVICE_FILE"
echo "文件权限: $(ls -l $SERVICE_FILE | awk '{print $1,$3,$4}')"
else
echo "✗ 服务文件创建失败"
exit 1
fi
# 7. 测试systemd命令
echo ""
echo "7. 测试systemd命令..."
if systemctl --user daemon-reload 2>/dev/null; then
echo "✓ systemd用户服务重载成功"
else
echo "⚠ systemd用户服务重载失败"
echo "错误信息: $(systemctl --user daemon-reload 2>&1)"
fi
echo ""
echo "=== 权限修复完成 ==="
echo ""
echo "服务管理命令:"
echo "重载服务: systemctl --user daemon-reload"
echo "启用服务: systemctl --user enable cloud-drive"
echo "启动服务: systemctl --user start cloud-drive"
echo "查看状态: systemctl --user status cloud-drive"
echo "查看日志: journalctl --user -u cloud-drive -f"
echo ""
echo "如果systemd命令不可用请使用手动管理脚本:"
echo "启动: ./start.sh"
echo "停止: ./stop.sh"
echo "状态: ./status.sh"