<?xml version="1.0" encoding="utf-8"?> 
<rss version="2.0"
  xmlns:itunes="http://www.itunes.com/dtds/podcast-1.0.dtd"
  xmlns:atom="http://www.w3.org/2005/Atom">

<channel>

<title>Alt Linux - Мои заметки: заметки с тегом Sync</title>
<link>https://alt.webman.agency/tags/sync/</link>
<description>Здесь собраны собственные и чужие находки полезные при работы с ALT Linux. Чтобы всегда были под рукой и не потерялись в приложении заметки.</description>
<author></author>
<language>ru</language>
<generator>Aegea 11.3 (v4134)</generator>

<itunes:subtitle>Здесь собраны собственные и чужие находки полезные при работы с ALT Linux. Чтобы всегда были под рукой и не потерялись в приложении заметки.</itunes:subtitle>
<itunes:image href="" />
<itunes:explicit></itunes:explicit>

<item>
<title>Cтавим и настраиваем Resilio Sync в ALT Linux GNOME</title>
<guid isPermaLink="false">8</guid>
<link>https://alt.webman.agency/all/ctavim-i-nastraivaem-resilio-sync-v-alt-linux-gnome/</link>
<pubDate>Wed, 24 Sep 2025 11:00:19 +0300</pubDate>
<author></author>
<comments>https://alt.webman.agency/all/ctavim-i-nastraivaem-resilio-sync-v-alt-linux-gnome/</comments>
<description>
&lt;p&gt;Безопасная установка и настройка с автозапуском и точечным доступом к вашим папкам&lt;/p&gt;
&lt;p&gt;&lt;h2&gt;1. Установка&lt;/h2&gt;&lt;/p&gt;
&lt;pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# 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&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;h2&gt;2. Создаём системного пользователя и нужные каталоги&lt;/h2&gt;&lt;/p&gt;
&lt;pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# 2.1. пользователь и группа
sudo groupadd -r rslsync 2&amp;gt;/dev/null
sudo useradd -r -g rslsync -d /var/lib/resilio-sync -s /sbin/nologin rslsync 2&amp;gt;/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&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;h2&gt;3. Включаем автозапуск и проверяем статус&lt;/h2&gt;&lt;/p&gt;
&lt;pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;sudo systemctl enable --now resilio-sync
systemctl is-enabled resilio-sync   # должен выдать enabled
systemctl status resilio-sync       # active (running)&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;h2&gt;4. Настраиваем права: только нужные папки и ничего лишнего&lt;/h2&gt;&lt;/p&gt;
&lt;p&gt;Замените &lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;YOUR_USER&lt;/code&gt;&lt;/pre&gt; на ваше имя пользователя (например, &lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;ivan&lt;/code&gt;&lt;/pre&gt;).&lt;/p&gt;
&lt;pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# 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 &amp;quot;Рабочий стол&amp;quot; Документы Загрузки Видео Музыка Изображения; do
  sudo setfacl -R -m u:rslsync:rwx &amp;quot;/home/YOUR_USER/$d&amp;quot;
  sudo setfacl -d -m u:rslsync:rwx &amp;quot;/home/YOUR_USER/$d&amp;quot;
done

# 4.4. то же для себя (чтобы вы могли удалять/изменять новые файлы)
for d in iCloud &amp;quot;Рабочий стол&amp;quot; Документы Загрузки Видео Музыка Изображения; do
  sudo setfacl -R -m u:$(id -un):rwx &amp;quot;/home/YOUR_USER/$d&amp;quot;
  sudo setfacl -d -m u:$(id -un):rwx &amp;quot;/home/YOUR_USER/$d&amp;quot;
done&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;h2&gt;5. Перезапускаем службу&lt;/h2&gt;&lt;/p&gt;
&lt;pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;sudo systemctl restart resilio-sync&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;&lt;h2&gt;6. Первый вход в веб-интерфейс&lt;/h2&gt;&lt;/p&gt;
&lt;p&gt;Откройте браузер по адресу &lt;a href="http://127.0.0.1:8888/gui"&gt;&lt;a href="http://127.0.0.1:8888/gui"&gt;http://127.0.0.1:8888/gui&lt;/a&gt;&lt;/a&gt; и задайте имя устройства и новый пароль администратора.&lt;/p&gt;
&lt;p&gt;&lt;h2&gt;7. Проверяем автозапуск и права&lt;/h2&gt;&lt;/p&gt;
&lt;pre&gt;&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;# автозапуск
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&lt;/code&gt;&lt;/pre&gt;&lt;/pre&gt;
&lt;p&gt;Готово: Resilio Sync стартует сам при загрузке ALT Linux, имеет доступ только к выбранным папкам и ничего лишнего; вы и сервис можете читать, писать и удалять новые файлы без sudo.&lt;/p&gt;
&lt;p&gt;Поправить права можно скриптом ИИ-шный на свой страх и риск&lt;/p&gt;
&lt;pre class="e2-text-code"&gt;&lt;code class=""&gt;#!/bin/bash
# Скрипт для глобальной настройки прав доступа в Resilio Sync
# Запускать с sudo: sudo ./setup-resilio-permissions.sh

set -e

echo &amp;quot;=== Настройка прав доступа Resilio Sync ===&amp;quot;
echo &amp;quot;&amp;quot;

# Определяем текущего пользователя (который запустил sudo)
if [ -z &amp;quot;$SUDO_USER&amp;quot; ]; then
    echo &amp;quot;Ошибка: скрипт должен быть запущен с sudo&amp;quot;
    exit 1
fi

SYNC_USER=&amp;quot;$SUDO_USER&amp;quot;
SYNC_GROUP=&amp;quot;$SUDO_USER&amp;quot;

echo &amp;quot;Пользователь для синхронизации: $SYNC_USER&amp;quot;
echo &amp;quot;Группа для синхронизации: $SYNC_GROUP&amp;quot;
echo &amp;quot;&amp;quot;

# 1. Добавляем пользователя в группу rslsync (если она существует)
if getent group rslsync &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then
    echo &amp;quot;1. Добавление пользователя $SYNC_USER в группу rslsync...&amp;quot;
    usermod -a -G rslsync &amp;quot;$SYNC_USER&amp;quot; || echo &amp;quot;   Предупреждение: не удалось добавить в группу (возможно, уже добавлен)&amp;quot;
    echo &amp;quot;   ✓ Готово&amp;quot;
else
    echo &amp;quot;1. Группа rslsync не найдена, пропускаем...&amp;quot;
fi

# 2. Создаём резервную копию конфигурации
CONFIG_FILE=&amp;quot;/etc/resilio-sync/config.json&amp;quot;
if [ -f &amp;quot;$CONFIG_FILE&amp;quot; ]; then
    echo &amp;quot;&amp;quot;
    echo &amp;quot;2. Создание резервной копии конфигурации...&amp;quot;
    cp &amp;quot;$CONFIG_FILE&amp;quot; &amp;quot;${CONFIG_FILE}.backup.$(date +%Y%m%d_%H%M%S)&amp;quot;
    echo &amp;quot;   ✓ Резервная копия создана&amp;quot;
fi

# 3. Обновляем конфигурацию Resilio Sync (если нужно)
echo &amp;quot;&amp;quot;
echo &amp;quot;3. Проверка конфигурации Resilio Sync...&amp;quot;
# Примечание: Resilio Sync не поддерживает прямую настройку прав доступа через config.json
# Используем групповые права и setgid вместо этого
echo &amp;quot;   ℹ Используем групповые права вместо параметров конфигурации&amp;quot;

# 4. Настраиваем системный сервис (опционально - можно изменить пользователя)
echo &amp;quot;&amp;quot;
echo &amp;quot;4. Настройка системного сервиса...&amp;quot;
SERVICE_FILE=&amp;quot;/etc/systemd/system/multi-user.target.wants/resilio-sync.service&amp;quot;
if [ -f &amp;quot;$SERVICE_FILE&amp;quot; ]; then
    # Создаём резервную копию
    cp &amp;quot;$SERVICE_FILE&amp;quot; &amp;quot;${SERVICE_FILE}.backup.$(date +%Y%m%d_%H%M%S)&amp;quot;
    
    # Обновляем UMask в сервисе для более открытых прав
    sed -i &amp;#039;s/UMask=0002/UMask=0002/&amp;#039; &amp;quot;$SERVICE_FILE&amp;quot; || true
    echo &amp;quot;   ✓ Сервис настроен&amp;quot;
else
    echo &amp;quot;   ⚠ Файл сервиса не найден: $SERVICE_FILE&amp;quot;
fi

# 5. Находим все синхронизируемые директории
echo &amp;quot;&amp;quot;
echo &amp;quot;5. Поиск всех синхронизируемых директорий...&amp;quot;

# Определяем группу для использования
if getent group rslsync &amp;gt; /dev/null 2&amp;gt;&amp;amp;1; then
    USE_GROUP=&amp;quot;rslsync&amp;quot;
else
    USE_GROUP=&amp;quot;$SYNC_GROUP&amp;quot;
fi

echo &amp;quot;   Используем группу: $USE_GROUP&amp;quot;
echo &amp;quot;&amp;quot;

# Функция для настройки прав на директорию
setup_directory_permissions() {
    local SYNC_DIR=&amp;quot;$1&amp;quot;
    
    if [ ! -d &amp;quot;$SYNC_DIR&amp;quot; ]; then
        echo &amp;quot;   ⚠ Директория не найдена: $SYNC_DIR&amp;quot;
        return 1
    fi
    
    echo &amp;quot;   Обработка: $SYNC_DIR&amp;quot;
    
    # Исправляем владельца и группу существующих файлов и директорий
    # Владелец: пользователь, группа: rslsync (или группа пользователя, если rslsync нет)
    echo &amp;quot;      Исправление владельца и группы существующих файлов...&amp;quot;
    chown -R &amp;quot;$SYNC_USER:$USE_GROUP&amp;quot; &amp;quot;$SYNC_DIR&amp;quot; 2&amp;gt;/dev/null || echo &amp;quot;         ⚠ Не удалось изменить владельца/группу (может потребоваться больше прав)&amp;quot;
    
    # Устанавливаем setgid бит на директории (2775 = rwxrwxr-x + setgid)
    # Это гарантирует, что новые файлы будут создаваться с группой директории
    echo &amp;quot;      Установка setgid бита на директории...&amp;quot;
    find &amp;quot;$SYNC_DIR&amp;quot; -type d -exec chmod 2775 {} \; 2&amp;gt;/dev/null || echo &amp;quot;         ⚠ Не удалось установить setgid бит&amp;quot;
    
    # Устанавливаем права на файлы (0664 = rw-rw-r--)
    # Это даёт чтение/запись владельцу и группе
    echo &amp;quot;      Установка прав на файлы...&amp;quot;
    find &amp;quot;$SYNC_DIR&amp;quot; -type f -exec chmod 0664 {} \; 2&amp;gt;/dev/null || echo &amp;quot;         ⚠ Не удалось изменить права на файлы&amp;quot;
    
    # Настраиваем ACL для дополнительной защиты
    echo &amp;quot;      Настройка ACL...&amp;quot;
    setfacl -R -m d:g:&amp;quot;$USE_GROUP&amp;quot;:rwx &amp;quot;$SYNC_DIR&amp;quot; 2&amp;gt;/dev/null || true
    setfacl -R -m g:&amp;quot;$USE_GROUP&amp;quot;:rwx &amp;quot;$SYNC_DIR&amp;quot; 2&amp;gt;/dev/null || true
    
    echo &amp;quot;      ✓ Права настроены (владелец: $SYNC_USER, группа: $USE_GROUP)&amp;quot;
}

# Ищем все директории с .sync (исключаем служебные директории Resilio Sync)
SYNC_DIRS=$(find /home/&amp;quot;$SYNC_USER&amp;quot; -name &amp;quot;.sync&amp;quot; -type d 2&amp;gt;/dev/null | \
    grep -v &amp;quot;/\.config/resilio-sync&amp;quot; | \
    grep -v &amp;quot;/\.SyncUser&amp;quot; | \
    grep -v &amp;quot;/License/&amp;quot; | \
    xargs -I {} dirname {} | \
    sort -u)

# Также проверяем системные директории (если есть доступ)
if [ -d &amp;quot;/var/lib/resilio-sync&amp;quot; ]; then
    # Можно добавить логику для поиска системных директорий, если нужно
    # Пока пропускаем, так как они обычно требуют специальной настройки
    true
fi

# Подсчитываем количество найденных директорий
SYNC_COUNT=0
if [ -n &amp;quot;$SYNC_DIRS&amp;quot; ]; then
    SYNC_COUNT=$(echo &amp;quot;$SYNC_DIRS&amp;quot; | grep -v &amp;#039;^$&amp;#039; | wc -l)
fi

if [ &amp;quot;$SYNC_COUNT&amp;quot; -eq 0 ]; then
    echo &amp;quot;   ⚠ Не найдено синхронизируемых директорий&amp;quot;
    echo &amp;quot;   Проверьте, что Resilio Sync запущен и синхронизирует папки&amp;quot;
else
    echo &amp;quot;   Найдено директорий: $SYNC_COUNT&amp;quot;
    echo &amp;quot;&amp;quot;
    
    # Обрабатываем каждую директорию
    COUNTER=1
    while IFS= read -r SYNC_DIR; do
        if [ -n &amp;quot;$SYNC_DIR&amp;quot; ] &amp;amp;&amp;amp; [ -d &amp;quot;$SYNC_DIR&amp;quot; ]; then
            echo &amp;quot;   [$COUNTER/$SYNC_COUNT] $SYNC_DIR&amp;quot;
            setup_directory_permissions &amp;quot;$SYNC_DIR&amp;quot;
            echo &amp;quot;&amp;quot;
            COUNTER=$((COUNTER + 1))
        fi
    done &amp;lt;&amp;lt;&amp;lt; &amp;quot;$SYNC_DIRS&amp;quot;
fi

# 6. Создаём .syncignore файлы в директориях с .git
echo &amp;quot;&amp;quot;
echo &amp;quot;6. Создание .syncignore файлов в директориях с .git...&amp;quot;

SYNCIGNORE_COUNT=0
if [ -n &amp;quot;$SYNC_DIRS&amp;quot; ] &amp;amp;&amp;amp; [ &amp;quot;$SYNC_COUNT&amp;quot; -gt 0 ]; then
    while IFS= read -r SYNC_DIR; do
        if [ -n &amp;quot;$SYNC_DIR&amp;quot; ] &amp;amp;&amp;amp; [ -d &amp;quot;$SYNC_DIR&amp;quot; ] &amp;amp;&amp;amp; [ -d &amp;quot;$SYNC_DIR/.git&amp;quot; ]; then
            SYNCIGNORE_FILE=&amp;quot;$SYNC_DIR/.syncignore&amp;quot;
            
            # Создаём или обновляем .syncignore
            if [ ! -f &amp;quot;$SYNCIGNORE_FILE&amp;quot; ] || ! grep -q &amp;quot;\.git/&amp;quot; &amp;quot;$SYNCIGNORE_FILE&amp;quot; 2&amp;gt;/dev/null; then
                {
                    echo &amp;quot;# Исключить .git из синхронизации Resilio Sync&amp;quot;
                    echo &amp;quot;# Git репозиторий должен синхронизироваться через git, а не через файловую синхронизацию&amp;quot;
                    echo &amp;quot;.git/&amp;quot;
                    echo &amp;quot;.gitignore&amp;quot;
                    echo &amp;quot;*.git&amp;quot;
                } &amp;gt;&amp;gt; &amp;quot;$SYNCIGNORE_FILE&amp;quot;
                
                chown &amp;quot;$SYNC_USER:$USE_GROUP&amp;quot; &amp;quot;$SYNCIGNORE_FILE&amp;quot; 2&amp;gt;/dev/null || true
                chmod 644 &amp;quot;$SYNCIGNORE_FILE&amp;quot;
                
                echo &amp;quot;   ✓ Создан/обновлён: $SYNCIGNORE_FILE&amp;quot;
                SYNCIGNORE_COUNT=$((SYNCIGNORE_COUNT + 1))
            else
                echo &amp;quot;   ℹ Уже существует: $SYNCIGNORE_FILE&amp;quot;
            fi
        fi
    done &amp;lt;&amp;lt;&amp;lt; &amp;quot;$SYNC_DIRS&amp;quot;
    
    if [ &amp;quot;$SYNCIGNORE_COUNT&amp;quot; -eq 0 ]; then
        echo &amp;quot;   ℹ Не найдено директорий с .git для создания .syncignore&amp;quot;
    fi
else
    echo &amp;quot;   ℹ Нет синхронизируемых директорий для проверки&amp;quot;
fi

echo &amp;quot;&amp;quot;
echo &amp;quot;=== Настройка завершена ===&amp;quot;
echo &amp;quot;&amp;quot;
echo &amp;quot;Обработано директорий: $SYNC_COUNT&amp;quot;
if [ &amp;quot;$SYNCIGNORE_COUNT&amp;quot; -gt 0 ]; then
    echo &amp;quot;Создано/обновлено .syncignore файлов: $SYNCIGNORE_COUNT&amp;quot;
fi
echo &amp;quot;&amp;quot;
echo &amp;quot;Следующие шаги:&amp;quot;
echo &amp;quot;1. Перезапустите Resilio Sync:&amp;quot;
echo &amp;quot;   sudo systemctl restart resilio-sync&amp;quot;
echo &amp;quot;   # Или для пользовательского экземпляра:&amp;quot;
echo &amp;quot;   systemctl --user restart resilio-sync&amp;quot;
echo &amp;quot;&amp;quot;
echo &amp;quot;2. Выйдите и войдите в систему заново, чтобы изменения группы вступили в силу&amp;quot;
echo &amp;quot;&amp;quot;
echo &amp;quot;3. Проверьте права доступа в одной из директорий:&amp;quot;
if [ -n &amp;quot;$SYNC_DIRS&amp;quot; ] &amp;amp;&amp;amp; [ &amp;quot;$SYNC_COUNT&amp;quot; -gt 0 ]; then
    FIRST_DIR=$(echo &amp;quot;$SYNC_DIRS&amp;quot; | head -1)
    if [ -n &amp;quot;$FIRST_DIR&amp;quot; ] &amp;amp;&amp;amp; [ -d &amp;quot;$FIRST_DIR&amp;quot; ]; then
        echo &amp;quot;   ls -la \&amp;quot;$FIRST_DIR\&amp;quot; | head -5&amp;quot;
        if [ -d &amp;quot;$FIRST_DIR/.git&amp;quot; ]; then
            echo &amp;quot;   ls -la \&amp;quot;$FIRST_DIR/.git/\&amp;quot; | head -5&amp;quot;
        fi
    fi
fi
echo &amp;quot;&amp;quot;
echo &amp;quot;4. Если проблемы остались, исправьте права вручную для конкретной директории:&amp;quot;
echo &amp;quot;   sudo chown -R $SYNC_USER:$USE_GROUP &amp;lt;путь_к_директории&amp;gt;&amp;quot;
echo &amp;quot;&amp;quot;
if [ -n &amp;quot;$SYNC_DIRS&amp;quot; ] &amp;amp;&amp;amp; [ &amp;quot;$SYNC_COUNT&amp;quot; -gt 0 ]; then
    echo &amp;quot;5. Список всех обработанных директорий:&amp;quot;
    while IFS= read -r SYNC_DIR; do
        if [ -n &amp;quot;$SYNC_DIR&amp;quot; ] &amp;amp;&amp;amp; [ -d &amp;quot;$SYNC_DIR&amp;quot; ]; then
            echo &amp;quot;   - $SYNC_DIR&amp;quot;
        fi
    done &amp;lt;&amp;lt;&amp;lt; &amp;quot;$SYNC_DIRS&amp;quot;
fi&lt;/code&gt;&lt;/pre&gt;</description>
</item>


</channel>
</rss>