Take the 2-minute tour ×
Unix & Linux Stack Exchange is a question and answer site for users of Linux, FreeBSD and other Un*x-like operating systems.. It's 100% free, no registration required.

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?

share|improve this question
    
Not seeing anything enlightening from apropos mode or apropos permissions on OS X and Debian. Do you know what platform/distribution you were using? Could it have been a site-local command? You could script such a tool using dirname and stat. –  mrb Jul 9 '13 at 17:22
    
Using Arch Linux, and a pretty vanilla installation so not too many extra tools installed. Note that it was owners AND/OR permissions, I'm not sure at this point. Either would be useful. –  user Jul 10 '13 at 6:43

4 Answers 4

up vote 3 down vote accepted

The command could have been:

namei -m /home/user/dir/child/file
share|improve this answer

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:

  • -p - permissions
  • -u - username/userid
  • -f - full path
  • -i - don't print indentation lines
  • -d - print directories only

References

share|improve this answer
1  
I think it was asked to display the ancestors of /home/user/dir/child/file not the children. –  Raphael Ahrens Jul 10 '13 at 5:12
    
@RaphaelAhrens - yes I realize that but there isn't a command that I'm aware of that does exactly that, there is however the tree command that does what I showed and it's suspiciously similar to what the OP was thinking of. –  slm Jul 10 '13 at 6:18
    
Is the -u really necessary? It seems it's default here (Tree ver. 1.6.0 under GNU bash 4.2.45). Is there an option to silence the "username/userid"? –  Nikos Alexandris Dec 13 '13 at 23:42
    
@NikosAlexandris - if I drop that switch I do not get the username. My ver: tree v1.6.0. I'm on Fedora 19, GNU bash, version 4.2.45(1)-release (x86_64-redhat-linux-gnu) . –  slm Dec 14 '13 at 0:17
    
Different "defaults" between the bash versions? Thanks for informing. –  Nikos Alexandris Dec 16 '13 at 10:56

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'
share|improve this answer
1  
You can reverse with | tac if you have it, or | sed '1!G;h;$!d' if not. –  mrb Jul 9 '13 at 17:44
2  
This will break for relative paths. Do [ "$l_path" != / -a "$l_path" != . ] instead. –  paraxor Jul 9 '13 at 17:52
    
@Evan Teitelman dirname should gives the full path –  Raphael Ahrens Jul 9 '13 at 17:57
    
@RaphaelAhrens no, it'll return a dot for relative path in the end. –  rush Jul 9 '13 at 17:58
1  
Also, stat -l should probably be stat or ls -ld. –  paraxor Jul 9 '13 at 17:59

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.

share|improve this answer
2  
I don't think that's what is asked for. Looks like the asker is looking for a list of permissions of directories that lead to a file. –  Mat Jul 9 '13 at 17:13

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

Not the answer you're looking for? Browse other questions tagged or ask your own question.