====== Files/directories permissions and ACL ======
Do not forget that all permissions are related to user ID and group ID, not name.
===== Standard file permissions =====
A user can delete a file on which he isn't the owner, if he is the owner of the directory and rights on this folder allows him to write it
Ex:
manu@manu-opensuse:~> ls -ld /home/manu
drwx------ 45 manu users 4096 Aug 17 11:01 /home/manu
manu@manu-opensuse:~> ls -l test*
-rw-r--r-- 1 root root    0 Aug 17 12:01 test
-rw-r--r-- 1 manu users   0 Aug 17 12:02 test1
manu@manu-opensuse:~> rm test
rm: remove write-protected regular empty file 'test'? y
manu@opensuse:~> ls -l test*
-rw-r--r-- 1 manu users   0 Aug 17 12:01 test1
3 commands that can be used to change permissions...
chmod 644 
chmod {ugo}{+,-,=}{rwx} 
chmod {.:} 
chgoup  
===== Special permissions =====
==== SUID ====
Set user ID on a file
  chmod u+s 
  
This file 'll be executed as file owner, even if my owner is not the same.
  Ex: /usr/bin/passwd this will access the file /etc/shadow which requires root permissions
List all SUID files
  find / -perm /4000 -ls
==== GUID ====
Set group ID on a file or directory
  chmod g+s 
If you set GUID on a folder, all newly created files will inherit from group of the parent foder
List all GUID files
  find / -perm /2000 -ls
==== Sticky bit ====
Sticky bit: only user of the file or directory is authorized to remove the files inside the folder. It's used in conjuction with GUID
# chmod +t mydir/
# ls -l 
drwxrwsr-t  2 manu users     6 Aug 17 15:50 aaa
Now it can be useful to remove read access to others
# chmod o-rx mydir
# ls -l 
drwxrws--T  2 manu users     6 Aug 17 15:50 aaa
===== ACL =====
ACL are enable on most latest newly created filesystems by default, you can check using **tune2fs -l **
manu-opensuse:~ # tune2fs -l /dev/mapper/libraryvg-uncryptlv
tune2fs 1.43.8 (1-Jan-2018)
...
Default mount options:    user_xattr acl
manu@opensuse:~> umask
0022
New files will be created with permissions: 0777-0022=**0755 (rwxr-xr-x)**
First bit is for special permissions
List ACL on file or folder
manu@opensuse:~> getfacl aaa
# file: aaa
# owner: manu
# group: users
# flags: --t
user::rwx
group::r-x
other::r-x
When are ACL used ?
manu@opensuse:~> setfacl -R -m g:qemu:rx aaa
manu@opensuse:~> ls -l 
drwxr-xr-t+  2 manu users     6 Aug 17 15:50 aaa
If you see the **+** at end of permissions, use **getfacl**, because **ls -l** doesn't knows ACL
manu@opensuse:~> getfacl aaa
# file: aaa
# owner: manu
# group: users
# flags: --t
user::rwx
group::r-x
group:qemu:r-x
mask::r-x
other::r-x
If you use an **X** instead of **x**, execute applies only to directories, not for files 
New files doesn't inherit ACL from foder, so add also a default policy **d:**
manu@opensuse:~> setfacl -R -m d:g:qemu:rx aaa
manu@opensuse:~> getfacl aaa
# file: aaa
# owner: manu
# group: users
# flags: --t
user::rwx
group::r-x
group:qemu:r-x
mask::r-x
other::r-x
default:user::rwx
default:group::r-x
default:group:qemu:r-x
default:mask::r-x
default:other::r-x
===== User extended attribute =====
If extended user attribute is enable on a file or folder, you 'll see a dot (.) at end of file proterties
  -rw-r-----. 1 root root     32 Oct 15  2018 secret.key
lsattr 
You can change a file to secure delete, immutable... check **chattr** command