• ベストアンサー

所有者がWWWのファイルの削除

あるCGI(Perl?)プログラムを設置して初期設定をして ブラウザからアクセスしたところ、設定にミスがあったこともあって、所有者がWWWのファイルやフォルダが作成されてしまいました。 所有者が異なるために、FTPなどによる削除ができず困っています。 CGIなどを使ってこれらのファイルを消去することは可能でしょうか?この目的に適したプログラムがあれば教えてください。 ちなみに、ファイルやフォルダの数は全部あわせても10個程度です。

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

  • ベストアンサー
  • Dpop
  • ベストアンサー率51% (279/544)
回答No.3

#2 です。 一箇所セミコロン抜けがあったので、修正しました。 ついでに、ディレクトリも削除できる様にしておきました。 # 削除したいファイル名orディレクトリ名 @f = ("aaa.txt", "bbb.txt", "ccc.txt", "/ddd"); に対象となるファイル名のリストを記述してください。 ファイル名/ディレクトリ名は、 このCGIを動作させるディレクトリから 相対ディレクトリで指定してください。 ファイル名指定の頭が / から始まっていると、 ディレクトリと見なして動作します。 このCGIを(@fの設定と、#!/usr/local/bin/perlは修正してくださいね。)、 ご利用のサーバーにコピーして頂き、 実行権を与えてWWWブラウザから実行して頂ければ、 ファイルが削除されます。(動作確認済みです。) #!/usr/local/bin/perl # 削除したいファイル名orディレクトリ名 @f = ("aaa.txt", "bbb.txt", "ccc.txt", "/ddd"); print "Content-Type: text/html\n\n"; print <<"END_HTML"; <html> <head> <title>ファイル削除</title> </head> <body> END_HTML foreach (@f) { # ディレクトリチェック&ディレクトリ名抜き出し if ($_ =~ m/^\/(.*)/) { $_ = $1; # 本当にそのディレクトリがあるなら削除する。 if (-d $_) { rmdir($_); print "ディレクトリ${_}を削除しました。<br>\n"; } } else { # 本当にそのファイルがあるなら削除する。 if (-f $_) { unlink($_); print "ファイル${_}を削除しました。<br>\n"; } } } print <<"END_HTML"; </body> </html> END_HTML

Oji_0930
質問者

お礼

ありがとうございました。無事、削除することができました。 最初はダメもとで、ディレクトリを指定してみてダメでした。 ファイルを削除し、その後ディレクトリを削除することで無事に削除することができました。

その他の回答 (2)

  • Dpop
  • ベストアンサー率51% (279/544)
回答No.2

試してないですけど、こんな感じで良いと思います。 #!/usr/local/bin/perl print "Content-Type: text/html\n\n"; print <<"END_HTML" <html> <head> <title>ファイル削除</title> </head> <body> END_HTML # 削除したいファイル名 @f = ("aaa", "bbb", "ccc"); foreach (@f) { # 本当にそのファイルがあるなら削除する。 if (-f $_) { unlink($_); print "$_を削除しました。<br>\n"; } } print <<"END_HTML"; </body> </html> END_HTML exit(0);

  • e2101183
  • ベストアンサー率16% (1/6)
回答No.1

 ちょっとパーミッションの状況が分からないのですが、CGIから作成したファイルやディレクトリであれば、CGIから削除出来るのではないでしょうか?  ディレクトリ削除  rmdir ディレクトリ名  ファイル削除  unlink ファイル名

Oji_0930
質問者

お礼

早々の回答ありがとうございます。 CGIにどのように書けばいいのか、Perlについて全く分かっていなかったので、これだけでは分かりませんでしたが、#2の方が書いてくださったプログラムで無事に消すことができました。