デフォルトの/etc/init.dへのアクセス権を書く方法

デフォルトの/etc/init.dへのアクセス権を書く方法

インストールしようとしています。タンパク質Ubuntu 16のソフトウェア。このソフトウェアの要件の1つは、

  • (*)$ SERVICE_PATHへの書き込みアクセス(デフォルト/etc/init.d)

この目標をどのように達成できますか?

答え1

指示には、インストールスクリプトをrootとして実行する必要があることが示されています。この時点では、すべてへの完全な書き込みアクセス権が必要です。

ソフトウェアがrootとして実行されていないが、/etc/init.dインストール後もまだアクセスが必要な場合は、これは珍しいただし、必要に応じて以下を準備できます。

1.) グループを作成します。必要に応じて名前を付けることができます。 Optionは-rシステムグループに割り当てられたGID番号の範囲を使用して作成されるため、一般ユーザーに関連付けられているグループと混同されません。

sudo groupadd -r proteios

/etc/init.d2.)グループに書き込み権限が必要なユーザーを追加します。

sudo usermod -a -G proteios someuser

3.)/etc/init.d新しいグループにグループ所有権を割り当てます。複数のユーザーがそれを必要とする場合は、必要に応じてこの手順を繰り返します。

sudo chgrp -R proteios /etc/init.d

4.) グループ書き込みアクセス権を割り当てます。

sudo chmod -R g+rwX /etc/init.d

proteios5.)このディレクトリに作成されたすべての新しいファイルがデフォルトでこのグループの所有であることを確認してください。

sudo chmod g+s /etc/init.d

私はこのProteiosソフトウェアが実際に何を使いたいかを最初に使い捨ての仮想マシンで実行することを好みます/etc/init.d。このソフトウェアには、ProteiosがインストールされているコンピュータがProteiosでのみ使用されるという基本的な前提があるようです。 else なので、セキュリティや標準のルールに大きく気を付ける必要はありません。これは危険な仮定です。


ソフトウェアが自己起動スクリプトを変更しようとしていますが、スクリプト自体への書き込み権限で十分でない場合(たとえば、新しいファイルを作成する前に古いファイルをバックアップしたい場合など)、次のことができます。いいえrealに権限を追加しますが、適切な権限を持つ他/etc/init.dの場所にディレクトリを作成して/opt/proteios/etc/init.dアプリケーションをリダイレクトします。

export SERVICE_PATH=/opt/proteios/etc/init.d

Proteios起動スクリプトの先頭とProteiosを使用しているユーザーの環境に移動し、カスタムディレクトリに作成された(各)Proteios起動スクリプトから実際のディレクトリに戻るシンボリックリンクを作成します/etc/init.d

sudo ln -s /opt/proteios/etc/init.d/* /etc/init.d/

このように、Proteiosは自分のファイルを自由に変更できますが、他のシステムサービスは変更できません。起動時に実際に起動する必要がある他の既知の起動スクリプトを追加するには、管理者がそのスクリプトへのシンボリックリンクを作成する必要があります。これにより、ユーザーがProteiosを介して他のシステムサービスを操作するのを防ぐ必要があります。

答え2

前提は持つ書き込み権限$SERVICE_PATH(/etc/init.dデフォルト)そして到着する$CATALINA_HOME

ドキュメントにはどのユーザーとしてコマンドを実行する必要があるかは記載されていませんが、そのユーザーは両方のパスを所有するか、これらのパスに対する書き込み権限を持つグループに属するか、書き込みが必要なコマンドを実行するときにrootアカウントに切り替える必要があります。この道。

たとえば、ドキュメントはconfigeditと呼ばれています$CATALINA_HOME/webapps/proteios/WEB-INF。これを行うには、ファイルを編集するユーザーが構成ファイルを書き込める必要があります。

これらのパスを作成するために必要な他の手順が何であるかは明示的に指定されていませんが、上記のパスを実行するとスクリプトがこれを行う必要があるかもしれません(install指示updateinitはrootとして実行するように指示されています)。

関連情報