- ベストアンサー
所有者がWWWのファイルの削除
あるCGI(Perl?)プログラムを設置して初期設定をして ブラウザからアクセスしたところ、設定にミスがあったこともあって、所有者がWWWのファイルやフォルダが作成されてしまいました。 所有者が異なるために、FTPなどによる削除ができず困っています。 CGIなどを使ってこれらのファイルを消去することは可能でしょうか?この目的に適したプログラムがあれば教えてください。 ちなみに、ファイルやフォルダの数は全部あわせても10個程度です。
- みんなの回答 (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
その他の回答 (2)
- Dpop
- ベストアンサー率51% (279/544)
試してないですけど、こんな感じで良いと思います。 #!/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)
ちょっとパーミッションの状況が分からないのですが、CGIから作成したファイルやディレクトリであれば、CGIから削除出来るのではないでしょうか? ディレクトリ削除 rmdir ディレクトリ名 ファイル削除 unlink ファイル名
お礼
早々の回答ありがとうございます。 CGIにどのように書けばいいのか、Perlについて全く分かっていなかったので、これだけでは分かりませんでしたが、#2の方が書いてくださったプログラムで無事に消すことができました。
お礼
ありがとうございました。無事、削除することができました。 最初はダメもとで、ディレクトリを指定してみてダメでした。 ファイルを削除し、その後ディレクトリを削除することで無事に削除することができました。