$RANDOM
доступен в ksh и в bash, но не в /bin/sh
. Значение представляет собой случайное число от 0 до 32768 и не подходит для использования в криптографии.
Чтение с /dev/random
генерирует поток случайных байтов, который подходит для криптографического использования. Поскольку это произвольные байты, потенциально включающие нулевые байты, вы не можете хранить их в переменной оболочки. Вы можете хранить $n
байт в файле с помощью
</dev/random dd ibs=1 count=$n >rnd
Вы можете использовать od
для преобразования этих байт в печатное представление с использованием восьмеричных или шестнадцатеричных значений. Если вывод покажется вам "странным", что ж, возможно, вам следует выбрать другие варианты od
.
Другим вариантом получения печатного представления является вызов uuencode
для получения Base64:
</dev/random dd ibs=1 count=$n | uuencode -m _ | sed -e '1d' -e '$d'
Учетные данные можно кэшировать в PAM.
Возможное решение требует, чтобы пользователи время от времени входили в сеть без -аутентификации и настраивали автоматический -вход на машинах в зоне офисной сети Wi-Fi/через Ethernet, чтобы учетные данные могли быть кэшированным.
ПС. Это также требует, чтобы в офисе службы поддержки была пара сетевых точек Ethernet без аутентификации -для отладки проблем.