Когда я бегу 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;