Forum: Ruby-dev [ruby-trunk - Bug #6756][Open] FileUtils.rm rf がアクセス権のない空ディレクトリを削除しない

Posted by fumiyas (Fumiyasu SATOH) (Guest)
on 2012-07-20 03:47
(Received via mailing list)
Issue #6756 has been reported by fumiyas (Fumiyasu SATOH).

----------------------------------------
Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない
https://bugs.ruby-lang.org/issues/6756

Author: fumiyas (Fumiyasu SATOH)
Status: Open
Priority: Normal
Assignee:
Category: lib
Target version:
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]


=begin
UNIX の rm コマンドは、(({rm -rf dir})) でアクセス権がない空ディレクトリを
削除しますが、(({FileUtils.rm_rf("dir")})) は削除してくれません。

  $ mkdir -m 0 empty-noperm-dir
  $ sudo ls -la empty-noperm-dir
  合計 8
  d---------  2 fumiyas fumiyas 4096 7月 20 01:10 .
  drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 ..
  $ ruby -v -rfileutils -e 'FileUtils.rm_rf("empty-noperm-dir")'
  ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
  $ sudo ls -la empty-noperm-dir
  合計 8
  d---------  2 fumiyas fumiyas 4096 7月 20 01:10 .
  drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 ..
  $ rm -rf empty-noperm-dir
  $ sudo ls -la empty-noperm-dir
  ls: empty-noperm-dir にアクセスできません: そのようなファイルやディレクトリはありません

この例では指定したディレクトリがアクセス権がない空ディレクトリですが、
サブディレクトリの場合も同じ問題が発生します。

Windows ならしょうがない(私の知る限りアクセス権のないファイルは
削除不可なので)と思うのですが、少なくとも UNIX 系の OS では rm -rf と
同じく削除して欲しいです。
=end
Posted by mame (Yusuke Endoh) (Guest)
on 2012-11-03 03:14
(Received via mailing list)
Issue #6756 has been updated by mame (Yusuke Endoh).

Status changed from Open to Assigned
Assignee set to mame (Yusuke Endoh)

以下のパッチで直りますが、影響無いですかね。make check は通りました。
反対がなさそうならコミットします。が、問題が起きたら revert となります。


diff --git a/lib/fileutils.rb b/lib/fileutils.rb
index 67cc79f..b18ca30 100644
--- a/lib/fileutils.rb
+++ b/lib/fileutils.rb
@@ -1534,6 +1534,7 @@ private
           end
         end
       end
+    ensure
       yield self
     end


--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない
https://bugs.ruby-lang.org/issues/6756#change-32269

Author: fumiyas (Fumiyasu SATOH)
Status: Assigned
Priority: Normal
Assignee: mame (Yusuke Endoh)
Category: lib
Target version:
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]


=begin
UNIX の rm コマンドは、(({rm -rf dir})) でアクセス権がない空ディレクトリを
削除しますが、(({FileUtils.rm_rf("dir")})) は削除してくれません。

  $ mkdir -m 0 empty-noperm-dir
  $ sudo ls -la empty-noperm-dir
  合計 8
  d---------  2 fumiyas fumiyas 4096 7月 20 01:10 .
  drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 ..
  $ ruby -v -rfileutils -e 'FileUtils.rm_rf("empty-noperm-dir")'
  ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
  $ sudo ls -la empty-noperm-dir
  合計 8
  d---------  2 fumiyas fumiyas 4096 7月 20 01:10 .
  drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 ..
  $ rm -rf empty-noperm-dir
  $ sudo ls -la empty-noperm-dir
  ls: empty-noperm-dir にアクセスできません: そのようなファイルやディレクトリはありません

この例では指定したディレクトリがアクセス権がない空ディレクトリですが、
サブディレクトリの場合も同じ問題が発生します。

Windows ならしょうがない(私の知る限りアクセス権のないファイルは
削除不可なので)と思うのですが、少なくとも UNIX 系の OS では rm -rf と
同じく削除して欲しいです。
=end
Posted by Ayumu Aizawa (Guest)
on 2012-11-07 08:06
(Received via mailing list)
$B$"$$$6$o$G$9(B

> Windows $B$J$i$7$g$&$,$J$$(B($B;d$NCN$k8B$j%"%/%;%98"$N$J$$%U%!%$%k$O(B
> $B:o=|IT2D$J$N$G(B)$B$H;W$&$N$G$9$,!">/$J$/$H$b(B UNIX $B7O$N(B OS $B$G$O(B rm 
-rf $B$H(B
> $BF1$8$/:o=|$7$FM_$7$$$G$9!#(B

$B%Q%C%A$NE,MQ$K$OH?BP$G$9!#(B
Windows$B$G<B8=$G$-$J$$$N$G$"$l$P%W%i%C%H%U%)!<%`$K$h$C$FF1$8%a%=%C%I$G(B
$BL@$i$+$K0[$J$k7k2L$K$J$k$N$O$"$j$,$?$/$J$$$G$9!#(B
$B!JB>$K$b$=$&$$$&$N$,$N$"$k$N$+$b$7$l$J$$$G$9$,!#!#!#!K(B
Posted by KOSAKI Motohiro (Guest)
on 2012-11-07 14:48
(Received via mailing list)
> $B$"$$$6$o$G$9(B
>
>> Windows $B$J$i$7$g$&$,$J$$(B($B;d$NCN$k8B$j%"%/%;%98"$N$J$$%U%!%$%k$O(B
>> $B:o=|IT2D$J$N$G(B)$B$H;W$&$N$G$9$,!">/$J$/$H$b(B UNIX $B7O$N(B OS $B$G$O(B rm 
-rf $B$H(B
>> $BF1$8$/:o=|$7$FM_$7$$$G$9!#(B
>
> $B%Q%C%A$NE,MQ$K$OH?BP$G$9!#(B
> Windows$B$G<B8=$G$-$J$$$N$G$"$l$P%W%i%C%H%U%)!<%`$K$h$C$FF1$8%a%=%C%I$G(B
> $BL@$i$+$K0[$J$k7k2L$K$J$k$N$O$"$j$,$?$/$J$$$G$9!#(B
> $B!JB>$K$b$=$&$$$&$N$,$N$"$k$N$+$b$7$l$J$$$G$9$,!#!#!#!K(B

$B$[$H$s$I$9$Y$F$N%U%!%$%kA`:n$O(BOS$B$N%U%!%$%k%7%9%F%`$N%k!<%k$K(B
$BG{$i$l$F$k$N$G!"$3$3$@$15sF0$r0lCW$5$;$F$b0UL#$J$$$H;W$$$^$9!#(B
$B$^$?(BUnix$B$N(B9bit$B$7$+$J$$;($J%"%/%;%98"%3%s%H%m!<%k$@$H%o!<%/%"%i%&%s%I$,B>$K$J$$%1!<%9$b$"$k$N$G$7$g$&$,$J$$$s$8$c$J$$$+$J(B
Posted by mame (Yusuke Endoh) (Guest)
on 2013-02-02 05:13
(Received via mailing list)
Issue #6756 has been updated by mame (Yusuke Endoh).

Status changed from Assigned to Open
Assignee deleted (mame (Yusuke Endoh))
Target version set to next minor

まあ一応反対が出たのでコミットしません。

内容的には小崎さんに全面賛成で、「あの環境でできないから」とか言ってたら
File/FileUtils 関係はほとんど何も出来なくなるんじゃないかと思いますが、

まあ今から議論するのは 2.0.0 には遅いので next minor にします。
あと自分で判断できる内容じゃない気がするので担当ははずれておきます。
対応が遅くなってすみません。

--
Yusuke Endoh <mame@tsg.ne.jp>
----------------------------------------
Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない
https://bugs.ruby-lang.org/issues/6756#change-35778

Author: fumiyas (Fumiyasu SATOH)
Status: Open
Priority: Normal
Assignee:
Category: lib
Target version: next minor
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]


=begin
UNIX の rm コマンドは、(({rm -rf dir})) でアクセス権がない空ディレクトリを
削除しますが、(({FileUtils.rm_rf("dir")})) は削除してくれません。

  $ mkdir -m 0 empty-noperm-dir
  $ sudo ls -la empty-noperm-dir
  合計 8
  d---------  2 fumiyas fumiyas 4096 7月 20 01:10 .
  drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 ..
  $ ruby -v -rfileutils -e 'FileUtils.rm_rf("empty-noperm-dir")'
  ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
  $ sudo ls -la empty-noperm-dir
  合計 8
  d---------  2 fumiyas fumiyas 4096 7月 20 01:10 .
  drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 ..
  $ rm -rf empty-noperm-dir
  $ sudo ls -la empty-noperm-dir
  ls: empty-noperm-dir にアクセスできません: そのようなファイルやディレクトリはありません

この例では指定したディレクトリがアクセス権がない空ディレクトリですが、
サブディレクトリの場合も同じ問題が発生します。

Windows ならしょうがない(私の知る限りアクセス権のないファイルは
削除不可なので)と思うのですが、少なくとも UNIX 系の OS では rm -rf と
同じく削除して欲しいです。
=end
Posted by ko1 (Koichi Sasada) (Guest)
on 2013-02-18 01:12
(Received via mailing list)
Issue #6756 has been updated by ko1 (Koichi Sasada).

Assignee set to nobu (Nobuyoshi Nakada)
Target version changed from next minor to 2.1.0

fileutils のメンテナさんは居ないようですが、
http://bugs.ruby-lang.org/projects/ruby/wiki/Maintainers
こういうチケットはどうしておけばいいでしょうか...。

とりあえず nobu に振っておきます。

----------------------------------------
Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない
https://bugs.ruby-lang.org/issues/6756#change-36466

Author: fumiyas (Fumiyasu SATOH)
Status: Open
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category: lib
Target version: 2.1.0
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]


=begin
UNIX の rm コマンドは、(({rm -rf dir})) でアクセス権がない空ディレクトリを
削除しますが、(({FileUtils.rm_rf("dir")})) は削除してくれません。

  $ mkdir -m 0 empty-noperm-dir
  $ sudo ls -la empty-noperm-dir
  合計 8
  d---------  2 fumiyas fumiyas 4096 7月 20 01:10 .
  drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 ..
  $ ruby -v -rfileutils -e 'FileUtils.rm_rf("empty-noperm-dir")'
  ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
  $ sudo ls -la empty-noperm-dir
  合計 8
  d---------  2 fumiyas fumiyas 4096 7月 20 01:10 .
  drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 ..
  $ rm -rf empty-noperm-dir
  $ sudo ls -la empty-noperm-dir
  ls: empty-noperm-dir にアクセスできません: そのようなファイルやディレクトリはありません

この例では指定したディレクトリがアクセス権がない空ディレクトリですが、
サブディレクトリの場合も同じ問題が発生します。

Windows ならしょうがない(私の知る限りアクセス権のないファイルは
削除不可なので)と思うのですが、少なくとも UNIX 系の OS では rm -rf と
同じく削除して欲しいです。
=end
Posted by xibbar (Takeyuki Fujioka) (Guest)
on 2013-02-18 02:10
(Received via mailing list)
Issue #6756 has been updated by xibbar (Takeyuki Fujioka).


これはUNIXの挙動に合わせてもいいと思いました。
なので、
kosaki さんに +1
です。
反対の度合いはどうですか? > ayumin
----------------------------------------
Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない
https://bugs.ruby-lang.org/issues/6756#change-36479

Author: fumiyas (Fumiyasu SATOH)
Status: Open
Priority: Normal
Assignee: nobu (Nobuyoshi Nakada)
Category: lib
Target version: 2.1.0
ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]


=begin
UNIX の rm コマンドは、(({rm -rf dir})) でアクセス権がない空ディレクトリを
削除しますが、(({FileUtils.rm_rf("dir")})) は削除してくれません。

  $ mkdir -m 0 empty-noperm-dir
  $ sudo ls -la empty-noperm-dir
  合計 8
  d---------  2 fumiyas fumiyas 4096 7月 20 01:10 .
  drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 ..
  $ ruby -v -rfileutils -e 'FileUtils.rm_rf("empty-noperm-dir")'
  ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
  $ sudo ls -la empty-noperm-dir
  合計 8
  d---------  2 fumiyas fumiyas 4096 7月 20 01:10 .
  drwxrwxr-x 11 fumiyas fumiyas 4096 7月 20 01:10 ..
  $ rm -rf empty-noperm-dir
  $ sudo ls -la empty-noperm-dir
  ls: empty-noperm-dir にアクセスできません: そのようなファイルやディレクトリはありません

この例では指定したディレクトリがアクセス権がない空ディレクトリですが、
サブディレクトリの場合も同じ問題が発生します。

Windows ならしょうがない(私の知る限りアクセス権のないファイルは
削除不可なので)と思うのですが、少なくとも UNIX 系の OS では rm -rf と
同じく削除して欲しいです。
=end
Please log in before posting. Registration is free and takes only a minute.
Existing account (Switch to SSL-encrypted connection)
NEW: Do you have a Google/GoogleMail or Yahoo account? No registration required!
Log in with Google account | Log in with Yahoo account
No account? Register here.