1

Вот моя дилемма: в сценарии оболочки, который я использую для установки или настройки OpenVPN и / или просто файлов конфигурации клиента, я расширил сценарий, включив в него установку Google Authenticator.

Сценарий создает файл pam.d для этого дополнения, используя echo ...

echo "auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn account required  pam_permit.so">> /etc/pam.d/openvpn

После того, как все установлено и файл создан, файл pam.d, приведенный выше, конечно же, создается пользователем вместо выражения, как показано ниже.

echo "auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/root user=openvpn account required pam_permit.so">> /etc/pam.d/openvpn

Есть ли способ сохранить выражение как ${USER} в файле?

Это поможет решить эту проблему после установки и изменить secret=/etc/google-auth/root обратно на secret=/etc/google-auth/${USER}

1 ответ1

1

Как отмечается в комментарии Камиля, если вы хотите включить буквальный текст $ {USER}, вы можете использовать апострофы вместо кавычек.

echo "auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn account required  pam_permit.so">> /etc/pam.d/openvpn

приведет к расширению оболочки $ {USER}, для которой может быть задано значение root. (Если это нежелательно, вы можете попробовать сохранить эту переменную с помощью функции sudo env_reset или просто установить желаемое значение в пользовательскую переменную, которую sudo не будет перезаписывать.)

На самом деле, вы получите тот же эффект без кавычек.

echo auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn account required  pam_permit.so>> /etc/pam.d/openvpn

Другой вариант, тем не менее, состоит в том, чтобы использовать апострофы вместо того, где у вас были кавычки, следующим образом:

echo 'auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/${USER} user=openvpn account required  pam_permit.so'>> /etc/pam.d/openvpn

Другой вариант - просто убежать от знака доллара.

echo auth requisite /lib/security/pam_google_authenticator.so secret=/etc/google-auth/\${USER} user=openvpn account required pam_permit.so>> /etc/pam.d/openvpn

Эта обратная косая черта перед знаком доллара заставляет оболочку интерпретировать знак доллара как обычный символ, а не как начало имени переменной.

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .