# sudoを使ってTalend JobServerを起動

sudoを使ってTalend JobServerを開始し、特権操作(特定のリソースへのアクセスや制限されたポートの使用など)に必要な権限を付与します。

情報メモ重要: 既にこのサーバーからジョブを開始済みである場合は、sudoでサーバーを再起動する前に、&lt;jobserver\_path&gt;/TalendJobServerFilesディレクトリーを削除することをお勧めします。これによって、既にデプロイされたジョブやキャッシュされたファイルに対する想定外の承認を避けられます。

## 手順

1. 信頼されたユーザー用にディレクトリー権限を設定します:
   1. タスクの実行を許可されている各ユーザー(たとえばsubuserと呼ばれるユーザー)を、Talend JobServerの親ディレクトリーを所有しているrootグループ、およびユーザー(たとえばmyuserと呼ばれるユーザー)のグループに追加します:
      ## 例
      ```
      > sudo usermod -a -G myuser_group subuser
      > sudo usermod -a -G root subuser           
      ```
   2. chmod g+rx /&lt;directory\_path&gt;を実行し、必要なすべてのディレクトリーのグループにexecute権限を付与します:
      ## 例
      ```
      chmod g+rx /opt
      chmod g+rx /opt/talend
      chmod g+rx /opt/talend/Talend-JobServer
      chmod g+rx /opt/talend/Talend-JobServer/TalendJobServersFiles
      chmod g+rx /opt/talend/Talend-JobServer/TalendJobServersFiles/cache
      chmod g+rx /opt/talend/Talend-JobServer/TalendJobServersFiles/cache/lib               
      ```

      この例におけるTalend-JobServerフォルダーの親フォルダーは、デモンストレーションのみを目的としています。正しく動作させるため、ディレクトリーストラクチャーの各レベルで実行権限の付与が必要であることが強調されています。

      情報メモ注: グループのread権限は、デプロイされたファイルにのみ必要とされます。
2. Talend JobServerを起動するユーザーにumaskを設定し、ファイル権限を制御します。

   umaskという用語は、user-file-creation-maskコマンドの略称です。この設定によって、新しいファイルやディレクトリーが作成された時にデフォルトのファイルとディレクトリーの権限が制御されます。
   1. 以下のumaskコマンドでユーザーのプロファイルを設定します:
      ## 例
      ```
      umask u=rwx,g=rx,o=
      ```

      これはumask 0027と同等です。

      この設定によって次の点が確実になります:
      * ディレクトリーにr-xというグループ権限があること。
      * ファイルにr--というグループ権限があること。
      * その他の権限がないこと。
3. 次のコマンドを使ってTalend JobServerを開始します:
   ### 例
   ```
   sudo sh start_rs.sh
   ```

   情報メモ重要: sudoを使わない場合、JobServer側でパスワードプロンプトが必要になるため、ジョブが応答しなくします。

## 事前定義済みのsudo権限でTalend JobServerを開始

sudoコマンドの繰り返しを避けるためには、システムのsudoersファイルを設定し、Talend JobServerで必要とされる特定コマンドの権限を自動化します。

### 手順

1. sudo visudoコマンドを使って、Talend JobServerを実行するマシンでsudoersファイルを変更します。
2. sudoersファイルを編集し、ユーザーとコマンドのエイリアスを指定します。
   ### 例
   ```
   # ...
   # User alias specification
   User_Alias JOB_SERVER = jerry
                           
   # Cmnd alias specification
   Cmnd_Alias RUN_JOB = /bin/ps, /usr/bin/java, /bin/sh, /bin/grep, /bin/kill
                           
   # ...
   # Add after the line: %sudo	ALL=(ALL:ALL) ALL
   JOB_SERVER      ALL=(jules,jim) NOPASSWD: RUN_JOB
   ```

   この例では、jerryというユーザーがTalend JobServerを起動します。タスクは、既存のユーザー(julesとjim)の権限で実行される必要があります。

   jerryが開始するTalend JobServerプロセスによって、以下のコマンドをjulesまたはjimとして実行できるようになります:
   ```
   /bin/ps
   /usr/bin/java
   /bin/sh
   /bin/grep
   /bin/kill
   ```

   セキュリティ上の理由から、その他のコマンドについては許可しないでください。

### タスクの結果

jerryというユーザーは、sudo sh start\_rs.shの代わりにsh start\_rs.shを実行することでTalend JobServerを開始できます。