Во-первых, убедитесь, что вы set -o errexit -o nounset
находитесь в верхней части скрипта. Затем выполните простую проверку, пока не получите хотя бы действительный пароль:
while true
do
read -s -p "Enter the MySQL password: " BASEPASS
mysql -u "$BASEUSER" "-p${BASEPASS}" 'SELECT 1' && break
done
Кроме того, Use More Quotes™ !
Конфигурация PAM для su
обычно находится в /etc/pam.d/su
и может ссылаться на другие файлы в том же каталоге с помощью директивы @include
. В какой-то момент будет строка, начинающаяся с auth
и упоминающая pam_unix.so
. В старых дистрибутивах он может включать параметр nullok
, разрешающий использование пустых паролей; современные дистрибутивы обычно используют nullok_secure
, что позволяет использовать пустые пароли только тогда, когда «аутентификация» происходит с использованием одного из устройств TTY, перечисленных в /etc/securetty
. Также может различаться реализация опции nullok
.
Чтобы разрешить su
однозначно разрешать доступ к определенной учетной записи без запроса пароля, вы можете добавить строку, подобную этой:
auth sufficient pam_succeed_if.so quiet_fail user = potato
(примечание:пробелы между user
, =
и potato
важны!)
Чтобы вступить в силу до pam_unix.so
и только с командой su
, строка должна быть помещена в/etc/pam.d/su
перед любыми директивами @include
или другими строками, начинающимися с auth
.
Однако,создание такого ярлыка через конфигурацию PAM su
несколько рискованно без предварительного понимания того, как конфигурация PAM должна работать в вашем неопределенном дистрибутиве Linux. Тщательно протестируйте перед использованием.