I remember doing someting like "XXX /home/user/dir/child/file" and it returned the owner and/or permission of:
/home /home/user /home/user/dir /home/user/child /home/user/child/file
But I don't remember what this command was. Anybody any idea?
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems. It only takes a minute to sign up.Sign up to join this community
I think you might be thinking of the
tree command. For example:
$ tree -pufid apps/glassfish3/ | less apps/glassfish3 [drwxr-xr-x saml ] apps/glassfish3/bin [drwxr-xr-x saml ] apps/glassfish3/glassfish [drwxr-xr-x saml ] apps/glassfish3/glassfish/bin [drwxr-xr-x saml ] apps/glassfish3/glassfish/config [drwxr-xr-x saml ] apps/glassfish3/glassfish/docs [drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api [drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/doc-files [drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax [drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/annotation [drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/annotation/security [drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/annotation/sql [drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/decorator [drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/ejb [drwxr-xr-x saml ] apps/glassfish3/glassfish/docs/api/javax/ejb/embeddable ... ...
The above switches do the following:
-f- full path
-i- don't print indentation lines
-d- print directories only
After giving it some thougth I came up with this
#!/bin/sh l_path=$1 while [ "$l_path" != / -a "$l_path" != . ]; do ls -ld $l_path l_path=$(dirname -- "$l_path") done
The output looks like this
-rw------- 1 tant tant 181016423 Jun 25 23:49:17 2013 /home/tant/test_file drwxr-xr-x 85 tant tant 5632 Jul 9 19:40:11 2013 /home/tant lrwxr-xr-x 1 root wheel 8 Sep 4 23:53:27 2012 /home -> usr/home
I hope it is ok that it is in reverse order.
Based on the comments, here's a way to list from the root downwards:
#!/bin/sh l_path=$1 while [ "$l_path" != / -a "$l_path" != . ]; do ls -ld $l_path l_path=$(dirname -- "$l_path") done | sed '1!G;h;$!d'
The command you are looking for listing permissions and owners/groups is ls -l.
-l option is used for long listing format.
ls -l /path/to/list
In addition, if you want to list and the hidden files then add the -a(all) option.
ls -al /path/to/list
Also, if you want to list permissions in your subdirectories use -R (recursive) option.
ls -Rl /path/to/list
The first column displays the permissions(read(r), write(w), execute(x)) and some special permissions(directories(d), -(regular file)) and the 3rd and 4th column shows you the file/directory owner and group respectively.