Могу ли я сделать `sudo` следовать моему пути через CLI?

Остановить автоматическую перезагрузку после перезагрузки компьютера

В настоящий момент отключены автоматические обновления для перезагрузки компьютера в 2 часа ночи, если для обновления требуется перезагрузка. Этот шаг остановит это поведение.

Шаг: отредактируйте файл /etc/apt/apt.conf.d/50unattended-upgrades

Внутри файла найдите строку:

unattended-Upgrade::Automatic-Reboot "true";

и сделайте так:

Unattended-Upgrade::Automatic-Reboot "false";

Создайте сценарий bash, чтобы проверить, требуется ли перезагрузка, и делать это, если необходимо

Скрипт ниже проверяет, существует ли файл reboot-required, и если это так, он немедленно перезагружает компьютер. Назовем этот файл reboot_if_needed.sh.

#!/bin/bash
if [ -f /var/run/reboot-required ]; then
        echo $(date) Sytem restart required by: $(cat /var/run/reboot-required.pkgs)
        /sbin/reboot now
fi

Сохраните этот файл как /opt/bin/reboot_if_needed.sh

Сделайте этот файл исполняемым:

sudo chmod + x /opt/bin/reboot_if_needed.sh

Шаг:

Когда сценарий запущен и файл var/run/reboot-required существует, он выведет текст, который будет записан в файл журнала /var/log/reboot_history.log. Затем система перезапустится.

Расписание reboot_if_needed.sh каждую ночь в 2:00 утра

Мы хотим запустить скрипт с правами администратора. Поэтому мы используем sudo. Откройте терминал, нажав Ctrl + Alt + T и введите:

sudo crontab -e

Эта команда откроет файл crontab для пользователя root, если он существует, или создайте пустой новый файл. Добавьте следующую строку в конец файла:

* 02 * * * `/opt/bin/reboot_if_needed.sh` >> /var/log/reboot_history.log

Если вы используете nano в качестве редактора текстовых файлов, выйдите из редактора, нажав Ctrl + X. Редактор предложит вам сохранить изменения. Нажмите Alt , а затем нажмите Enter, чтобы выбрать имя файла по умолчанию.

Пояснение

Строка, добавленная в crontab, заставит скрипт reboot_if_needed.sh запускаться каждую ночь в 2 часа ночи. [F19] перенаправляет вывод в файл /var/log/reboot_history.log. Этот файл будет создан в первый раз, когда crontab запускает скрипт.

См. Https://help.ubuntu.com/community/CronHowto о том, как использовать crontab

. Почему это работает?

Автоматически обновляется, по-видимому, планирует перезапуск с задержкой. Например:

sudo shutdown -r 02:00

Приведенная выше команда планирует перезапуск в 2 часа ночи.

Мы используем crontab, чтобы позаботиться о начале процесса перезапуска в 2 часа ночи вместо того, чтобы планировать его из . Таким образом, отключение не выполняется, как только запускается автоматическое обновление. Любой пользователь может перезагрузить компьютер.

Когда какой-либо пользователь перезагружает компьютер, файл /var/run/reboot-required, если он выходит, удаляется системой, так как перезагрузка больше не требуется.

Надеюсь, что это поможет

3
задан 8 March 2018 в 06:31

3 ответа

Ubuntu по умолчанию уже установлен secure_path:

~ sudo -l
Matching Defaults entries for muru on muru-1604:
    env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin    
User muru may run the following commands on muru-1604:
    (ALL : ALL) ALL

Нет опции командной строки, которая может переопределить secure_path, установленную в sudoers.

From man sudoers:

 secure_path   Path used for every command run from sudo.  If you don't
               trust the people running sudo to have a sane PATH
               environment variable you may want to use this.  Another use
               is if you want to have the “root path” be separate from the
               “user path”.  Users in the group specified by the
               exempt_group option are not affected by secure_path.  This
               option is not set by default.

Итак, либо установите exempt_group в sudoers, либо добавьте себя в эту группу или освободите себя от sudoers:

Defaults:rick !secure_path

( rick предположительно является вашим именем пользователя.)

6
ответ дан 22 May 2018 в 12:42
  • 1
    Defaults:rick !secure_path отлично работает! Да, мое имя rick. – WinEunuuchs2Unix 8 March 2018 в 06:58
  • 2
    Я думаю, что большинство пользователей не захотят использовать exempt_group для этого, так как пользователям из освобожденных групп также не требуется вводить свои пароли для запуска команд с помощью sudo. Хотя я не думаю, что неразумно упомянуть, что exempt_group - это возможный подход здесь, я рекомендую прямо указать это, и я бы рекомендовал, чтобы большинство людей этого не делали, если они также не хотят (и не думали о последствиях) этого эффекта , – Eliah Kagan 13 April 2018 в 22:38

Ubuntu по умолчанию уже установлен secure_path:

~ sudo -l Matching Defaults entries for muru on muru-1604: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User muru may run the following commands on muru-1604: (ALL : ALL) ALL

Нет опции командной строки, которая может переопределить secure_path, установленную в sudoers.

From man sudoers:

secure_path Path used for every command run from sudo. If you don't trust the people running sudo to have a sane PATH environment variable you may want to use this. Another use is if you want to have the “root path” be separate from the “user path”. Users in the group specified by the exempt_group option are not affected by secure_path. This option is not set by default.

Итак, либо установите exempt_group в sudoers, либо добавьте себя в эту группу или освободите себя от sudoers:

Defaults:rick !secure_path

( rick предположительно является вашим именем пользователя.)

6
ответ дан 17 July 2018 в 19:18

Ubuntu по умолчанию уже установлен secure_path:

~ sudo -l Matching Defaults entries for muru on muru-1604: env_reset, mail_badpass, secure_path=/usr/local/sbin\:/usr/local/bin\:/usr/sbin\:/usr/bin\:/sbin\:/bin\:/snap/bin User muru may run the following commands on muru-1604: (ALL : ALL) ALL

Нет опции командной строки, которая может переопределить secure_path, установленную в sudoers.

From man sudoers:

secure_path Path used for every command run from sudo. If you don't trust the people running sudo to have a sane PATH environment variable you may want to use this. Another use is if you want to have the “root path” be separate from the “user path”. Users in the group specified by the exempt_group option are not affected by secure_path. This option is not set by default.

Итак, либо установите exempt_group в sudoers, либо добавьте себя в эту группу или освободите себя от sudoers:

Defaults:rick !secure_path

( rick предположительно является вашим именем пользователя.)

6
ответ дан 23 July 2018 в 20:03

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

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