システムがルートセッションで起動するようにしてから、そのセッションでコマンドを実行するにはどうすればよいですか?

システムがルートセッションで起動するようにしてから、そのセッションでコマンドを実行するにはどうすればよいですか?

私はルートアカウントと呼ばれる唯一のアカウントを持つGNU / Linuxシステムを持っています。システムの起動時に自動的にルートアカウントにログインし、そのセッション内で "telnet"コマンドを実行したいと思います。どうすればいいですか?

私のシステムにはGUIがなく、必要でなければインストールしたくありません...

答え1

これが正しい方法かどうかはわかりませんが、うまくいきます。

起動時に仮想端末で実行されるプログラムは、/etc/inittabこのファイルによって決まります。これらはすべてrootとして実行されます。次の行があります。

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

彼らはどの仮想端末で何が終わるかを決定します。/sbin/getty仮想端末を提供します。私の場合、/sbin/getty 38400 tty1最初の仮想端末で手段が提供されますgetty。その後、仮想端末のログインプロンプトが表示される場所が呼び出されます。tty1gettylogin

これを行う方法は2つあります。

  1. 迅速で汚れた方法:/sbin/gettyTelnetを介してパラメータ、少なくとも仮想端末に次のように置き換えます。

    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スイッチを使用してください。

関連情報