Запустите скрипт запуска от имени root на Gentoo/KDE.

Вопрос или проблема

Существует проблема автоматического монтирования раздела после неожиданного завершения работы. Скрипт запуска проверяет, смонтирован ли раздел ntfs, и монтирует его, если нет.

if grep -qs '/MountedDisk' /proc/mounts; 
    then echo "MountedDisk смонтирован."; 
else
    echo -e "MountedDisk не смонтирован. \n Проверка раздела и монтирование..."
    ntfsfix --clear-dirty /dev/sdc1;
    mount -t ntfs3 /dev/sdc1 /MountedDisk/;
fi

Файл со скриптом размещен в /home/Username/.config/autostart/ и в настройках автозапуска Plasma6 установлен как исполняемый.

Однако его можно запустить только от имени root — как сделать так, чтобы он запускался с правами root?

Установка Sudo на Gentoo

Я добавляю этот ответ по комментарию, как просил автор вопроса. Делая это, вы превратите вашу установку Gentoo в систему, похожую на Debian/Ubuntu, так как обе Debian и Ubuntu используют sudo вместо фактической учетной записи root для повышения безопасности системы.

  1. emerge -av app-admin/sudo
  2. su -
  3. EDITOR="/bin/nano" visudo
  4. Найдите следующее:
    ##
    ## Спецификация прав пользователя
    ##
    root ALL=(ALL) ALL

    ## Раскомментируйте, чтобы разрешить членам группы wheel выполнять любые команды
    # %wheel ALL=(ALL) ALL

    ## То же самое без пароля
    # %wheel ALL=(ALL) NOPASSWD: ALL

    ## Раскомментируйте, чтобы разрешить членам группы sudo выполнять любые команды
    # %sudo   ALL=(ALL) ALL

Хук post-install для emerge создает группу wheel по умолчанию, поэтому раскомментируйте строку выше, начинающуюся с %wheel. Мое личное предпочтение — выбрать выполнение любой команды С ПАРОЛЕМ, но подойдет и любой другой вариант.

В качестве последнего шага нам нужно добавить нашего пользователя в группу wheel с помощью: useradd -aG wheel codegust, где codegust предполагается как ваше имя пользователя. См. также: Gentoo Wiki: Sudo

Ответ или решение

Запуск скрипта при старте системы с правами root на Gentoo/KDE

Если ваша задача заключается в автоматическом монтировании NTFS-раздела после неожиданного завершения работы системы, то важно убедиться, что ваш скрипт выполняется с правами суперпользователя. В данном ответе мы подробно разберем, как настроить запуск вашего скрипта при старте системы с правами root на Gentoo с окружением рабочего стола KDE Plasma.

1. Правильное размещение скрипта

Сначала убедитесь, что ваш скрипт, который выполняет проверку и монтирование, корректно расположен в каталоге для автозапуска. Вы указали, что он находится в (/home/Username/.config/autostart/). Проверьте, чтобы файл имел расширение .desktop, так как именно файлы с таким расширением распознаются системой для автозапуска.

Пример содержания файла mount_disk.desktop может выглядеть следующим образом:

[Desktop Entry]
Type=Application
Exec=sudo /path/to/your/script.sh
Hidden=false
NoDisplay=false
X-GNOME-Autostart-enabled=true
Name=Mount NTFS Partition

Замените /path/to/your/script.sh на фактический путь к вашему скрипту.

2. Использование sudo

Чтобы вашему автозапускаемому скрипту были доступны права root, вы можете установить sudo, если он у вас ещё не установлен.

Установка sudo
  1. Откройте терминал.

  2. Установите sudo, выполнив команду:

    emerge -av app-admin/sudo
  3. Перейдите под учетную запись root:

    su -
  4. Откройте файл конфигурации visudo для редактирования настроек sudo:

    EDITOR="/bin/nano" visudo
  5. Найдите и раскомментируйте строку, связанную с группой wheel:

    %wheel ALL=(ALL) ALL

    Лично я рекомендую оставить вариант с запросом пароля для обеспечения дополнительной безопасности.

  6. Добавьте вашего пользователя в группу wheel, выполнив команду:

    usermod -aG wheel username

    Замените username на ваш фактический логин.

3. Настройка скрипта

Теперь откройте ваш скрипт (например, script.sh) и убедитесь, что он имеет необходимые права на выполнение и корректный синтаксис. Также убедитесь, что в начале скрипта находится шебанг (например, #!/bin/bash).

#!/bin/bash

if grep -qs '/MountedDisk' /proc/mounts; then 
    echo "MountedDisk is mounted."; 
else 
    echo -e "MountedDisk is not mounted.\n Checking the partition and mounting it..."; 
    ntfsfix --clear-dirty /dev/sdc1; 
    mount -t ntfs3 /dev/sdc1 /MountedDisk/; 
fi

Не забудьте установить для вашего скрипта права на выполнение:

chmod +x /path/to/your/script.sh

4. Тестирование

Теперь можно протестировать его запуск. Перезагрузите систему, и скрипт должен выполниться с правами суперпользователя, автоматически проверяя и монтируя раздел, если это необходимо.

Заключение

Следуя данным шагам, вы сможете убедиться, что ваш скрипт работает успешно при старте системы с нужными правами. Это поможет решить вашу проблему с автоматическим монтированием NTFS-раздела после неожиданных перезагрузок системы. Если у вас возникнут дополнительные вопросы или потребуется уточнение, не стесняйтесь обращаться за помощью.

Оцените материал
Добавить комментарий

Капча загружается...