#26224 [Fbk->Opn]: fileperms() inaccurately reports permissions

2003-11-13 Thread justin dot white at mci dot com
 ID:   26224
 User updated by:  justin dot white at mci dot com
 Reported By:  justin dot white at mci dot com
-Status:   Feedback
+Status:   Open
 Bug Type: Filesystem function related
 Operating System: Windows 2000
 PHP Version:  4.3.3
 New Comment:

I think if you had read my post that you would have known that I
understood what attributes DOS offered.  However, we're not talking
about DOS here.

In Windows NT/2000/XP/2003, NTFS ACLs are completely ignored by PHP in
determining the file properties.  If libc does not provide a list of
NTFS permissions, the list should be available through other means. 
That's a pretty important function for filesystem access.

The only way to fix the problem is a change specifically for Win32 to
use the GetSecurityInfo() call from Win32 API.  Here's some information
on it from MSDN:

http://msdn.microsoft.com/library/default.asp?url=/library/en-us/security/security/getsecurityinfo.asp

Apparently, the Tcl-win folks have had the same problem in porting Tcl
to Windows.  Here's a discussion of their problems and possible
solutions:

https://sourceforge.net/tracker/?func=detail&atid=110894&aid=749876&group_id=10894


Previous Comments:


[2003-11-13 08:19:32] [EMAIL PROTECTED]

You do realize that DOS only has a notion of a limited
set of file attributes? (essentially, there is just a
read-only flag).

The "security tab" under windows displays the contents
of the NTFS ACL; PHP just uses the functions provided
by the MS libc, which seem to ignore the ACL.



[2003-11-13 04:14:27] justin dot white at mci dot com

Oops.  It looks like my statement about 4.3.2 was incorrect.  The
system I was looking at had some files labeled as "Read Only" in the
file properties, but the file security had no bearing on the result...

Back to the drawing board.



[2003-11-12 23:56:37] justin dot white at mci dot com

I have been able to confirm that version 4.3.2 does not have this bug. 
I will be testing 4.3.4 shortly to see whether the bug has been
resolved...



[2003-11-12 13:24:05] justin dot white at mci dot com

I also have a RH8 server with PHP 4.3.3 available and the sample code
works flawlessly.



[2003-11-12 13:23:13] justin dot white at mci dot com

No, the result is the same.  It appears that fileperms() and
is_readable/is_writeable are all reading their permissions from file
properties and not from filesystem permissions.

Also, is_executable returned the following error:

"Fatal error: Call to undefined function: is_executable()".

I didn't see where a note was given about availability in Win32 train,
so I don't what is up with that.  Both is_readable() and is_writeable()
were available, although incorrect.



The remainder of the comments for this report are too long. To view
the rest of the comments, please view the bug report online at
http://bugs.php.net/26224

-- 
Edit this bug report at http://bugs.php.net/?id=26224&edit=1


#26224 [Fbk->Opn]: fileperms() inaccurately reports permissions

2003-11-12 Thread justin dot white at mci dot com
 ID:   26224
 User updated by:  justin dot white at mci dot com
 Reported By:  justin dot white at mci dot com
-Status:   Feedback
+Status:   Open
 Bug Type: Filesystem function related
 Operating System: Windows 2000
 PHP Version:  4.3.3
 New Comment:

No, the result is the same.  It appears that fileperms() and
is_readable/is_writeable are all reading their permissions from file
properties and not from filesystem permissions.

Also, is_executable returned the following error:

"Fatal error: Call to undefined function: is_executable()".

I didn't see where a note was given about availability in Win32 train,
so I don't what is up with that.  Both is_readable() and is_writeable()
were available, although incorrect.


Previous Comments:


[2003-11-12 13:08:10] [EMAIL PROTECTED]

Does it work if you use the is_readable/is_writeable/is_executable
functions instead of performing bitmask operations on the output of
fileperms() ?



[2003-11-12 13:06:04] justin dot white at mci dot com

The server in the test setup uses NTFS in all filesystems.



[2003-11-12 13:04:27] justin dot white at mci dot com

Description:

On Linux, PHP 4.3.3 correctly returns file permissions from the
filesystem.  With Windows 2000 and IIS, PHP in CGI or ISAPI mode does
not.  The reproduce code assumes that another file (TEST.PHP) already
exists in the filesystem.  Any other file or directory could be used
(although the permissions are returned differently for directories). 
TEST.PHP can have any permissions, including explicitly DENY "Full
Access" for EVERYONE group.

Reproduce code:
---
PERMS = ';
  $read = ($test & 0x0004) ? 'r' : '-';
  $write = ($test & 0x0002) ? 'w' : '-';
  $execute = ($test & 0x0001) ? 'x' : '-';
  echo $read.$write.$execute.'';
?>

Expected result:

For files, returned results should be "PERMS = r--' if
permissions were set to READ.  Returned results should be "PERMS =
rw-" if permissions were set to READ/WRITE or READ/WRITE/MODIFY. 
Returned results should be "PERMS = rwx" if permissions were
set to READ/EXECUTE/WRITE or READ/EXECUTE/WRITE/MODIFY or FULL
CONTROL.

For directories, returned result should be similar (although
permissions on directory are more well-defined).

Actual result:
--
For files, returned results will always be "PERMS = rw-';

For directories, returned result will always be "PERMS =
rwx';

Even attempting this operation on "C:/pagefile.sys" returned "PERMS
= rw-".

Curiously, when marking the file as "read-only" in the file properties
(not security tab), the returned results are "PERMS = r--" for
files and "PERMS = r-x" for directories.





-- 
Edit this bug report at http://bugs.php.net/?id=26224&edit=1