Froggy-BLCКнижная Система Сайта


Автоматический маппинг диска DATA для всех пользователей (bash)

СпойлерСначала диску зададим права:
# chmod -R 777 /run/media/DATA
# chown -R root:users /run/media/DATA
# chmod -R g+ws /run/media/DATA

Далее, в /etc/fstab задайте для этого диска параметр noexec.

KDE Baloo не индексирует файлы, которые расположены на других файловых системах за пределами домашнего каталога, в частности, если каталоги Загрузки, Видео и Музыка находятся на внешнем жёстком диске, а из домашнего каталога на них указывают символические ссылки (симлинки). Предлагаемое решение состоит в том, чтобы заменить символические ссылки на Mount-mapping. Баш-портянка, приведённая ниже, автоматизирует этот процесс.

 

Вступление

Автор метода — ChatGPT, исправлено мной.

Диск DATA должен быть примонтирован в fstab.

В первую очередь — нужно заменить симлинки, которые вы делали, на обычные пустые папки Загрузки, Видео и Музыка.

Выдохнули?? — ПРИСТУПИМ!

 

Создание сценария

Создаём файл /usr/local/bin/bind-mount-downloads.sh следующего содержания:

#!/usr/bin/env bash


USER_NAME="$PAM_USER"
USER_ID=$(id -u "$USER_NAME")

# Фильтр: монтировать только если UID >= 1000 (обычные пользователи)
if [ "$USER_ID" -lt 1000 ]; then
    echo "Skip bind mount for system user UID=$USER_ID"
    exit 0
fi


# Получаем домашнюю папку пользователя по UID
HOME_DIR=$(getent passwd "$USER_ID" | cut -d: -f6)

# Список пар: Исходник → Назначение (только имя папки)
FOLDERS=("Загрузки:Загрузки" "Музыка:Музыка" "Видео:Видео")

# Корень исходных папок
SOURCE_ROOT="/run/media/DATA"

for entry in "${FOLDERS[@]}"; do
    SRC_NAME="${entry%%:*}"
    DEST_NAME="${entry##*:}"

    SOURCE="$SOURCE_ROOT/$SRC_NAME"
    TARGET="$HOME_DIR/$DEST_NAME"


    # Пропускаем итерацию, если источник не существует
    if [ ! -d "$SOURCE" ]; then
        continue
    fi

    # Пропускаем итерацию, если цель не существует
    if [ ! -d "$TARGET" ]; then
        continue
    fi

    # Проверяем mountpoint
    mountpoint -q "$TARGET" && continue

    echo "Bind-mount: $SOURCE -> $TARGET"
    mount --bind "$SOURCE" "$TARGET"
done

 

sudo chmod +x /usr/local/bin/bind-mount-downloads.sh

 

Подключение PAM-модуля

Ищем файл

  1. /etc/pam.d/common-session ИЛИ
  2. /etc/pam.d/common-session-noninteractive (На некоторых дистрах) ИЛИ
  3. /etc/pam.d/sshd ИЛИ
  4. /etc/pam.d/system-login (На Арче и подобных)

В конец этого файла добавляем строку:

session optional pam_exec.so /usr/local/bin/bind-mount-downloads.sh

 

ПОЗДРАВЛЯЮ!!! ВЫ РАСКУКОЖИЛИ КДЕ-БАЛУ!!!

КОММЕНТАРИИ



Ваш комментарий:

Интервал отправки = 3 Минуты.

2500 Осталось.
CAPTCHA🔄