Кубический пользовательский ISO, который запускает сценарий оболочки при запуске

Я пытаюсь настроить Ubuntu ISO с помощью Cubic для запуска пары сценариев оболочки, когда пользователь Live входит в систему. Я следил за кучей руководств с множеством инструкций, и в конечном итоге у меня в какой-то момент они заработали. К сожалению, я не могу воссоздать настройку и, что еще хуже, я удалил конкретный ISO, думая, что он мне не понадобится. До сих пор я переместил свои сценарии оболочки в каталог / etc / skel через среду chroot в Cubic и изменил crontab, добавив команду @reboot. После этого я позволил Cubic создать мой ISO и записал его на USB. Я загрузил его, но понял, что скрипты не были выполнены. Я проверил домашний каталог (поскольку там должно находиться содержимое / etc / skel) и все мои скрипты присутствовали. Как я могу заставить это работать?

1
задан 7 June 2021 в 19:06

1 ответ

Вместо использования chron можно использовать сценарий автозапуска для подключения к удаленному компьютеру.

Необходимо настроить проверку подлинности на основе ключей на удаленном компьютере, чтобы не требовалось никакого взаимодействия с пользователем.

В приведенных ниже инструкциях при необходимости замените следующие значения.

  • LOCAL - IP-адрес или имя хоста вашего локального компьютера (где вы используете Cubic)
  • REMOTE - IP-адрес или имя хоста удаленного компьютера
  • n00dles - имя пользователя на локальном компьютере и/или удаленном компьютере
  • REMOTE_LOCATION_PATH - путь к каталогу, который вы хотите смонтировать на удаленном компьютере
  1. Сгенерировать открытые и закрытые ключи для вашего локального компьютера.

    Эти ключи будут использоваться в пользовательском ISO- файле. Помните о последствиях для безопасности. Любой, кто получит доступ к вашему настроенному USB, сможет войти в систему на вашем удаленном компьютере.

    Выполните следующие команды на локальном компьютере (например, не в Cubic).

    кд ~
    ssh-keygen -т РСА
    

    Примите значения по умолчанию. Вывод будет выглядеть примерно так.

     Генерация пары ключей public/private rsa.
    Введите файл, в котором нужно сохранить ключ (/home/n00dles/.ssh/id_rsa): 
    Введите парольную фразу (пусто для без парольной фразы):
    Введите ту же парольную фразу еще раз:
    Ваша идентификация была сохранена в /home/n00dles/.ssh/id_rsa
    Ваш открытый ключ сохранен в /home/n00dles/.ssh/id_rsa.pub
    Ключевой отпечаток пальца:
    SHA256:G48dcTOXpUhzWxuzwn8pgdOTP9WmlLtXBCJkkiSEywk n00dles@LOCAL
    Случайное изображение ключа:
    +---[RSA 3072]----+
    | xxxxxx x xxx|
    | x x xxxxxxxxxx|
    | x x xxxxxxx|
    | x xxxxxx|
    | x x x xxxx|
    | x x xxx|
    | x x x x x|
    | х |
    | х |
    +----[SHA256]-----+
    
  2. Настройка удаленного входа в систему.

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

    ssh-copy-id -i .ssh/id_rsa.паб user@host
    

    Создайте новый файл known_hosts, который будет скопирован в настроенный ISO-образ. Это позволит среде Live подключаться к удаленному компьютеру без запроса подтверждения пользователя.

    Временно создайте резервную копию текущего файла known_hosts. Не забудьте при необходимости заменить n00dles@REMOTE и REMOTE_LOCATION_PATH.

    mv ~/.ssh/known_hosts ~/.ssh/known_hosts.original
    
    # Войдите на удаленный компьютер, чтобы автоматически создать новый файл 'known_hosts'.
    sudo mkdir /mnt/remote
    sshfs n00dles@REMOTE.local:/REMOTE_LOCATION_PATH/ /mnt/remote/
    
    Отпечаток ключа ECDSA — SHA256:XXXX.
    Вы уверены, что хотите продолжить подключение (да/нет/[отпечаток пальца])? да
    
    # Размонтируйте удаленный компьютер.
    fusermount -u /mnt/remote
    sudo rmdir /mnt/remote
    
    # Сохраните новый файл known_hosts.
    mv ~/.ssh/known_hosts ~/
    
    # Возврат исходного файла known_hosts.
    mv ~/.ssh/known_hosts.original ~/.ssh/known_hosts
    
  3. Настройте ISO с помощью Cubic.

    Запустите Cubic и выполните следующие действия на странице Терминал.

    Убедитесь, что установлен sshfs, чтобы мы могли подключаться к удаленным машинам.

    APT установка sshfs
    

    Скопируйте ключи и новый файл known_hosts в пользовательскую ОС.

    cd /etc/skel
    mkdir .ssh
    chmod u=rwx,g=,o= .ssh
    cd .ssh
    

    Откройте файловый браузер, например Nautilus, и перейдите в локальный каталог ~/.ssh.

    Выберите id_rsa и id_rsa.pub и перетащите их в окно Cubic, чтобы скопировать их в текущий каталог,/etc/skel.ssh.

    Откройте файловый браузер, например Nautilus, и перейдите в домашний каталог.

    Выберите новый файл known_hosts и перетащите его в окно Cubic, чтобы скопировать в текущий каталог,/etc/skel/.ssh.

    Убедитесь, что для этих файлов правильно установлены разрешения; это очень важно. В Cubic выполните следующее:

    chmod u=rw,g=,o= id_rsa
    chmod u=rw,g=r,o=r id_rsa.pub
    chmod u=rw,g=r,o=r known_hosts
    
    ls -la
    
    -rw------- 1 корень 2602 7 июня 09:35 id_rsa
    -rw-r--r-- 1 корень корня 566 июня 7 09:35 id_rsa.pub
    -rw-r--r-- 1 корень корня 222 июня 7 09:35 known_hosts
    

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

    mkdir /mnt/удаленный
    chmod a+rw /mnt/remote
    ln -s /mnt/remote /etc/skel/Remote
    
  4. Создайте сценарий для подключения удаленного расположения.

    нано /опт/mount_remote.sh
    

    Добавьте в сценарий следующее. Не забудьте при необходимости заменить n00dles@REMOTE и REMOTE_LOCATION_PATH.

    #!/bin/bash
    # Монтирует удаленное местоположение.
    # Для монтирования: sshfs n00dles@REMOTE.local:/REMOTE_LOCATION_PATH/ /mnt/remote
    # Для размонтирования использования: fusermount -u /mnt/remote
    for i in {1..5}; делать
     если точка монтирования /mnt/remote; тогда
     echo "n00dles@REMOTE.local:/REMOTE_LOCATION_PATH смонтирован."
     ломать
     еще
     # Попытка подключить удаленное местоположение к /mnt/remote
     echo "Попытка # $i для монтирования n00dles@REMOTE.local:/REMOTE_LOCATION_PATH."
     $i сна
     SSHFS n00dles@REMOTE.local:/REMOTE_LOCATION_PATH/ /mnt/remote
     fi
    Договорились
    если точка монтирования /mnt/remote; тогда
     echo "Успешно смонтирован n00dles@REMOTE.local:/REMOTE_LOCATION_PATH."
    еще
     echo "Не удается смонтировать n00dles@REMOTE.local:/REMOTE_LOCATION_PATH."
    fi
    

    Введите CTRLX, Y, Enter, чтобы сохранить файл.

    При необходимости в сценарии можно использовать переменные среды, такие как $HOME.

    Сделайте скрипт исполняемым.

    chmod +x /opt/mount_remote.sh
    
  5. Создайте файл автозапуска, который будет запускаться для каждого пользователя после входа в систему.

    нано ~/mount_remote.рабочий стол
    

    Для XUbuntu 20.04+ или более ранних версий Ubuntu добавьте в файл следующее.

      [Запись на рабочем столе]
    Кодировка=UTF-8
    Версия=0.9.4
    Тип=Приложение
    Имя=mount_remote
    Comment=Монтировать удаленное местоположение
    Exec=/opt/mount_remote.sh
    OnlyShowIn=XFCE;
    RunHook=0
    StartupNotify=false
    Терминал=false
    Скрыто=ложь
    

    Для Ubuntu 20.04+ добавьте в файл следующее.

      [Запись на рабочем столе]
    Тип=Приложение
    Exec=/opt/mount_remote.sh
    Скрыто=ложь
    NoDisplay=false
    X-GNOME-Autostart-enabled=true
    Имя[en_US]=Mount Remote
    Name=Mount Remote
    Комментарий[en_US]=Монтировать удаленное местоположение
    Comment=Монтировать удаленное местоположение
    

    Для сохранения файла введите CTRLX, Y, Enter.

    Вы можете добавить Terminal=true в файл *.desktop для отладки, но удаленное местоположение будет немедленно отключено после автоматического закрытия окна терминала.

  6. Переместите файл автозапуска в правильное расположение. У вас есть два варианта.

    • Если вы хотите использовать глобальный файл автозапуска, переместите его в /etc/xdg/autostart.

      mv ~/mount_remote.рабочий стол /etc/xdg/автозапуск
      
    • Если вы хотите, чтобы у каждого пользователя была своя копия файла автозапуска, переместите его в /etc/skel/.config/autostart. (Пользователи смогут удалить этот файл, потому что он будет помещен в их домашнюю папку).

      mkdir -p /etc/skel/.config/autostart
      mv ~/mount_remote.desktop /etc/skel/.config/autostart
      
  7. Продолжайте настраивать ОС и создавайте новый ISO.

  8. Testing

    Если вместо IP-адреса используется имя удаленного узла, при тестировании сгенерированного ISO-образа убедитесь, что разрешение DNS работает. В VirtualBox я обычно настраиваю сеть на использование «Адаптер моста» вместо адаптера «NAT» по умолчанию.

1
ответ дан 28 July 2021 в 11:31

Другие вопросы по тегам:

Похожие вопросы: