ルートとCAP_SYS_ADMINなしでホスト名を設定する

ルートとCAP_SYS_ADMINなしでホスト名を設定する

私はアプリケーションがあり、Linuxでホスト名を変更できるようにしたいです。現在は、ホスト名コマンドを実行してこれを行います。また、CAP_SYS_ADMINを設定したくありません。また、/etc/hostnameを編集して再起動したくありません。

ホスト名のみを変更する機能はありますか?そうでなければ、私の選択は何ですか?

ベストアンサー1

Linuxでは、ホスト名の設定はsethostname(2)システムコールを介して行われます。 /bin/hostnameは、このシステムコール(および一部の関連システムコール)のデフォルトラッパーです。 /etc/hostname は起動プロセス中にスクリプトで読み取る必要があります。その後、そのタスクを実行するには /bin/hostname を実行します。

CAP_SYS_ADMINは、スレッドの実行を可能にするLinux機能(7)の1つです。様々な種類以下を含むシステム管理タスクホスト名の設定。機能フレームワーク内に小さな粒度があることを知りませんでした。

しかし、他のオプションもあります。特定のユーザーに特定のコマンドを実行する権限を付与できます。〜のようにカスタマイズ可能な方法でsudo(8)を介して他のユーザー。このサンプル sudoers(5) 構成では、ユーザー alice が /bin/hostname を root として実行できます。

alice ALL=(root:ALL) /bin/hostname

〜のようにこのスーパーユーザーの質問で説明されています。、最初の「ALL」はコマンドを実行しているホストに置き換えることができ、コラボレーション環境を除いて使用されません。 「root」を「ALL」に置き換えて、Aliceを実行させることができます。どのユーザー。 2番目の「ALL」はグループに置き換えることができます。

最後のフィールドはAliceが実行できるコマンドです。 /bin/hostname は使用が制限されているので大丈夫そうです。そうしないと、Aliceが電力を制限するためにこのパラメータなしでコマンドを実行できないように、パラメータを後に配置できます。

おすすめ記事