# \[BUG;trunk\] FileUtils.mkdir\_p with SELinux

**URL:** <https://www.ruby-forum.com/t/bug-trunk-fileutils-mkdir-p-with-selinux/181225>\
**Category:** Development\
**Created:** [January 7, 2010, 3:17pm UTC](https://www.ruby-forum.com/t/bug-trunk-fileutils-mkdir-p-with-selinux/181225 "2010-01-07T15:17:51Z")\
**Posts on this page:** 1\
**Page:** 1

<div class="post-metadata">

**Author:** ![Yugui](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/y/ac91a4/32.png) [@Yugui](https://www.ruby-forum.com/u/Yugui)\
**Post date:** [January 7, 2010, 3:17pm UTC](https://www.ruby-forum.com/t/bug-trunk-fileutils-mkdir-p-with-selinux/181225/1 "2010-01-07T15:17:51Z")

</div>

Yuguie$B$G$9!#e(B

e$B\<!$N\>l9g!“e(BErrno::EACCESe$B$NH/@8$r4|BT$7$^$7$?$,!”\<B:]$K$Oe(BErrno::EEXISTe$B$,H/@8$7$^$7$?!#e(B

- FileUtils.mkdir\_p “/a/b/c” e$B$r\<B9Te(B
- e$B%G%#%l%/%H%je(B /a/b e$B$O4{$KB8:\_$9$ke(B
- SELinuxe$B4D6-$G!“e(Brubye$B%W%m%;%9$Ke(B /a e$B$re(B read, search  
e$B$9$k8"8B$,$”$k$,e(B/a/be$B$re(Bgetattre$B$9$k8"8B$,$J$$e(B

e$B$3$l$O!“e(Bmkdir\_pe$B$,$H$j$”$($:=g$Ke(B/a, /a/b/,  
/a/b/ce$B$N:n@.$r;n$_!"ESCf$GNc30$,@8$8$?\>l9ge(B  
File.directory?e$B$G:n$m$&$H$7$?%G%#%l%/%H%j$,B8:_$9$k\>l9g$O0.$j$D$V$7$FB39T$9$k@oN,$r\<h$C$F$$$k$?$a$G$9!#e(B  
FileUtils.mkdir("/a/b/c")e$B$9$k2aDx$Ge(Bmkdir("/a/b")e$B$,e(BEEXISTe$B$rJV$9$N$OJL$K$\*$+$7$J$3$H$G$O$"$j$^$;$s$,!“e(B  
File.directory?(”/a/b")e$B$,Fb$Ge(Bstat("/a/b")e$B$,e(BEACCESe$B$rJV$7!"7k2L$H$7$Fe(Bmkdire$B$Ne(BEEXISTe$B$,e(BErrno::EEXISTe$B$H$7$FNcAw=P=P$5$l$^$9!#e(B

e$B$3$3$G!“e(Bmkdir(2)e$B$,e(BEACCESe$B$de(BEDQUOTe$B$rJV$7$?\>l9g$O$H$b$+$/!”\>/$J$/$H$be(BEEXISTe$B$N\>l9g$Oe(BFile.directory?("/a/b")e$B$re(B  
e$B;n9T$;$:$KB39T$7$Fe(Bmkdir("/a/b/c")e$B$G%(%i!\<$,H/@8$9$k$N$rBT$D$Y$-$G$O$J$$$G$7$g$&$+!#$=$&$9$k$H!"\>e5-$N\>l9ge(B  
mkdir\_p("/a/b/c")e$B$Oe(BErrno::EACCESe$B$rH/@8$7$F!"LdBj$N=j:\_$,$h$jJ,$+$j$d$9$/$J$j$^$9!#e(B

diff --git a/lib/fileutils.rb b/lib/fileutils.rb  
index 8c522ce…1391b50 100644  
— a/lib/fileutils.rb  
+++ b/lib/fileutils.rb  
@@ -215,6 +215,7 @@ module FileUtils  
stack.reverse\_each do |dir|  
begin  
fu\_mkdir dir, options[:mode]

- 

```
   rescue Errno::EEXIST
   rescue SystemCallError => err
     raise unless File.directory?(dir)
   end
```
