] setup crypt[
] [crypt=$(perl -e'print crypt("somekey", "salt_character")')
]
[] call username list in a loop и pass $crypt for password.[
] [for i in `cat usernamelist`
do
useradd $i -p $crypt
done
]
[] from man page,[
] [-p, --password PASSWORD
The encrypted password, as returned by crypt(3). The default is to disable the account.
] Я не знаю, кошерный ли это способ сделать это, но он действительно работает:
Программа, которая запускается на виртуальном терминале при запуске определяется файлом / etc / inittab
. Все они запускаются с правами root. В нем есть такие строки:
1:2345:respawn:/sbin/getty 38400 tty1
Они решают, что окажется на каком виртуальном терминале. / sbin / getty
предоставляет виртуальный терминал. В моем случае / sbin / getty 38400 tty1
означает, что getty
предоставляет tty1
на первом виртуальном терминале. getty
затем вызовет login
, и именно отсюда приходят запросы на вход на виртуальных терминалах.
Итак, есть два способа сделать это:
быстрый и грязный способ: просто замените / sbin / getty
плюс аргументы на telnet хотя бы для одного из виртуальных терминалы, например:
1: 2345: respawn: / usr / bin / telnet foo.bar
Это, вероятно, сработает, но это не очень хороший способ, так как нет tty создано. Это может вызвать другие проблемы, если вы хотите использовать машину и для других целей, поэтому я рекомендую:
правильный способ: установить замену getty
, которая может запускать любую программу, например rungetty
. Затем вызовите , что :
1: 2345: respawn: / sbin / rungetty tty1 - / usr / bin / telnet foo.bar
Примечание: если вы используете rungetty
, по умолчанию программа будет работать под пользователем nobody
.Это почти всегда предпочтительнее, чем запуск программ от имени root
, потому что это обеспечивает лучшую безопасность. Если вам действительно нужен пользователь root
(или любой другой пользователь), используйте переключатель -u
.