174

I want to know how to see the permissions a particular file has. Which command should I type in the terminal? However, I don't want to change it.

CENTAUR
  • 3,249
  • 5
  • 22
  • 30

4 Answers4

226

If you want to see the the permission of a file you can use ls -l /path/to/file command.

For example

   ls -l acroread 
   -rwxr-xr-x 1 10490 floppy 17242 May  8  2013 acroread


What does this mean ?

First - represents a regular file. It gives you a hint of the type of object it is. It can have following values.

  • d (directory)
  • c (character device)
  • l (symlink)
  • p (named pipe)
  • s (socket)
  • b (block device)
  • D (door)
  • - (regular file)


r represents read permission.
w represents write permission and
x represents executable permission.

First combination of rwx represents permission for the owner .
Second combination of rwx represents permission for the group .
Third combination of rwx represents permission for the other of the file.


Octal notation

Permission of file can also be represented in octal notation.
In octal notation

Read or r is represented by 4,
Write or w is represented by 2
Execute x is represented by 1.

Sum of these three is use to represent the permission.

stat command can be used to view file permission in octal notation

  stat -c "%a %n" /path/of/file

For example

   stat -c "%a %n" acroread 
   755 acroread

Here you can see

For owner it is 4+2+1=7 (111 in binary)
For group it is 4+0+1=5 (101 in binary) and
For other it is 4+0+1=5 (101 in binary).

g_p
  • 18,504
  • 1
    ls -l /path/to/file | cut -c1-10 for just the permission fields. – einpoklum Dec 28 '20 at 11:31
  • What is input, and what is output here? What is the meaning of all the unmentioned things in the output? Speaking especially of the 1 and the 10490 and the floppy and the 17242. I can make sense of the May 8 2013, it is the creation date, formatted, I assume. Also, what is the meaning of the -c and the %a and the %n in the stat command? – Nils Lindemann Jul 08 '23 at 22:25
  • @NilsLindemann question is not about the interpretation of ls output but about file permission and I think all the answers here explain it very well. – g_p Jul 10 '23 at 06:34
  • @g_p Nonsense. You started it, now finish it. – Nils Lindemann Jul 10 '23 at 19:01
36

You can use either long listing:

ls -l [filename]

Or stat:

stat [filename]

Stat is more comprehensive; it shows you the access, modify and change times, as well as Inode and size information, which may or may not be useful to you.

  • 1
    Note: "it depends", that command will show standard permissions, however, your access can be limited by other means, acl, apparmor, and selinux can all limit access outside of what is shown by ls -l . – Panther Sep 25 '14 at 16:51
17

Regardless of your actually using ACL permissions, if you have the acl package installed, you can use getfacl <path> to get a pretty decent breakdown of permissions on that file.

$ getfacl /root/
# file: root/
# owner: root
# group: root
user::rwx
group::---
other::---

If you do use ACL permissions, it'll tell you about permissions that ls and stat just can't.

$ sudo setfacl -m u:oli:r /root
$ getfacl /root/
# file: root/
# owner: root
# group: root
user::rwx
user:oli:r--
group::---
mask::r--
other::---
g_p
  • 18,504
Oli
  • 293,335
0

You can also see file permission by right-clicking the file and selecting properties and there you will find permissions.