• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:CGI作成ファイル所有者をEveryone等にしたい(Windows))

CGI作成ファイルの所有者をEveryone等にしたい(Windows)

このQ&Aのポイント
  • Windows上でCGIで呼ばれたプログラムから作成されたファイルの所有者がSYSTEMになってしまい、他のプログラムからのアクセスが制限されてしまう問題があります。
  • この問題の解決策として、Perlのsystem関数を使用してファイルをコピーする際に所有者をEveryoneまたはAdministratorsにする方法があります。
  • また、Windowsのプロパティのセキュリティタブやcacls、icaclsコマンドを使用することで所有者を手動で変更することも可能ですが、包括的な対処方法を探しています。

質問者が選んだベストアンサー

  • ベストアンサー
  • YkazubonY
  • ベストアンサー率30% (26/86)
回答No.1
moregreen
質問者

お礼

【解決しました】 ●原因  ApacheがWindowsにサービスとして登録されるときに、ローカル システム アカウントでログオンするというデフォルト設定になっていたためSIDがSYSTEMになりEveryoneやAdministratorsからはフルアクセス権がなかったこと。 ●対処手順  できればまず [Shift-Control-Esc]などの操作でWindowsのタスク マネージャを出し、  [プロセス]タブをクリックし、httpdのユーザ名が空欄(またはSYSTEM)であることを確認した方がいいでしょう。[表示]-[列の選択]をしないとユーザ名が見えないかもしれません。  Apacheにログオンさせる管理者権限をもっている(すなわちAdministratorsグループに属している)ユーザのログオン名をあらかじめ決めておきます。少なくともWindows XP以降では、購入直後に入力して作ったユーザは管理者権限をもっていますから、ひとりで使っている分にはそのログオン名を用いればよいでしょう。  では開始します。  [コンピュータの管理]-[サービスとアプリケーション]-[サービス] で右ペインにサービス一覧を出します。  Apacheのサービス名(私の場合 Apache2)を選択して開きます。  [(ローカル コンピュータ)Apache2のプロパティ] 画面で [ログオン]タブ-[ログオン] で [アカウント(T)]に 自分のログオン名 を手入力または [参照(B)]ボタンを利用して入力します(先頭に自動的に「.\」が付くようです)。  パスワード欄2カ所を正しく入力します。  いったん [適用(A)] をクリックします。  次に、[全般]タブ-[サービスの状態] で [停止(T)]をクリックし、数秒後に停止してグレーアウトされるので [開始(S)] をクリックします。この操作はタスクトレイでApacheのアイコンからモニタを開いてリスタートするのと等価です。 [OK] をクリックします。  上記Windows タスク マネージャで、ユーザ名欄が自分のログオン名に変わっていることを確認します。  この設定は、あとシステムの再起動が何度あっても保たれます。 ¶参考にした文書: http://oshiete1.watch.impress.co.jp/qa937815.html?order=ASC&by=datetime 教えて! Watch - コピーが・・・  動的にCygwinコマンドで作るファイルのWindowsでのセキュリティを変更する際には、YkazubonY様のご紹介で読んだCygwinのntsecセクションが参考になります。ありがとうございました。

moregreen
質問者

補足

YkazubonY様 調べてくださってどうもありがとうございます!! 良さそうな資料ですね。 さっそくよく読んで検討します。

関連するQ&A