Motivate from this question and answer https://askubuntu.com/a/932719/927010
To be able to compare them, we should look at them from the same perspective, so:
chmod +x is equal to chmod ugo+x (Based on umask value)
chmod 755 is equal to chmod u=rwx,go=rx
Firstly you should know that:
+means add this permission to the other permissions that the file already has.=means ignore all permissions, set them exactly as I provide.
- So all of the "read, write, execute, sticky bit, suid and guid" will be ignored and only the ones provided will be set.
read = 4, write = 2, execute = 1
- Here is the binary logic behind it (if you're interested):
Symbolic: r-- -w- --x | 421
Binary: 100 010 001 | -------
Decimal: 4 2 1 | 000 = 0
| 001 = 1
Symbolic: rwx r-x r-x | 010 = 2
Binary: 111 101 101 | 011 = 3
Decimal: 7 5 5 | 100 = 4
/ / / | 101 = 5
Owner ---/ / / | 110 = 6
Group ------/ / | 111 = 7
Others ---------/ | Binary to Octal chart
Using +x you are telling to add (+) the executable bit (x) to the owner, group and others.
- it's equal to
ugo+xoru+x,g+x,o+x - When you don't specify which one of the owner, group or others is your target, in case of
xit will considers all of them. And as @Rinzwind pointed out, it's based onumaskvalue, it adds the bit to the onesumaskallows. remember if you specify the target likeo+rthenumaskdoesn't have any effect anymore. - It doesn't touch the other mods (permissions).
- You could also use
u+xto only add executable bit to the owner.
Using 755 you are specifying:
- 7 -->
u=rwx(4+2+1 for owner) - 5 -->
g=rx(4+1 for group) - 5 -->
o=rx(4+1 for others)
So chmod 755 is like: chmod u=rwx,g=rx,o=rx or chmod u=rwx,go=rx.
