Upstart Jobs и сценарии init.d не запускаются

Я работаю над браузерным дистрибутивом на основе Ubuntu, который должен запускаться вживую. Частью решения безопасности является использование sdmem, когда он выключается. sdmem стирает доступную оперативную память и находится в пакете secure-delete в репозиториях Ubuntu. sdmem не вызывается в сценариях ниже.

У меня было такое решение, работающее для другого проекта, настроенного таким же образом, поэтому я знаю, что оно работает. Но иногда в другом проекте, посвященном выключению и перезапуску, я не всегда выводил стандарт, который дает sdmem при стирании. (Обычно sdmem выплевывает кучу звездочек.) Я отключил графический плимут, чтобы я мог посмотреть на результат.

Вот моя информация о скрипте:

internet@linux-surfer /etc/init.d $ cat dram.sh 
#!/bin/sh

# give this script permissions:
# chmod +x sdmem.sh

# sdmem  will delete  data which may lie still in your memory (RAM) 
# The secure data deletion process of sdmem goes like this:
# *      1 pass with 0x00
# *      5 random passes. /dev/urandom is used for a secure RNG if available.
# *      27 passes with special values defined by Peter Gutmann.
# *      5 random passes. /dev/urandom is used for a secure RNG if available.

sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv
sdmem -fllv

# this script need to be added to shutdown this way:
#sudo cp sdmem.sh /etc/init.d
#sudo ln -s /etc/init.d/sdmem.sh /etc/rc0.d/K11dram.sh
#sudo ln -s /etc/init.d/sdmem.sh /etc/rc6.d/K11dram.sh

Разрешения:

internet@linux-surfer /etc/init.d $ ls dram.sh -l
-rwxr-xr-x 1 internet internet 743 2012-02-18 00:31 dram.sh

Upstart скрипт:

internet@linux-surfer /etc/init $ cat dram.conf 
start on runlevel [06]

script
    sdmem -fllv
end script
internet@linux-surfer /etc/init $ 

Разрешения:

internet@linux-surfer /etc/init $ ls -l dram.conf 
-rw-r--r-- 1 root root 55 2012-02-18 01:35 dram.conf
0
задан 18 February 2012 в 11:49

1 ответ

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

start on runlevel [06]

Событие уровня запуска ничего не задерживает, так что у вас есть гонка ... событие является просто сигналом во времени, и поэтому ваш sdmem запускается, как только завершается последовательность выключения в /etc/rc0.d/ * начинает работать, и они оба работают параллельно.

Если вы хотите отложить вещи, у вас есть два варианта. Либо a)

task
start on starting rc RUNLEVEL=[06]

Это задержит полное отключение даже от запуска, пока ваш sdmem не выйдет. Обратите внимание, что там важна «задача», так как задание не будет блокировать другие задания до выхода из sdmem.

b)

task
start on some-other-late-hook-event

И затем отредактируйте любой скрипт в /etc/rc0.d/* (или /etc/rc6.d/*), который вы хотите, чтобы сгенерировать это событие и заставить его делать [ 119]

initctl emit some-other-late-hook-event

Этот вызов в любом скрипте, в котором вы его хотите, будет блокироваться до выхода из sdmem. Снова отметьте «задачу».

0
ответ дан 18 February 2012 в 11:49

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

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