2015年12月14日月曜日

launchd を使用したMacOS上のクライアントの起動について

最も簡単な設定方法

この記事はmacOS PCからクライアント・ソフトウェアを自動起動するように複数システムを設定する必要がある管理者向けに説明しています。
単にクライアント・ソフトウェアを自動起動するだけであれば、macPCにクライアント・ソフトウェアをインストール設定した後、
下記の手順でシステム環境設定から自動起動を設定することができます。

1. <システム環境設定> - <ユーザとグループ> を選択
2. ログインオプションを設定するユーザを選択し[ログインオプション] をクリック
3. ログイン項目から「PCClient」にチェックをつけてください。項目リストに表示されていない場合、
  [+]ボタンから「PCClient」を追加してください。



launchd を使用する理由

Mac OS X 10.7 以降 (特に10.10 Yosemite以降) を実行しているMacコンピュータの場合、
launchd を使用してPaperCut クライアント・ソフトウェア(PCClient.app)を起動するのが最も実用的なアプローチとなります。
Apple 社はシステムへのroot アクセスの確保に重点的に取り組み始めています。
ログインフックは非推奨となり、より安全でよりシステム・アクセス権限が制限されているLaunchDaemons と LaunchAgents が推奨されています。

PaperCut社では、下記で説明する起動エージェント(Launch Agent)を使用する方法を強く推奨します。
Apple社も、ログインフックではなくこの方法を使用すること推奨しています。
(詳細はApple社のDeveloperサイトをご参照ください。)

【Apple Developer Site(英語)】
https://developer.apple.com/library/mac/documentation/MacOSX/Conceptual/BPSystemStartup/Chapters/CustomLogin.html

launchd に関する詳細なガイドは次のサイトをご参照ください: http://launchd.info (英語)



Launchdの設定

注記: PCClient.app の launchd plist を展開する前に、必ずMacOS VMもしくは検証用ワークステーションでテストを行ってください。
また、launchd plist は据え置きのMac(iMac, Mac Pro, Mac Mini など) に最適です。
MacBookやMacBookAirなどのモバイルPCに適したソリューションを探している場合、後述する「高度なオプション設定」をご参照ください。

プロセス

1. テストで使用するMacPCに管理者権限のあるアカウントでログイン

2. PaperCut社が提供するベーシック launchd plist を次のサイトからダウンロードしてください:
  http://www.papercut.com/kb/uploads/Main/PaperCut_LaunchD.zip
 このplist は「PCClient.app」が「/Application/」直下に配置されていることを想定しています。
  「PCClient.app」を「/Application/」直下に配置していない場合は、以降の手順はスキップし、
  後述する「高度なオプション設定」へ移動してください。

3. 「PaperCut_LaunchD.zip」に含まれている「com.papercut.client.plist」を次のディレクトリへコピーしてください:
  /Library/LaunchAgents/

4. 次に Terminal.app を開き、launchctl がplist を操作することができるかを確認するために plistの権限が正しいかを検証します。
  ターミナルの使用に不慣れな場合、下記のコマンドを実行してください。
   cd /Library/LaunchAgents/
   sudo chown root:wheel com.papercut.client.plist
   sudo chmod 644 com.papercut.client.plist

5. 次にファイルのアクセス権限が正しいかを確認します:
   ls -lah com.papercut.client.plist
  上記コマンドを実行すると次のように出力されます:
   -rw-r--r--@ 1 root wheel 458B Jul 29 2014 com.papercut.client.plist

6. MacPC を再起動しlaunchd のジョブが予期した通りに機能するかを確認してください。
  もしくはTerminal.appを開き次のコマンドを実行してください:
   launchctl load /Library/LaunchAgents/com.papercut.client.plist



高度なオプション設定

MacBook/MacBook Air/MacBook Pro を使用している場合の提案:
モバイル用MacPCはPaperCutサーバの範囲外の可能性が高いです。
ユーザのログイン時に PCClient.app を開きアプリケーションを閉じることができるよう、
“KeepAlive” を “RunAtLoad” と置き換えるよう "com.papercut.client.plist" を修正することを強く推奨します。
“KeepAlive” は、PCClient.app が常に実行されるようにします。

● 起動時に、Java エラーやPCClient.app エラーが発生した場合、「com.papercut.client.plist」内を下記の内容に置き換えてください。
  <置換前>  <string>/Applications/PCClient.app/Contents/MacOS/JavaAppLauncher</string>
  <置換後>  <string>open -g -W /Applications/PCClient.app/</string>

● PCClient.app がディレクトリ「/Applications/」直下に配置されていない場合、
  「com.papercut.client.plist」の次の行を編集して適切なパスを反映することができます。
  <string>/Applications/PCClient.app/Contents/MacOS/JavaAppLauncher</string>



M1 & IntelベースのmacOS – PCClientアプリがグレーアウトする場合

M1 およびIntelベースのmacOSデバイスにクライアント・ソフトウェア(PCClient)をインストールする場合に、
PCClientを正常に実行するための追加の設定が必要になる場合があります。

① 「LaunchAgents」フォルダを使用している場合、「com.papercut.client.plist」をこのフォルダにコピーし、
  「PCClient.app」を「アプリケーション」フォルダへコピーしてください。

② 「ターミナル」を開き下記のコマンドを実行してください。
  cd /Library/LaunchAgents/
  sudo chown root:wheel com.papercut.client.plist
  sudo chmod 644 com.papercut.client.plist
  sudo spctl --master-disable
  xattr -cr /Applications/PCClient.app
  sudo chmod -R 755 /Applications/PCClient.app
  sudo xattr -dr com.apple.quarantine /Applications/PCClient.app

上記順序でコマンドを実行することで、
macPCにログインするすべてのアカウントが問題なくPaperCut クライアントを読み込むことができるようになります。



launchd plist の内容

上述した「PaperCut_LaunchD.zip」には「com.papercut.client.plist」が含まれています。
下記は「com.papercut.client.plist」のXML情報です。

 

<xml version=“1.0” encoding=“UTF-8”>

<!DOCTYPE plist PUBLIC “-//Apple//DTD PLIST 1.0//EN”

“http://www.apple.com/DTDs/PropertyList-1.0.dtd”>

<plist version=“1.0”>

<dict>

<key>Label</key>

<string>com.papercut.client.agent</string>

<key>ProgramArguments</key>

<array>

<string>/Applications/PCClient.app/Contents/MacOS/JavaAppLauncher</string> </array>

<key>KeepAlive</key>

<true/>

</dict>

</plist>




レガシー・ソリューション

ガイド「クライアント・ツール設定ガイド」にはユーザ・クライアントを起動する方法として
ログインフックを使用する方法について記載しています。
ログインフックはrootとして実行されます。
環境によってはポップアップ認証が排除されます。

ログインフックの欠点の1つが、単一のログインフックのみが定義できることです。
単一のログインフック・スクリプトに複数のコマンドが実行できるため、大きな制限となる場合があります。
しかしながら、展開状況において他のアプリケーションのインストールがログインフックを妨げる可能性があります。
そのためログインフックに代わる起動メカニズムが必要となる可能性があります。


-------------------------------
http://www.papercut.com/kb/Main/MacClientStartupWithLaunchd

0 件のコメント :

コメントを投稿

注: コメントを投稿できるのは、このブログのメンバーだけです。