Chi è "altri", se diamo un utente a tutti i servizi sul nostro server, "altri" non esiste giusto? Ad esempio, se mettiamo Apache a un utente e impostiamo /var/wwwchnown su apache, e lo inseriamo chmod 700dovrebbe funzionare, giusto?
Ecco come funzionano le autorizzazioni, spiegate in modo molto breve:
La prima cifra è per l'effettivo proprietario di un file (controlla con chi possiede un file ls -le modificalo con chown)
La seconda cifra è per il gruppo del file (anche se il proprietario di un file non deve necessariamente appartenere allo stesso gruppo proprietario del file)
La terza cifra è chiunque altro, il che significa che non è il proprietario del file e tutti quelli che non fanno parte del gruppo.
Quindi, se hai chmodun file su 700 ed è di proprietà di apache, anche il tuo utente "normale" non sarà in grado di leggerlo, scriverlo o eseguirlo. Questo è molto restrittivo e necessario solo in rare occasioni, ad esempio quando si desidera proteggere la chiave privata SSH, ottiene le 600autorizzazioni. Per Apache, ciò potrebbe anche comportare altri problemi, a parte il fatto che con il tuo normale account utente, non potresti più modificare alcun file /var/www.
Quindi, in generale, non dovresti rimuovere i permessi di lettura ( x00) per gli altri.
Potresti lasciare apachepossedere la /var/wwwdirectory, ma 644forse con (sola lettura per gli altri). Un altro approccio Io uso spesso è l'aggiunta il proprio utente e l'utente Apache a un nuovo www-usersgruppo, e poi chmodding i file in /var/wwwa 775. In questo modo, sia tu che Apache potete scrivere sui file. Vedi qui per maggiori informazioni: Autorizzazioni di gruppo per apache
Qual è la differenza tra "execute" e "read"?
I file eseguibili possono essere eseguiti direttamente da un utente, direttamente dalla shell. Per dimostrarlo, scriviamo un breve file e chiamiamolo "test". Aggiungi il seguente contenuto:
echo "I am executable"
Salva il file. Ora, nella tua shell, prova ad entrare ./test. Verrà visualizzato un errore " -bash: ./test: autorizzazione negata ". Questo perché, per impostazione predefinita, i file appena creati non dispongono delle autorizzazioni di esecuzione. Se aggiungi l'autorizzazione di esecuzione, funzionerà.
$ chmod +x test
$ ./test
I am executable
Ora, questo era solo uno script di test, ma in genere tutti i file binari (come i programmi compilati) necessitano anche del set di autorizzazioni di esecuzione, quindi puoi effettivamente eseguire e fare qualcosa con loro, e non solo leggere.
Questi sono ad esempio i programmi di sistema che si trovano principalmente in /bin. Esegui ls -l /binper ispezionare le loro autorizzazioni. Come puoi vedere, sono di proprietà di roote non puoi cambiarli, ma puoi sempre eseguirli.
Quindi, questa è anche una caratteristica di sicurezza, poiché è possibile limitare l'esecuzione di determinati script e binari per alcuni utenti.
Per saperne di più sulle autorizzazioni Unix, leggi l'articolo di Wikipedia . Le autorizzazioni di base che conosci come "read-write-execute" sono in circolazione da molto tempo, ma fanno solo parte di ciò che chiami Elenchi di controllo degli accessi, che offrono molte più funzionalità di questa.
Quali sono le autorizzazioni di file predefinite per l'intero sistema dopo un'installazione pulita (ad esempio in Ubuntu)?
Variano per directory e proprietario. Alcuni file e directory sono riservati al sistema e di proprietà di root. Nella maggior parte dei casi, sarai comunque in grado di leggerli con il tuo normale account utente.
Altre directory come la cartella principale appartengono ovviamente al tuo utente. Potrebbe avere senso negare le autorizzazioni di lettura ad altri utenti su una macchina se è condivisa tra più persone - dopotutto, non vuoi che le tue cose private siano esposte.
Infine, alcuni file sono eseguibili per impostazione predefinita (ad es. In /bin), ma altri no (ad es. File di configurazione in /etc).
Lo standard di gerarchia dei file system specifica l'utilizzo previsto per le directory presenti nei sistemi Linux. Puoi quasi "indovinare" quali autorizzazioni dovrebbero essere basate su cosa vuoi fare con una directory.