動的にhosts(etc / hosts)ファイルを編集/更新してドメインを追加したい。
hosts(etc / hosts)ファイルを編集するには、管理者権限が必要です。Linuxを使用すると、このコマンドでこれを行うことができます
sudo gedit / etc / hosts
しかし、私はプログラミング言語を使用してこれを実行しようとしています。
どうすればいいですか?
最善の策は、SSHなどを使用して、root(またはsystem()のsudo)としてコンピューターに接続し、ファイルを変更してから切断することです。これの追加の利点は、ユーザーにパスワードの入力を求める便利さです。
プロンプトを表示せずにこれを行うには、ユーザーはrootとしてそれを実行するための何らかの手段を設定する必要があります。つまり、ヘルパーアプリケーションの設定、パスワードなしのキーのインストール、LDAPツリーの変更、またはその他のさまざまな方法です。より良い用語がないため、これは少し「厄介」です。
通常は特権昇格機能を持たないユーザーに対してこれを機能させる方法はありません。
プログラムは適切な権限で実行されている必要があります。古典的な手法の1つは、ファイルをrootが所有するようにし、setuidビットを設定することです。プログラムを実行すると、rootになり、/ etc/hostsを変更できるようになります。
そうは言っても、setuidコードは危険です。コードにバグがあると、プログラムが非常に悪いことをして、システムが使用できなくなる可能性があります。悪意のあるユーザーが特定のバグを使用して、rootとして任意のプログラムを実行し、システムを乗っ取る可能性があります。
ファイルを編集するには、適切な権限が必要です。
ファイルを変更するには、ファイルを読み取り/書き込み/追加モード(つまり、"a"
を使用するモードfopen()
)で開き、ファイルの最後に新しいテキストを書き込みます。
コマンドプロンプトが表示されていると仮定します。ここで、そのsudoコマンドを発行できます。
あなたが主張するように、あなたがアクセス権を持っていれば、既存のテキストファイルにテキストの行を追加できる(または、そうでない場合はそれを作成できる)プログラミング言語ならどれでも機能します。そのプログラムにいくつかの追加の権利を与える必要があるかもしれませんが、それは別のトピックです!
要約:あなたはどの言語を知っていますか?=>それを使用してください!