Domande
Come sistemo in sicurezza un’intera web root?
find /var/www -type d -exec chmod 755 {} + e find /var/www -type f -exec chmod 644 {} +, poi chown -R www-data: /var/www. Mai chmod -R 777.
L’intero sistema dei permessi sta in una pagina. Stampala, o tieni aperto il calcolatore chmod per qualsiasi cosa interattiva.
| -rwxr-xr-x | tipo, proprietario rwx, gruppo r-x, altri r-x |
| r = 4, w = 2, x = 1 | somma per gruppo → cifra ottale |
| rwx r-x r-x | = 7 5 5 = 755 |
| d l c b p s | directory, symlink, dispositivo a caratteri, a blocchi, pipe, socket |
| 644 | file: proprietario rw, tutti r |
| 755 | directory, script, binari |
| 600 / 700 | file / directory privati (chiavi SSH, .env, ~/.ssh) |
| 664 / 775 | file / directory scrivibili dal gruppo |
| 2775 | directory condivisa: i nuovi file ereditano il gruppo (setgid) |
| 1777 | /tmp: tutti scrivono, solo i proprietari cancellano (sticky) |
| 4755 | binario setuid (passwd, sudo) |
| 777 | quasi sempre sbagliato |
| u g o a | user (proprietario), gruppo, altri, tutti |
| + - = | aggiungi, togli, imposta esattamente |
| chmod u+x f | il proprietario può eseguire |
| chmod go-w f | gruppo e altri perdono la scrittura |
| chmod a=r f | tutti in sola lettura |
| chmod u=rwx,g=rx,o= f | = 750 |
| chmod -R u=rwX,go=rX dir | ricorsivo; X = esecuzione solo per directory e file già eseguibili |
| chmod g+s dir | setgid su una directory |
| chmod +t dir | bit sticky |
| chmod --reference=a b | copia il modo di a su b |
| 4 setuid | esegui come il proprietario del file; appare come s nella x del proprietario |
| 2 setgid | esegui come il gruppo; sulle directory: eredita il gruppo; s nella x del gruppo |
| 1 sticky | nelle directory: solo il proprietario può cancellare; t nella x degli altri |
| S / T | maiuscola = bit speciale senza esecuzione (di solito un errore) |
| chown utente file | cambia proprietario (solo root) |
| chown utente:gruppo file | proprietario e gruppo |
| chown -R www-data: /var/www | ricorsivo; gruppo vuoto = gruppo di login dell’utente |
| chgrp gruppo file | solo il gruppo (può farlo un membro) |
| chown -h | cambia il symlink stesso, non la destinazione |
| umask 022 | file 644, directory 755 (default) |
| umask 077 | file 600, directory 700 (privato) |
| umask 002 | file 664, directory 775 (lavoro di gruppo) |
| UMask=0077 | in un [Service] systemd |
| find . -type f -perm -o+w | file scrivibili da tutti |
| find / -perm -4000 -type f | binari setuid |
| find . -type d -exec chmod 755 {} + | correggi solo le directory |
| find . -type f -exec chmod 644 {} + | correggi solo i file |
| stat -c '%a %U %G %n' * | modo ottale, proprietario, gruppo, nome |
| ls -ld dir | la directory stessa, non il contenuto |
| getfacl file | mostra; un + in ls -l indica che ce n’è una |
| setfacl -m u:alice:rw file | dai rw ad alice |
| setfacl -m d:g:dev:rwx dir | ACL predefinita per i nuovi file in dir |
| setfacl -b file | rimuovi tutte le ACL |
x = può entrare; r = può elencare; w = può creare/cancellare voci.w sulla directory, non sul file.ls -l prima di chmod 777.I risultati e i messaggi di questo strumento sono mostrati in inglese.
find /var/www -type d -exec chmod 755 {} + e find /var/www -type f -exec chmod 644 {} +, poi chown -R www-data: /var/www. Mai chmod -R 777.