#  Permissions

#### Quelques commandes:

- su - temporarily become the superuser
- sudo - temporarily become the superuser
- chmod - modifier les droits d'accèès au fichier
- chown - changer le possesseur du fichier 
- chgrp - changer a file's group ownership
- umask - permissions par défaut



```
  -rwxrwxrwx

  [- (fichier) ou d (dossier)] [rwx (possesseur) - rwx (groupe) - rwx (autres)]


```

| read value + | write value + | execute value = | numericvalue: | symbolic equivalent: |
| :----------: | :-----------: | :-------------: | :-----------: | :------------------: |
|              |               |                 |               |                      |
|              |               |      **1**      |     **1**     |        **x**         |
|              |     **2**     |                 |     **2**     |        **w**         |
|              |     **2**     |      **1**      |     **3**     |        **wx**        |
|    **4**     |               |                 |     **4**     |        **r**         |
|    **4**     |               |      **1**      |     **5**     |        **rx**        |
|    **4**     |     **2**     |                 |     **6**     |        **rw**        |
|    **4**     |     **2**     |      **1**      |     **7**     |       **rwx**        |



#### chmod: change les permissions pour un fichier ou un dossier

```
rwx rwx rwx = 111 111 111
rw- rw- rw- = 110 110 110
rwx —–- -–— = 111 000 000
```

et

```
rwx = 111 in binary = 7
rw- = 110 in binary = 6
r-x = 101 in binary = 5
r–- = 100 in binary = 4
```

**Les réglages les plus courants:**

*-applications:* 

```
777 (rwxrwxrwx)
755 (rwxr-xr-x)
700 (rwx——)
```

*-fichiers:* 

```
666 (rw-rw-rw-)
644 (rw-r–r–)
600 (rw——-)
```

**Permissions pour les dossiers:**

- r: permet de lister le contenu d'un répertoire si l'attribut x est mis

- w: les fichiers à l'intérieur du répertoire peuvent être crées, effacés ou renommer si l'attribut x est mis
- x: permet d'entrer dans le répertoire (cd dir)

```
777 (rwxrwxrwx)
755 (rwxr-xr-x)
700 (rwx——)
```



```bash
bruno@macbook-pro:~$ ls -la
-rw-r--r--@  1 bruno  staff   848  6 aoû 09:20 backup-syno.tar.gz
bruno@macbook-pro:~/test-dossier-2$ chmod 777 backup-syno.tar.gz
bruno@macbook-pro:~$ ls -la
-rwxrwxrwx@  1 bruno  staff   848  6 aoû 09:20 backup-syno.tar.gz
```



#### chown: change le possesseur d'un fichier ou dossier (superuser)

```bash
bruno@macbook-pro:~$ ls -la
-rwxrwxrwx@ 1 bruno staff 848 6 aoû 09:20 backup-syno.tar.gz
bruno@macbook-pro:~$ sudo chown root backup-syno.tar.gz
Password:
bruno@macbook-pro:~$ ls -la
-rwxrwxrwx@ 1 root staff 848 6 aoû 09:20 backup-syno.tar.gz
```



#### chgrp: change le groupe d'un fichier ou dossier (superuser)

```bash
bruno@macbook-pro:~$ ls -la
-rwxrwxrwx@ 1 root staff 848 6 aoû 09:20 backup-syno.tar.gz
bruno@macbook-pro:~$ sudo chgrp admin backup-syno.tar.gz
bruno@macbook-pro:~$ ls -la
-rwxrwxrwx@ 1 root admin 848 6 aoû 09:20 backup-syno.tar.gz
```



#### umask:

définit les permissions par défaut d'un répertoire ou d'un fichier créé.

```bash
Par défaut:
$ umask
022
# 666 ANT NOT 022 = 644 (fichiers)
# 777 AND NOT 022 = 755 (dossiers)

$ umask -S
u=rwx,g=rx,o=rx
```

Modifier les permissions par défaut:

```bash
$ umask 777
# Personne n'aura accès aux fichiers nouvellement crées
```



#### setuid:

```
# chown root:root monshell.sh
# chmod 4755 monshell.sh
# exit
$ ./monshell.sh
```



#### Voir les autorisations au format octal:

 **-Linux:**

```bash
stat -c '%n %a' *
```

 **-OSX**:

```bash
bruno@Parallels-VM ~ $ stat -c '%n %a' *
apt-off.sh 755
Bureau 755
Documents 755
Images 755
```
