Ubuntu – File permissions: why can’t I list a directory?

command linelspermissions

I am able to list directories in a root shell,

root@ThinkPad:~# ll /media/
total 36
drwxr--r--  6 root root  4096 2011-05-12 16:41 ./
drwxr-xr-x 22 root root  4096 2011-05-12 13:14 ../
drwxr-xr-x  5 root root  4096 2011-05-12 15:56 hd/
drwxr--r--  2 root root 16384 2011-05-12 14:20 lost+found/
drwxr-xr-x  5 root root  4096 2011-05-12 16:34 main/
drwxr--r--  4 root root  4096 2011-05-12 16:41 .Trash-0/

but not from my user account:

alex@ThinkPad:~$ ll /media/
ls: cannot access /media/..: Permission denied
ls: cannot access /media/hd: Permission denied
ls: cannot access /media/lost+found: Permission denied
ls: cannot access /media/.Trash-0: Permission denied
ls: cannot access /media/.: Permission denied
ls: cannot access /media/main: Permission denied
total 0
d????????? ? ? ? ?                ? ./
d????????? ? ? ? ?                ? ../
d????????? ? ? ? ?                ? hd/
d????????? ? ? ? ?                ? lost+found/
d????????? ? ? ? ?                ? main/
d????????? ? ? ? ?                ? .Trash-0/

I don't understand why I can't see files (/media has a+r permission).

Best Answer

To be able to "enter" a directory, which is kind of a prerequisite for listing its content, you also need the +x permission.

Also note that this is a requirement all the way from the top (root) of the directory structure. To be able to enter a /foo/bar/baz directory a user needs to have the +x permission on every single intermediate directory.