This is by design; it is the way POSIX is supposed to work.
From Wikipedia ( http://en.wikipedia.org/wiki/File_system_permissions#Classes ):
* The execute permission, which grants the ability to execute a file. This permission must be set for executable binaries (for example, a compiled c++ program) or shell scripts (for example, a Perl program) in order to allow the operating system to run them. When set for a directory, this permission grants the ability to traverse its tree in order to access files or subdirectories, but not see files inside the directory (unless read is set).
This is by design; it is the way POSIX is supposed to work.
From Wikipedia ( http:// en.wikipedia. org/wiki/ File_system_ permissions# Classes ):
* The execute permission, which grants the ability to execute a file. This permission must be set for executable binaries (for example, a compiled c++ program) or shell scripts (for example, a Perl program) in order to allow the operating system to run them. When set for a directory, this permission grants the ability to traverse its tree in order to access files or subdirectories, but not see files inside the directory (unless read is set).