# How to check NTFS file permissions?

**URL:** <https://www.ruby-forum.com/t/how-to-check-ntfs-file-permissions/64544>\
**Category:** Ruby\
**Created:** [February 7, 2006, 8:51pm UTC](https://www.ruby-forum.com/t/how-to-check-ntfs-file-permissions/64544 "2006-02-07T20:51:50Z")\
**Posts on this page:** 3\
**Page:** 1

<div class="post-metadata">

**Author:** ![chris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/958977/32.png) [@chris](https://www.ruby-forum.com/u/chris)\
**Post date:** [February 7, 2006, 8:51pm UTC](https://www.ruby-forum.com/t/how-to-check-ntfs-file-permissions/64544/1 "2006-02-07T20:51:50Z")

</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:** ![chris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/958977/32.png) [@chris](https://www.ruby-forum.com/u/chris)\
**Post date:** [February 7, 2006, 9:53pm UTC](https://www.ruby-forum.com/t/how-to-check-ntfs-file-permissions/64544/2 "2006-02-07T21:53:47Z")

</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 V.

---

<div class="post-metadata">

**Author:** ![chris](https://www.ruby-forum.com/letter_avatar_proxy/v4/letter/c/958977/32.png) [@chris](https://www.ruby-forum.com/u/chris)\
**Post date:** [February 7, 2006, 10:49pm UTC](https://www.ruby-forum.com/t/how-to-check-ntfs-file-permissions/64544/3 "2006-02-07T22:49:28Z")

</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 B.'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 V. said:
