Забавно. Все приводимые заплатки выглядят внушительно (складывается ощущение, что проблемы решены), а на самом деле бесполезны.1) Теперь открытые пароли хранятся не в /tmp/<число>, а в /tmp/<очень случайная строка символов>, но суть от этого не меняется √ некоторое время файл содержащий открытые пароли доступен не чтение всем пользователям! Нет ничего сложного в том, чтобы следить за всеми вновь создаваемыми файлами во временной директории. Соответственно злоумышленнику нужно успеть прочитать файл с паролями после выполнения команды cat ${FILE} | gpg -d -q > ${TMP_FILE} и до выполнения chmod 600 ${TMP_FILE}. А это не так маловероятно, как может показаться на первый взгляд. Каждая из этих команд √ процесс, а первая и не один (правда, это неважно). Процесс создается относительно медленно. К тому же, атакующая программа может повысить свои шансы fork▓нувшись раз этак 10, а то и побольше.
ИТОГО. Файл с открытыми паролями должен располагаться в недоступном для остальных пользователей месте, а не в директории /tmp. Вопрос со ╚злым╩ root▓ом остается открытым.
2) Команда cat /dev/urandom | tr -cd A-HJ-NP-Za-km-z1-9 | head -c1000 > ${TMP_FILE}, по сути, ничем не отличается от cat /dev/null > /tmp/$$.
ИТОГО. Для чего создана утилита shred?