Cтавим и настраиваем Resilio Sync в ALT Linux GNOME
Безопасная установка и настройка с автозапуском и точечным доступом к вашим папкам
1. Установка
# 1.1. скачиваем официальный RPM cd ~/Загрузки wget https://download-cdn.resilio.com/stable/linux-x64/resilio-sync-x64.rpm # 1.2. ставим epm install ./resilio-sync-x64.rpm
2. Создаём системного пользователя и нужные каталоги
# 2.1. пользователь и группа sudo groupadd -r rslsync 2>/dev/null sudo useradd -r -g rslsync -d /var/lib/resilio-sync -s /sbin/nologin rslsync 2>/dev/null # 2.2. рабочие директории sudo mkdir -p /var/lib/resilio-sync /etc/resilio-sync sudo chown rslsync:rslsync /var/lib/resilio-sync /etc/resilio-sync
3. Включаем автозапуск и проверяем статус
sudo systemctl enable --now resilio-sync systemctl is-enabled resilio-sync # должен выдать enabled systemctl status resilio-sync # active (running)
4. Настраиваем права: только нужные папки и ничего лишнего
Замените
YOUR_USER на ваше имя пользователя (например, ivan).
# 4.1. чистим старые ACL (!!! если нужно сбросить права в каталоге) sudo setfacl -b /home/YOUR_USER # 4.2. запрет на весь домашний каталог (только traverse) sudo setfacl -m u:rslsync:--x /home/YOUR_USER # 4.3. полный доступ к выбранным папкам + наследование for d in iCloud "Рабочий стол" Документы Загрузки Видео Музыка Изображения; do sudo setfacl -R -m u:rslsync:rwx "/home/YOUR_USER/$d" sudo setfacl -d -m u:rslsync:rwx "/home/YOUR_USER/$d" done # 4.4. то же для себя (чтобы вы могли удалять/изменять новые файлы) for d in iCloud "Рабочий стол" Документы Загрузки Видео Музыка Изображения; do sudo setfacl -R -m u:$(id -un):rwx "/home/YOUR_USER/$d" sudo setfacl -d -m u:$(id -un):rwx "/home/YOUR_USER/$d" done
5. Перезапускаем службу
sudo systemctl restart resilio-sync
6. Первый вход в веб-интерфейс
Откройте браузер по адресу http://127.0.0.1:8888/gui и задайте имя устройства и новый пароль администратора.
7. Проверяем автозапуск и права
# автозапуск systemctl is-enabled resilio-sync # enabled # права: rslsync НЕ видит /home/YOUR_USER, но видит нужные папки sudo -u rslsync ls /home/YOUR_USER # Permission denied sudo -u rslsync ls /home/YOUR_USER/Загрузки # OK
Готово: Resilio Sync стартует сам при загрузке ALT Linux, имеет доступ только к выбранным папкам и ничего лишнего; вы и сервис можете читать, писать и удалять новые файлы без sudo.
Поправить права можно скриптом ИИ-шный на свой страх и риск
#!/bin/bash
# Скрипт для глобальной настройки прав доступа в Resilio Sync
# Запускать с sudo: sudo ./setup-resilio-permissions.sh
set -e
echo "=== Настройка прав доступа Resilio Sync ==="
echo ""
# Определяем текущего пользователя (который запустил sudo)
if [ -z "$SUDO_USER" ]; then
echo "Ошибка: скрипт должен быть запущен с sudo"
exit 1
fi
SYNC_USER="$SUDO_USER"
SYNC_GROUP="$SUDO_USER"
echo "Пользователь для синхронизации: $SYNC_USER"
echo "Группа для синхронизации: $SYNC_GROUP"
echo ""
# 1. Добавляем пользователя в группу rslsync (если она существует)
if getent group rslsync > /dev/null 2>&1; then
echo "1. Добавление пользователя $SYNC_USER в группу rslsync..."
usermod -a -G rslsync "$SYNC_USER" || echo " Предупреждение: не удалось добавить в группу (возможно, уже добавлен)"
echo " ✓ Готово"
else
echo "1. Группа rslsync не найдена, пропускаем..."
fi
# 2. Создаём резервную копию конфигурации
CONFIG_FILE="/etc/resilio-sync/config.json"
if [ -f "$CONFIG_FILE" ]; then
echo ""
echo "2. Создание резервной копии конфигурации..."
cp "$CONFIG_FILE" "${CONFIG_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
echo " ✓ Резервная копия создана"
fi
# 3. Обновляем конфигурацию Resilio Sync (если нужно)
echo ""
echo "3. Проверка конфигурации Resilio Sync..."
# Примечание: Resilio Sync не поддерживает прямую настройку прав доступа через config.json
# Используем групповые права и setgid вместо этого
echo " ℹ Используем групповые права вместо параметров конфигурации"
# 4. Настраиваем системный сервис (опционально - можно изменить пользователя)
echo ""
echo "4. Настройка системного сервиса..."
SERVICE_FILE="/etc/systemd/system/multi-user.target.wants/resilio-sync.service"
if [ -f "$SERVICE_FILE" ]; then
# Создаём резервную копию
cp "$SERVICE_FILE" "${SERVICE_FILE}.backup.$(date +%Y%m%d_%H%M%S)"
# Обновляем UMask в сервисе для более открытых прав
sed -i 's/UMask=0002/UMask=0002/' "$SERVICE_FILE" || true
echo " ✓ Сервис настроен"
else
echo " ⚠ Файл сервиса не найден: $SERVICE_FILE"
fi
# 5. Находим все синхронизируемые директории
echo ""
echo "5. Поиск всех синхронизируемых директорий..."
# Определяем группу для использования
if getent group rslsync > /dev/null 2>&1; then
USE_GROUP="rslsync"
else
USE_GROUP="$SYNC_GROUP"
fi
echo " Используем группу: $USE_GROUP"
echo ""
# Функция для настройки прав на директорию
setup_directory_permissions() {
local SYNC_DIR="$1"
if [ ! -d "$SYNC_DIR" ]; then
echo " ⚠ Директория не найдена: $SYNC_DIR"
return 1
fi
echo " Обработка: $SYNC_DIR"
# Исправляем владельца и группу существующих файлов и директорий
# Владелец: пользователь, группа: rslsync (или группа пользователя, если rslsync нет)
echo " Исправление владельца и группы существующих файлов..."
chown -R "$SYNC_USER:$USE_GROUP" "$SYNC_DIR" 2>/dev/null || echo " ⚠ Не удалось изменить владельца/группу (может потребоваться больше прав)"
# Устанавливаем setgid бит на директории (2775 = rwxrwxr-x + setgid)
# Это гарантирует, что новые файлы будут создаваться с группой директории
echo " Установка setgid бита на директории..."
find "$SYNC_DIR" -type d -exec chmod 2775 {} \; 2>/dev/null || echo " ⚠ Не удалось установить setgid бит"
# Устанавливаем права на файлы (0664 = rw-rw-r--)
# Это даёт чтение/запись владельцу и группе
echo " Установка прав на файлы..."
find "$SYNC_DIR" -type f -exec chmod 0664 {} \; 2>/dev/null || echo " ⚠ Не удалось изменить права на файлы"
# Настраиваем ACL для дополнительной защиты
echo " Настройка ACL..."
setfacl -R -m d:g:"$USE_GROUP":rwx "$SYNC_DIR" 2>/dev/null || true
setfacl -R -m g:"$USE_GROUP":rwx "$SYNC_DIR" 2>/dev/null || true
echo " ✓ Права настроены (владелец: $SYNC_USER, группа: $USE_GROUP)"
}
# Ищем все директории с .sync (исключаем служебные директории Resilio Sync)
SYNC_DIRS=$(find /home/"$SYNC_USER" -name ".sync" -type d 2>/dev/null | \
grep -v "/\.config/resilio-sync" | \
grep -v "/\.SyncUser" | \
grep -v "/License/" | \
xargs -I {} dirname {} | \
sort -u)
# Также проверяем системные директории (если есть доступ)
if [ -d "/var/lib/resilio-sync" ]; then
# Можно добавить логику для поиска системных директорий, если нужно
# Пока пропускаем, так как они обычно требуют специальной настройки
true
fi
# Подсчитываем количество найденных директорий
SYNC_COUNT=0
if [ -n "$SYNC_DIRS" ]; then
SYNC_COUNT=$(echo "$SYNC_DIRS" | grep -v '^$' | wc -l)
fi
if [ "$SYNC_COUNT" -eq 0 ]; then
echo " ⚠ Не найдено синхронизируемых директорий"
echo " Проверьте, что Resilio Sync запущен и синхронизирует папки"
else
echo " Найдено директорий: $SYNC_COUNT"
echo ""
# Обрабатываем каждую директорию
COUNTER=1
while IFS= read -r SYNC_DIR; do
if [ -n "$SYNC_DIR" ] && [ -d "$SYNC_DIR" ]; then
echo " [$COUNTER/$SYNC_COUNT] $SYNC_DIR"
setup_directory_permissions "$SYNC_DIR"
echo ""
COUNTER=$((COUNTER + 1))
fi
done <<< "$SYNC_DIRS"
fi
# 6. Создаём .syncignore файлы в директориях с .git
echo ""
echo "6. Создание .syncignore файлов в директориях с .git..."
SYNCIGNORE_COUNT=0
if [ -n "$SYNC_DIRS" ] && [ "$SYNC_COUNT" -gt 0 ]; then
while IFS= read -r SYNC_DIR; do
if [ -n "$SYNC_DIR" ] && [ -d "$SYNC_DIR" ] && [ -d "$SYNC_DIR/.git" ]; then
SYNCIGNORE_FILE="$SYNC_DIR/.syncignore"
# Создаём или обновляем .syncignore
if [ ! -f "$SYNCIGNORE_FILE" ] || ! grep -q "\.git/" "$SYNCIGNORE_FILE" 2>/dev/null; then
{
echo "# Исключить .git из синхронизации Resilio Sync"
echo "# Git репозиторий должен синхронизироваться через git, а не через файловую синхронизацию"
echo ".git/"
echo ".gitignore"
echo "*.git"
} >> "$SYNCIGNORE_FILE"
chown "$SYNC_USER:$USE_GROUP" "$SYNCIGNORE_FILE" 2>/dev/null || true
chmod 644 "$SYNCIGNORE_FILE"
echo " ✓ Создан/обновлён: $SYNCIGNORE_FILE"
SYNCIGNORE_COUNT=$((SYNCIGNORE_COUNT + 1))
else
echo " ℹ Уже существует: $SYNCIGNORE_FILE"
fi
fi
done <<< "$SYNC_DIRS"
if [ "$SYNCIGNORE_COUNT" -eq 0 ]; then
echo " ℹ Не найдено директорий с .git для создания .syncignore"
fi
else
echo " ℹ Нет синхронизируемых директорий для проверки"
fi
echo ""
echo "=== Настройка завершена ==="
echo ""
echo "Обработано директорий: $SYNC_COUNT"
if [ "$SYNCIGNORE_COUNT" -gt 0 ]; then
echo "Создано/обновлено .syncignore файлов: $SYNCIGNORE_COUNT"
fi
echo ""
echo "Следующие шаги:"
echo "1. Перезапустите Resilio Sync:"
echo " sudo systemctl restart resilio-sync"
echo " # Или для пользовательского экземпляра:"
echo " systemctl --user restart resilio-sync"
echo ""
echo "2. Выйдите и войдите в систему заново, чтобы изменения группы вступили в силу"
echo ""
echo "3. Проверьте права доступа в одной из директорий:"
if [ -n "$SYNC_DIRS" ] && [ "$SYNC_COUNT" -gt 0 ]; then
FIRST_DIR=$(echo "$SYNC_DIRS" | head -1)
if [ -n "$FIRST_DIR" ] && [ -d "$FIRST_DIR" ]; then
echo " ls -la \"$FIRST_DIR\" | head -5"
if [ -d "$FIRST_DIR/.git" ]; then
echo " ls -la \"$FIRST_DIR/.git/\" | head -5"
fi
fi
fi
echo ""
echo "4. Если проблемы остались, исправьте права вручную для конкретной директории:"
echo " sudo chown -R $SYNC_USER:$USE_GROUP <путь_к_директории>"
echo ""
if [ -n "$SYNC_DIRS" ] && [ "$SYNC_COUNT" -gt 0 ]; then
echo "5. Список всех обработанных директорий:"
while IFS= read -r SYNC_DIR; do
if [ -n "$SYNC_DIR" ] && [ -d "$SYNC_DIR" ]; then
echo " - $SYNC_DIR"
fi
done <<< "$SYNC_DIRS"
fi