Назад | Перейти на главную страницу

Как настроить приглашение входа в telnet в linux

Когда я бегу login в debian я получаю:

hostname login: _

на RHEL5, Solaris или HP-UX я получаю:

login: _

Мне нужно иметь возможность настраивать login: и password: подсказывает это в окне Linux. Я могу перекомпилировать пакет, но есть ли лучший (более простой) способ сделать это?

Я искал какой-нибудь вариант конфигурации PAM, но ничего не нашел.

Я знаю, что это можно сделать с pam_set_item () функция с использованием PAM_USER_PROMPT константа, но есть ли способ сделать такую ​​настройку в /etc/pam.d/* файл конфигурации?

Заранее спасибо.

ОБНОВИТЬ:

Мне это нужно, чтобы настроить запрос имени пользователя и пароля telnet. Тем не мение, telnetd использует /bin/login для этого приглашения, вот почему я попросил login настройка в этом вопросе.

Вы можете попробовать изменить языковой стандарт системы на свой собственный языковой стандарт, содержащий желаемые метки.

Если вы используете mingetty тогда вы можете указать --nohostname параметр в /etc/inittab

1:2345:respawn:/sbin/mingetty --nohostname tty1
1:2345:respawn:/sbin/mingetty --nohostname tty2



--nohostname
          Do not print the hostname before the login prompt.

Было обнаружено, что telnetd принимает -L /path/to/login вариант, поэтому я написал несколько строк кода Python, чтобы предоставить свой собственный /bin/login альтернатива с использованием PAM для аутентификации и login -f , чтобы открыть оболочку входа.

В этом скрипте python я могу определить любое приглашение, которое мне нужно для обоих login: и password:.

если вы используете mgetty в / etc / inittab, вы можете добавить флаг -p, чтобы изменить приглашение входа в систему

man mgetty


   -p <login prompt>
          Use the given string to prompt users for their login names. Various tokens are allowed in this string. These tokens are: @ for the system name, \n, \g, \f,  for  new-
          line, bell, and form feed, respectively.  \v and \r will expand to the OS version and release.  \P, \l and \L will expand to the tty name ("ttyS0").  \Y will give the
          Caller ID, \I the "CONNECT foobar" string returned by the modem, and \S or \b will output the port speed.  \N and \U give the number of users currently logged in.  \C
          will  be  changed  into  the result of ctime(), and \D or \d and \t or \T will output the date and time, respectively. Finally, \<digit> will use digit as octal/deci-
          mal/hexadecimal representation of the character to follow.

          The default prompt is specified at compile time.

Согласно telnetd справочная страница с параметрами по умолчанию запрашивает учетные данные, а не login.

Также есть такая возможность:

   -h     Disables  the printing of host-specific information before login
          has been completed.

Предположительно вы вызываете telnetd с этой опцией - если вы удалите ее, дает ли она желаемое поведение?

По идее, чтобы изменить Password: подсказку, вы можете определить LOGIN_STRING в /etc/login.defs, что-то вроде этого:

LOGIN_STRING        "%s, Please enter your password: "

(%s будет заменено именем пользователя)

но на самом деле эта опция кажется устаревшей и больше не работает:

configuration error - unknown item 'LOGIN_STRING' (notify administrator)

Это также упоминается в /etc/login.defs:

# XXX - it doesn't work correctly yet, for now leave it commented out
# to use the default which is just "Password: ".

О login: приглашение, вы можете изменить его, установив PAM_USER_PROMPT или перекомпилировать login-utils пакет:

/*
 * Andrew.Taylor@cal.montage.ca: Provide a user prompt to PAM
 * so that the "login: " prompt gets localized. Unfortunately,
 * PAM doesn't have an interface to specify the "Password: " string
 * (yet).
 */
retcode = pam_set_item(pamh, PAM_USER_PROMPT, _("login: "));
PAM_FAIL_CHECK;