1


1

動的にドメインを追加するためにhosts(etc / hosts)ファイルを編集/更新したい。

ホスト(etc / hosts)ファイルを編集するには管理者特権が必要です。 Linuxを使用する私はこのコマンドでこれを行うことができます

sudo gedit / etc / hosts

しかし、私はプログラミング言語を使ってこれをやろうとしています。

どうすればそれができますか?

4 Answer


2


あなたの最善の策は、SSHのようなものを使用し、root(またはsystem()の場合はsudo)としてコンピュータに接続し、ファイルを変更してから切断することです。 これに追加された利点は、ユーザーにパスワードの入力を求めるという便利さです。

プロンプトを出さずにこれを行うには、ユーザーはそれをrootとして実行するための何らかの手段を設定する必要があります。 すなわち ヘルパーアプリケーションの設定、パスワードのないキーのインストール、LDAPツリーの変更、その他さまざまな方法。 これは、より良い用語がないため、ちょっと変わった感じです。

通常特権の昇格機能を持たないユーザーに対してこの機能を実行する方法はありません。


2


プログラムは適切な権限で実行されている必要があります。 古典的な方法の1つは、ファイルをrootに所有させ、setuidビットを設定することです。 プログラムが実行されると、それはrootになり、/ etc / hostsを変更することができます。

それでも、setuidコードは危険です。 コードにバグがあると、プログラムがひどいことをしてシステムが使用できなくなることがあります。 悪意のあるユーザーが特定のバグを悪用して任意のプログラムをrootとして実行し、システムを占有する可能性があります。


1


ファイルを編集するには、まだ適切な権限が必要です。

ファイルを変更するには、ファイルを読み取り/書き込み/追加モードで開きます。 fopen()`を使って ` a '`をモードし、新しいテキストをファイルの最後まで書きます。


1


私はあなたがそのsudoコマンドを発行することができるコマンドプロンプトにいると仮定します。

あなたが主張するアクセス権を持っていれば、既存のテキストファイルに1行のテキストを追加することができる(またはそうでない場合は作成することはできません)どんなプログラミング言語でもうまくいくでしょう。 そのプログラムにいくつかの追加の権利を与えなければならないかもしれませんが、それは別のトピックです!

要約:あなたはどの言語を知っていますか? ⇒それを使う!