How to get permission number by string : -rw-r--r--
r=4
w=2
x=1
in every group. Your example is 6(r+w=4+2)4(r=4)4(r=4).
Please check stat
output:
# stat .xsession-errors
File: ‘.xsession-errors’
Size: 839123 Blocks: 1648 IO Block: 4096 regular file
Device: 816h/2070d Inode: 3539028 Links: 1
Access: (0600/-rw-------) Uid: ( 1000/ lik) Gid: ( 1000/ lik)
Access: 2012-05-30 23:11:48.053999289 +0300
Modify: 2012-05-31 07:53:26.912690288 +0300
Change: 2012-05-31 07:53:26.912690288 +0300
Birth: -
The full permissions mode number is a 4-digit octal number, though most of the time, you only use the 3 least-significant digits. Add up each group in the permissions string, taking r=4, w=2, x=1. For example:
421421421
-rwxr-xr--
\_/ -- r+w+x = 4+2+1 = 7
\_/ -- r+_+x = 4+0+1 = 5
\_/ -- r+_+_ = 4+0+0 = 4 => 0754
Now, sometimes you'll see an odd modestring like this:
-rwsr-xr-T
The fourth digit is overloaded onto the x
bits in the modestring. If you see a letter other than x
there, then it means one of these "special" fourth-digit bits is set, and if the letter is lower case, then x
for that position is also set. So the translation for this one is:
4 2 1
421421421
-rwsr-xr-T
+ + + -- s+_+T = 4+0+1 = 5
\_/ -- r+w+s = 4+2+1 = 7 (s is lowercase, so 1)
\_/ -- r+_+x = 4+0+1 = 5
\_/ -- r+_+T = 4+0+0 = 4 (T is uppercase, so 0) => 05754
The standard UNIX way to show that a number is octal is to start it with a zero. GNU chmod
will assume the mode you're giving it is octal anyway, but it's safest to prepend the zero.
Finally, if you see a +
at the end of the modestring:
-rwxr-xr-x+
then that means the file has extended permissions, and you'll need more than chmod
. Look into the setfacl
and getfacl
commands, for starters.