Как я могу иметь начальную загрузку системы в к корневой сессии и затем выполнить команду в рамках той сессии?

[

] 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.
]
1
19.04.2015, 21:31
1 ответ

Я не знаю, кошерный ли это способ сделать это, но он действительно работает:

Программа, которая запускается на виртуальном терминале при запуске определяется файлом / etc / inittab . Все они запускаются с правами root. В нем есть такие строки:

1:2345:respawn:/sbin/getty 38400 tty1

Они решают, что окажется на каком виртуальном терминале. / sbin / getty предоставляет виртуальный терминал. В моем случае / sbin / getty 38400 tty1 означает, что getty предоставляет tty1 на первом виртуальном терминале. getty затем вызовет login , и именно отсюда приходят запросы на вход на виртуальных терминалах.

Итак, есть два способа сделать это:

  1. быстрый и грязный способ: просто замените / sbin / getty плюс аргументы на telnet хотя бы для одного из виртуальных терминалы, например:

     1: 2345: respawn: / usr / bin / telnet foo.bar 
     

    Это, вероятно, сработает, но это не очень хороший способ, так как нет tty создано. Это может вызвать другие проблемы, если вы хотите использовать машину и для других целей, поэтому я рекомендую:

  2. правильный способ: установить замену getty , которая может запускать любую программу, например rungetty . Затем вызовите , что :

     1: 2345: respawn: / sbin / rungetty tty1 - / usr / bin / telnet foo.bar 
     

Примечание: если вы используете rungetty , по умолчанию программа будет работать под пользователем nobody .Это почти всегда предпочтительнее, чем запуск программ от имени root , потому что это обеспечивает лучшую безопасность. Если вам действительно нужен пользователь root (или любой другой пользователь), используйте переключатель -u .

2
27.01.2020, 23:37

Теги

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