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

Issue #6756 has been reported by fumiyas (Fumiyasu SATOH).


Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない

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

$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

Issue #6756 has been updated by mame (Yusuke E.).

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

以下のパッチで直りますが、影響無いですかね。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 E. [email protected]

Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない

Author: fumiyas (Fumiyasu SATOH)
Status: Assigned
Priority: Normal
Assignee: mame (Yusuke E.)
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

$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

Issue #6756 has been updated by mame (Yusuke E.).

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

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

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

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


Yusuke E. [email protected]

Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない

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

Issue #6756 has been updated by ko1 (Koichi Sasada).

Assignee set to nobu (Nobuyoshi N.)
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 がアクセス権のない空ディレクトリを削除しない

Author: fumiyas (Fumiyasu SATOH)
Status: Open
Priority: Normal
Assignee: nobu (Nobuyoshi N.)
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

Issue #6756 has been updated by xibbar (Takeyuki F.).

これはUNIXの挙動に合わせてもいいと思いました。
なので、
kosaki さんに +1
です。
反対の度合いはどうですか? > ayumin

Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない

Author: fumiyas (Fumiyasu SATOH)
Status: Open
Priority: Normal
Assignee: nobu (Nobuyoshi N.)
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

Issue #6756 has been updated by Hiroshi SHIBATA.

Status changed from Open to Closed
% Done changed from 0 to 100

Applied in changeset r47150.


  • lib/fileutils.rb: enable to remove with non-owner directory.
    [ruby-dev:45976] [Bug #6756]
  • test/fileutils/test_fileutils.rb: add testcase for #6756.

Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない

  • Author: Fumiyasu SATOH
  • Status: Closed
  • Priority: Normal
  • Assignee: Nobuyoshi N.
  • Category: lib
  • Target version: current: 2.2.0
  • ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
  • Backport:

=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

Issue #6756 has been updated by Hiroshi SHIBATA.

Target version changed from 2.1.0 to current: 2.2.0


Bug #6756: FileUtils.rm_rf がアクセス権のない空ディレクトリを削除しない

  • Author: Fumiyasu SATOH
  • Status: Open
  • Priority: Normal
  • Assignee: Nobuyoshi N.
  • Category: lib
  • Target version: current: 2.2.0
  • ruby -v: ruby 1.9.3p194 (2012-04-20 revision 35410) [x86_64-linux]
  • Backport:

=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