# How to check NTFS file permissions?

**URL:** <https://rubytalk.org/t/how-to-check-ntfs-file-permissions/24713>\
**Category:** ruby-talk\
**Created:** [7 February 2006 19:49 UTC](https://rubytalk.org/t/how-to-check-ntfs-file-permissions/24713 "2006-02-07T19:49:08Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![Chris4](https://avatars.discourse-cdn.com/v4/letter/c/50afbb/32.png) [@Chris4](https://rubytalk.org/u/Chris4)\
**Post date:** [7 February 2006 19:49 UTC](https://rubytalk.org/t/how-to-check-ntfs-file-permissions/24713/1 "2006-02-07T19:49:08Z")

</div>

This problem comes up because WinXP keeps putting it's 'System Volume  
Information' directories on each partition. In this case, I think the FS  
was created by an earlier incarnation of the machine I'm on.

However it is marked Read Only, and there doesn't seem to be any way to  
change it. Properties window says it is Read only (with a square, not a  
checkmark) and Hidden, and it lets me think I'm changing it, even asks if  
I want to change all subordinates, but never changes it. That's an OT,  
but I'd be happy to hear a solution to it.

The problem I'm having is that File.readable? and File.executable? both  
give me true for that directory, but if I try Dir.chdir into it, it throws  
an exception.

Is there a check I can do, or is my only option: rescue Errno::EACCES?  
And I guess the followup is: is it much more expensive in Ruby to catch  
exceptions than to execute regular code (as it is in Java)?

Thanks,

-Chris

---

<div class="post-metadata">

**Author:** ![David\_Vallner](https://avatars.discourse-cdn.com/v4/letter/d/eb9ed0/32.png) [@David\_Vallner](https://rubytalk.org/u/David_Vallner)\
**Post date:** [7 February 2006 20:52 UTC](https://rubytalk.org/t/how-to-check-ntfs-file-permissions/24713/2 "2006-02-07T20:52:30Z")

</div>

Dňa Utorok 07 Február 2006 20:49 Chris napísal:

> This problem comes up because WinXP keeps putting it's 'System Volume  
> Information' directories on each partition. In this case, I think the FS  
> was created by an earlier incarnation of the machine I'm on.
> 
> However it is marked Read Only, and there doesn't seem to be any way to  
> change it. Properties window says it is Read only (with a square, not a  
> checkmark) and Hidden, and it lets me think I'm changing it, even asks if  
> I want to change all subordinates, but never changes it. That's an OT,  
> but I'd be happy to hear a solution to it.

The Properties window doesn't display whether a directory is or is not  
readable as per the POSIX-y meaning of the concept. It should technically  
display as read-only, if the contents of the directory are read-only, but the  
contents aren't actually checked, if only because it might end up taking  
bloody long. I'm not even sure how those vestigial FAT attributes map to NTFS  
ones. If you really want to get nitty-gritty with the system, check whatever  
setting it is that's hiding the NTFS ACLs from you and look at those.

Slight sidenote: You really don't want to touch System Volume Information  
unless you really know what you're doing.

> The problem I'm having is that File.readable? and File.executable? both  
> give me true for that directory, but if I try Dir.chdir into it, it throws  
> an exception.
> 
> Is there a check I can do, or is my only option: rescue Errno::EACCES?  
> And I guess the followup is: is it much more expensive in Ruby to catch  
> exceptions than to execute regular code (as it is in Java)?

Do you expect to run into inaccessible directories in the script more often  
than you actually process data in accessible ones? Unless so, I say don't  
bother and use Errno::EACCES. The overhead isn't likely to be significant  
compared to total execution time.

David Vallner

---

<div class="post-metadata">

**Author:** ![Chris4](https://avatars.discourse-cdn.com/v4/letter/c/50afbb/32.png) [@Chris4](https://rubytalk.org/u/Chris4)\
**Post date:** [7 February 2006 21:48 UTC](https://rubytalk.org/t/how-to-check-ntfs-file-permissions/24713/3 "2006-02-07T21:48:20Z")

</div>

POSIX-y - oh, right. I'm still not used to crossing the Win/not-Win line  
yet 🙂 It was strange to see the file attributes of ctime = change time,  
instead of create time. Back to the point, though, if Dir.chdir isn't a  
read and it isn't an execute (and I assume it isn't a write), what kind of  
operation is it? And can someone add that method to Ruby's File or Dir?

I'm hoping I don't run into this problem often - I've gone through a  
couple larger partitions and things have worked well except for this one  
thing. I'm more than a little surprised that it happened with SVI but not  
with Recycler. And while I don't trust what I can't see and Window's  
ACLs are definitely on that list, it gets hard to do anything if I don't  
assume things are working the way it looks like they should. No one has  
made enough documentation to dissuade that state of affairs ☹

To address Daniel Berger's comment (which jogged my memory of this),  
unfortunately in the WindowsXP GUI nothing is cut-and-dried: a checkbox  
square can contain a square instead of a checkmark if it is only partially  
true. Here it must be that some of the directory's files are read-only  
but others are not. So it may not reflect anything about the directory  
itself. I'm beginning to understand my confusion...

Well, Thanks guys,

-Chris

David Vallner said:

> **···**
>
> > DÅa Utorok 07 FebruÃ¡r 2006 20:49 Chris napÃ­sal:
> > 
> > > This problem comes up because WinXP keeps putting it's 'System Volume  
> > > Information' directories on each partition. In this case, I think the  
> > > FS  
> > > was created by an earlier incarnation of the machine I'm on.
> > > 
> > > However it is marked Read Only, and there doesn't seem to be any way to  
> > > change it. Properties window says it is Read only (with a square, not a  
> > > checkmark) and Hidden, and it lets me think I'm changing it, even asks  
> > > if  
> > > I want to change all subordinates, but never changes it. That's an OT,  
> > > but I'd be happy to hear a solution to it.
> > 
> > The Properties window doesn't display whether a directory is or is not  
> > readable as per the POSIX-y meaning of the concept. It should technically  
> > display as read-only, if the contents of the directory are read-only, but  
> > the  
> > contents aren't actually checked, if only because it might end up taking  
> > bloody long. I'm not even sure how those vestigial FAT attributes map to  
> > NTFS  
> > ones. If you really want to get nitty-gritty with the system, check  
> > whatever  
> > setting it is that's hiding the NTFS ACLs from you and look at those.
> > 
> > Slight sidenote: You really don't want to touch System Volume Information  
> > unless you really know what you're doing.
> > 
> > > The problem I'm having is that File.readable? and File.executable? both  
> > > give me true for that directory, but if I try Dir.chdir into it, it  
> > > throws  
> > > an exception.
> > > 
> > > Is there a check I can do, or is my only option: rescue Errno::EACCES?  
> > > And I guess the followup is: is it much more expensive in Ruby to catch  
> > > exceptions than to execute regular code (as it is in Java)?
> > 
> > Do you expect to run into inaccessible directories in the script more  
> > often  
> > than you actually process data in accessible ones? Unless so, I say don't  
> > bother and use Errno::EACCES. The overhead isn't likely to be significant  
> > compared to total execution time.
> > 
> > David Vallner
