В вашей конфигурации sudo включена опция tty_tickets
. Это значение по умолчанию.Эта опция сообщает sudo, что если вы аутентифицируетесь, вводя пароль на одном терминале, то это только подтверждает использование sudo на этом терминале.
Когда вы добавили эти перенаправления, sudo потерял соединение с вашим терминалом. (Я думаю, что sudo использует параметр pam PAM_TTY
, чтобы определить, на каком терминале он работает; я не знаю, как это определяется.) В случае сомнений sudo все время спрашивает.
Параметр tty_tickets
полезен только в том случае, если вы могли оставить сеанс автоматического входа в систему где-нибудь на терминале, где случайный прохожий может затем попытаться запустить sudo
для эскалации ваша учетная запись для root. Он не оказывает никакого воздействия даже на умеренно изощренных злоумышленников, которые могут внедрить вредоносное ПО в вашу учетную запись и взломать ее при следующем запуске sudo. Так что реальной пользы от этого варианта нет, это только помеха.
Чтобы отключить эту опцию, запустите visudo
для редактирования конфигурации sudo и добавьте строку
Defaults !tty_tickets
Если вам нужно иметь одно или несколько чисел (вы сказали число с ), тогда вам нужно [[:digit:]][[:digit:]]
для двух, [[:digit:]][[:digit:]][[:digit:]]
для трех и т. д.
if [[ $var == "R-"${PROJ_NM}"-"[[:digit:]][[:digit:]]"-"* ]] ; then
echo "Naming convention is in correct format"
else
echo "Not in correct format"
fi
Но можно немного упростить цитаты:
if [[ $var == "R-${PROJ_NM}-"[[:digit:]][[:digit:]]"-"* ]] ; then
echo "Naming convention is in correct format"
else
echo "Not in correct format"
fi
Кроме того, в более новых версиях bash можно использовать регулярные выражения:
if [[ $var =~ ^R-${PROJ_NM}-[0-9]+- ]] ; then
echo "Naming convention is in correct format"
else
echo "Not in correct format"
fi