umask не осуществляет права, он запрещает им. Взгляните на strace:
file:
open("newfile", O_WRONLY|O_CREAT|O_NOCTTY|O_NONBLOCK, 0666) = 3
directory:
mkdir("newdir", 0777) = 0
касание не просит права выполнения для файла (который не имел бы смысла).
Сумасшедшая идея по устранению неполадок: сделать honeypot /учет процессов бедняков.
Сделайте резервную копию /usr/bin/random
cp -p /usr/bin/random/random.bak
touch /tmp/who_is_calling_random.log ; chmod 622 /tmp/who_is_calling_random.log
Замените /usr/bin/random
на этот скрипт оболочки (обратите внимание, что вы можете использовать путь, отличный от /tmp, если нужно, но убедитесь, что он доступен для записи).
#!/bin/sh
echo "`date` $USER $$ $@" >> /tmp/who_is_calling_random.log
/usr/bin/random.bak "$@@"
chmod 755 /usr/bin/random
Перезагрузите систему.
Посмотрите, что собирается в журнале honeypot. Это должен быть журнал того, кто/что стоит за использованием случайной программы.
хвост -f /tmp/who_is_calling_random.log
Восстановление случайного
из резервной копии, сделанной на шаге #1.
Система перезагрузки.