Почему su запрашивает пароль при перенаправлении stdin? Как этого избежать?

Использованиеbash:

$ printf '%d00 hours ' $(<file)
100 hours 500 hours 1700 hours 1000 hours 800 hours 1600 hours

(без новой строки в конце вывода)

С более сложным форматированием:

$ printf '%02d:00 hours\n' $(<file)
01:00 hours
05:00 hours
17:00 hours
10:00 hours
08:00 hours
16:00 hours
2
09.02.2020, 20:08
1 ответ

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

Изman pam_unix(pam _unix — это модуль, указанный ниже):

nullok

The default action of this module is to not permit the user access to a service if their official password is blank. The nullok argument overrides this default and allows any user with a blank password to access the service.

nullok_secure

The default action of this module is to not permit the user access to a service if their official password is blank. The nullok_secure argument overrides this default and allows any user with a blank password to access the service as long as the value of PAM_TTY is set to one of the values found in /etc/securetty.

Я предполагаю, что ваши настройки PAM используют nullok_secure. Так обстоит дело с Debian 10.

Просто замените nullok_secureна nullok, чтобы все заработало. В Debian это будет /etc/pam.d/common-auth, другие дистрибутивы Unix или Linux могут поместить его в другое место (, например, в определенный файл для su)

.

Дополнительное примечание :Чтобы команда всегда выполнялась без пароля при использовании nullok_secure, она требует запуска на TTY, присутствующем в/etc/securettyили при отсутствии /etc/securetty(, что делает утверждение «PAM _Для TTY задано одно из значений, найденных в /etc/securetty, всегда верно ). Без телетайпа это не имеет значения и всегда будет давать сбой.

4
28.04.2021, 23:24

Теги

Похожие вопросы