So-net無料ブログ作成
検索選択
備簿録 ブログトップ

【Tips】Windowsのサービスを一般(AdminやPowerGroup以外)ユーザで起動できるようにする。 [備簿録]

 会社などでは開発者や運用担当者からAdministrator権限をとられるケースも多く見受けられるようになったが、仕事でとあるWindowsサービスの起動/停止の権限を一般ユーザ(認証済みユーザ-Authenticated User)に対して付与する方法を調べたのでメモとして残しておく。

 Administrator権限やPowerUser権限を持たない一般ユーザが、Windowsサービス画面(services.msc)でサービス対して起動や停止の操作を要求すると「起動だけできる」や「起動/停止のどちらもできない」サービスが存在することに気づくだろう。
 これは一般ユーザの権限が制限されているためで、「エラー5 - アクセスが拒否されました」と表示された場合はこれに該当する。
 しかし一般ユーザに対して、サービスの起動や停止を行わせたい場合はよくあることなので、以下に対処法を記載しておく。

対象OS
 Windows Server 2003(それ以外のバージョンは調べてないがscコマンドが入っていれば、おそらく同じ方法で操作可能だと思われる。

押さえておきたいところ
 アクセス拒否されているのは、サービス起動の為に登録されているユーザではなく、ログインしている操作対象者であるということ。また、この設定を行うためにはAdministratorsグループに所属するひとが行う必要があることは覚えておいてほしい。

利用コマンド
 sc.exe

やるべきこと
1.対象のサービスのサービス名を知る。
 まず、sc queryコマンドを利用してサービスの一覧を見ることができるが、今回の作業に必要な情報は限られるので、findstrコマンドを利用して表示内容を絞り込んで表示する。

C:\>sc query|findstr _NAME
SERVICE_NAME: AcPrfMgrSvc
DISPLAY_NAME: AcPrfMgrSvc
SERVICE_NAME: AcSvc
DISPLAY_NAME: AcSvc
SERVICE_NAME: AeLookupSvc
DISPLAY_NAME: Application Experience
SERVICE_NAME: Appinfo
DISPLAY_NAME: Application Information




 ずらずらSERVICE_NAMEとDISPLAY_NAMEの2つが交互に表示されるが1つのサービスについて2行づつ表示されていて、「DISPLAY_NAME」は Windowsサービスの画面で表示される表示名、「SERVICE_NAME」が今回サービスを指定する際に利用する名前だ。DISPLAY_NAMEとSERVICE_NAMEは同じ場合もあるが異なる場合もあるので注意が必要だ。

 ここで対象のサービスの名前が出てこない場合は、"sc query state= all" を利用することで停止中のサービスも表示することができる。scコマンドにはその他多数のオプションもあるので詳細は sc コマンドのヘルプを見て欲しい。

サービス名を特定出来たら "sc query <サービス名>"で間違いがないか確認する。

2.対象サービスのセキュリティ記述子を表示する。
 セキュリティ記述子とは対象のサービスに対して、だれがどういったことを行えるかを(何故か?)人間に読みにくい形で文字列表示する機能で、"sc sdshow <サービス名>"で見ることができる。内容の詳細についてはマイクロソフトのサポート(サービスのアクセス制御)を参考にしてほしいが、この内容を変更することで一般ユーザに対して起動/停止の権限を与えることができる。

 ここでは試しに、「Application Information」サービスのセキュリティ記述子を表示してみる。

C:\>sc sdshow Appinfo
D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)....<中略>....(A;;CR;;;AU)


 表示結果の1つの小カッコがユーザもしくはグループ毎の設定を表していて、右かっこの直前の2文字が誰(もしくはどのグループ)を表している。
今回は認証済みユーザ-Authenticated Userに対する権限を変更するので最後の「(A;;CR;;;AU)」この部分を変更することになる。

3.対象サービスのセキュリティ記述子を変更する。
 サービスのセキュリティ記述子の変更は"sc sdset <サービス名> <セキュリティ記述子>"コマンドを利用して変更することができる。まず、2で表示したセキュリティ記述子をいったんすべてTextエディターにコピーし、必要な部分を修正もしくは追加して新しいセキュリティ記述子を作成する。

AU(Authentication User)に対してサービスの起動(RP)、停止(WP)権限を付与する。
C:\>sc sdset Appinfo D:(A;;CCLCSWRPWPDTLOCRRC;;;SY)....<中略 sc sdshowの表示内容と同じ>....(A;;RPWPCR;;;AU)
[SC] SetServiceObjectSecurity SUCCESS

 sdshowで表示された文字列との違いは最後のAUに関するセキュリティ記述子のみだ。
変更前:(A;;CR;;;AU)
変更後:(A;;RPWPCR;;;AU)


 これで一般ユーザでログインしなおしても「Application Information」の起動と停止は行えるはずである。

 お試しあれ!

参考Webサイト
  マイクロソフトのサポート(サービスのアクセス制御)
  @iITの掲示板(最後までよく読むことをお勧め)


Simple is best.
--
butineko

nice!(0)  コメント(3)  トラックバック(0) 
共通テーマ:仕事

【Tips】WAS 5.1 CLASSPATHに関する設定箇所一覧 [備簿録]

WebSphere Application Server 5.1を利用した際に、どこのクラスやjarを読み込んでいるかわからない場合に確認するCLASSPATH関連の設定箇所

設定ファイル
 ear/war内のMANIFEST.MFファイル内 Class-Path:項目

管理コンソール
 アプリケーションサーバ->プロセス定義->Java仮想マシン->
    一般プロパティ->クラスパス/ブート・クラスパス
 アプリケーションサーバ->プロセス定義->Java仮想マシン->
    一般プロパティ->汎用JVM引数の-cp オプション
 アプリケーションサーバ->プロセス定義->環境エントリー->
    CLASSPATH環境変数の有無

その他
 システム環境変数
 サービス/デーモン起動対象のユーザ環境変数
 WASの起動時に指定する項目があるはず. . .
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:日記・雑感

【Tips】WAS6.1 で 管理用 ant タスク を実行する方法 [備簿録]

 WebSphere Application Server 6.1.x(以下 WAS)でコマンドラインで利用可能な運用バッチの構築をしていて、WASアプリのインストールやサービスの起動停止などが行えるantタスクがあることが分かったので、ちょっと試してみることにした。

 途中経過が不要な人は最後の「まとめ」を見て下さい。

 例えば、「wsListApps」 タスクは com.ibm.websphere.ant.tasks.ListApplicatoinsと結び付けられていていて、インストール済みのアプリケーションのリストを出力できるタスクだ。

早速実行
C:\>%WAS_HOME%\bin\ws_ant.bat -buildfile build.xml
buiildfile.xml Coud not create task or type of type: wsListApps.
Ant could not find the task or a class this task relies upon.

リストでない. . .どうやら、CLASSPATH上から antタスクのクラスファイルが見つかっていないようである。

で、こんなことして探してみた。
c:\>cd %WAS_HOME%
c:\%WAS_HOME%\>for %i in (lib\*.jar plugins\*.jar) do (
More?jar -tf %i|grep "com/ibm/websphere/ant/tasks"
More?)
.
.
C:\%WAS_HOME%\>(jar -tf plugins\com.ibm.ws.runtime_6.1.0.jar | grep "com/ibm/websphere/ant/tasks" )
com/ibm/websphere/ant/tasks/
com/ibm/websphere/ant/tasks/DefaultBindings.class
com/ibm/websphere/ant/tasks/InstallApplication.class
.
.
でてきた、でてきた。

で、CLASSPATHにjarを追加して再実行
    .
    .
あれ?おんなじ. . .

 ws_ant.batをよく読むと %WAS_HOME%\plugins\以下のjarファイルは、jarの検索対象ディレクトリとして最初から登録されておりCLASSPATHに追加する必要はないらしい。

 googleにお世話になりながら悩むこと約2時間

 『「wsListApps」 Taskは com.ibm.websphere.ant.tasks.ListApplicatoinsと結び付けられていていて』の部分が間違っていることが判明。どうやら「wsListAppsタスクをcom.ibm.websphere.ant.tasks.ListApplicationsに自分で結びつけて使う」のが正しいらしい。(間違っていたらだれか詳しい人突っ込み希望です)

 WASのbuilt-in tools だからといって、標準タスク扱いにはなってないのね. . .

まとめ


build.xmlファイル
<?xml version="1.0" encoding="Shift_JIS"?>
<project default="ListApplications">
<taskdef name="wsListApps" classname="com.ibm.websphere.ant.tasks.ListApplications"/>
<target name="ListApplicaitons">
<wsListApps/>
</target>
</project>

 
実行
 C:\>%WAS_HOME%\bin\ws_ant.bat -buildfile build.xml
  .
  .
 ListApplications:
  [wsadmin] WASX7209I ...
  [wsadmin] DefaultApplication
  [wsadmin] PlantsByWebSphere
  .
  .

ようやく目的達成。

 WASの管理についてantタスクできることはこのページのJavaDocで com.ibm.websphere.ant.tasksパッケージに一覧があるので参考にしてください。

追記: JavaDocの中にきちんと書いてあった. . . orz
nice!(0)  コメント(0)  トラックバック(0) 
共通テーマ:仕事

【Tips】古いWindows(2000/nt/98)のリソースキットに付属するtoolの入手方法 [備簿録]

 先日、sc.exeというコマンド紹介したが、このコマンドはWindows2000やWindowsNTの製品には含まれておらず、それぞれのリソースキットに入っているものだ。

 まだWindows2000が現役の人がどの程度いるのかわからないが、リソースキット(書籍)はどんどん入手が困難になり、Microsoftページで提供されているツールも一部のツールに限られているようだ。(実際windows2000用のsc.exeは見つからなかった)

 そんなときに見つけたのが昔ながらのMicrosoftのFTPサーバだ。ここにリソースキットのすべてのツールがあるかどうかまでは確かめていないが、少なくともWebで提供されているツールよりは多いようだ。

 入手可能なFTPサイトはftp://ftp.microsoft.com/ResKit/になるが、おそらくとうの昔にマイクロソフトはメンテナンスをとめていると思われる。しかし、こういったサイトが生きていることでなんにんかの利用者はすくわれるので非常にありがたい存在である。

 ありがたく利用させていただくことにしよう。


【Tips】Windows環境でリモートのサービスをコマンドラインから操作する [備簿録]

 多数のWindowsサーバの運用管理を行えるsc.exeというコマンドマイクロソフトから提供されている。Windows XP以降(2003,Vista等々)では標準で装備されているが、2000やNTではリソースキットで提供されているらしい。

 これを利用することによりリモートサーバに対して以下のことが行える。

 ・サービスのリスト表示や検索
 ・サービスの作成/削除/構成変更
 ・サービスの起動/停止/一時停止(再開)

 多数のサーバ環境に対して制御を行う場合は、バッチ内でこのコマンドを利用して運用効率を上げることができる。


 詳しい使い方はsc /help やマイクロソフトのページで使い方を調べてください。

 注意事項:多くの操作で対象コンピュータに対する管理者特権が必要

追記:Windows2000用やNT用の入手方法はこちらに記載しました。


【Tips】WindowsによるHOST名(ネットワークノード)の解決順 [備簿録]

Windows上でホスト名をIPアドレス(ここでの対象はIPv4)に変換する際に利用されるメカニズムや優先順位についてのメモです。

調査当時のターゲットはWindows2000だったような気がするがXPもおそらく同じでしょう。

1.NetBIOS名前キャッシュの検索
2.WINSサーバに対してクエリ(Winsの登録がなきゃしないとおもわれ)
3.NetBIOSブロードキャストクエリ(同一ネットワークセグメント上のノードを探します)
4.LMHOSTSファイルを参照
5.HOSTSファイルを参照(LMHOSTS と同様に %SystemRoot%\System32\drivers\etc内)
6.DNSサーバに対してクエリ

ちなみにDNSキャッシュのクリア方法は以下のとおり
 ipconfig /flushdns

でもってNetBIOSキャッシュのクリア方法は以下のとおり
 nbtstat -RR

ノードのIPアドレスが変更になった場合は状況に応じて、2つのコマンドを使い分ける必要があるので注意すべし!!


【Tips】Vista デスクトップ上のIEアイコンを削除後にショートカットマークを付けづに復活する方法 [備簿録]

 XP ではデスクトップから InternetExplorer(IE)アイコンを削除してもデスクトップのプロパティで設定すれば、IEアイコンが復活しますが、Vistaではこの方法ではアイコンマークを復活することができなくなりました。(なんで?)

 でもって、画面にアイコンを配置するにはショートカットをおくかレジストリをいじるかのどちらかの方法が必要となるので、その方法を解説したページへのリンク

Vista上のIEアイコンをショートカットマークをつけづに復活する方法

やってみた. . .

  レジストリにそんなキーない. . .orz
    Vista をSP1にあげただからだろうか. . .
      前できたのに . . .

  気を取り直してレジストリにキー作ってみた....
    やっぱりだめだった. . .
      違う方法をさがさねば. . .

  翌日気を取り直していろいろ試したところ、
    キーを作るまでは良かったのだが、登録内容の0と1を勘違いしていただけだった . . .

まとめ、
Vistaのデスクトップ上にIEのアイコンをショートカットマークなしで追加する方法

regeditを起動して
HKEY CURRENT USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\NewStartPanel
もしくは
HKEY_CURRENT_USER\Software\Microsoft\Windows\CurrentVersion\Explorer\HideDesktopIcons\ClassicStartMenu
のどちらかで{871C5380-42A0-1069-A2EA-08002B30309D} を探して(なければキーを登録)
REG_DWORDの値をに設定

p.s.
 regeditとregedt32は統合されたのね、いつの間に. . .


備簿録 ブログトップ
メッセージを送る
RSS RSS

この広告は前回の更新から一定期間経過したブログに表示されています。更新すると自動で解除されます。

×

この広告は1年以上新しい記事の更新がないブログに表示されております。