Chi sono gli "altri" nelle autorizzazioni di Linux e cosa significa "eseguire"?


13

Non sono riuscito a trovare le risposte a queste tre domande:

  • 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?

  • Qual è la differenza tra "execute" e "read"?

  • Quali sono le autorizzazioni di file predefinite per l'intero sistema dopo un'installazione pulita (ad esempio in Ubuntu)?

Risposte:


16

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.


Grazie mi hai davvero aiutato molto! Non posso ringraziarvi abbastanza, un'altra domanda, dov'è la linea tra "file" ed "eseguibile" per esempio i file PHP vengono eseguiti o letti da Apache? Ancora grazie mille!
randomKek

.phpi file non sono normalmente eseguibili. Sono semplicemente letti da Apache solo quando si punta il browser ad esempio http://example.com/file.phpPrima che Apache sia in grado di mostrare l'output, devono essere interpretati dall'installazione di PHP, ma Apache se ne occupa. Teoricamente puoi rendere eseguibile un file PHP ed eseguirlo come uno script - nello stesso modo in cui abbiamo fatto con il nostro testfile, ma questo è usato raramente.
slhck,

5

Voglio solo aggiungere che i permessi di esecuzione hanno diversi significati efficaci per le directory:

Per i file :

  • Leggi: se è possibile leggere il contenuto del file
  • Scrivi: se l'utente o il processo possono scrivere sul file (modificarne il contenuto)
  • Esegui: se il file può essere eseguito

Per le cartelle :

  • Leggi: se è possibile ottenere l'elenco delle directory
  • Scrittura: se l'utente o il processo possono modificare in qualche modo il contenuto della directory: creare nuovi o eliminare i file esistenti nella directory o rinominare i file.
  • Esegui: se l'utente o il processo possono accedere alla directory, ovvero andare su di essa (renderla la directory di lavoro corrente)

No, non esiste un'autorizzazione di eliminazione separata per le directory.

(Ho queste informazioni qui .)


0

Non sono un esperto di Linux, ma provo comunque a rispondere.

Ogni voce del file system ha un utente e un gruppo associati. Le autorizzazioni dell'utente sono gestite dai flag "utente". Le autorizzazioni utente degli utenti che fanno parte dello stesso gruppo sono gestite dai flag "gruppo". Tutti gli altri utenti sono gestiti dalle bandiere "altri".

"leggi" significa ciò che dice. "esegui" significa che è possibile avviare il file (ad es. un comando) o che è possibile elencare la directory.

Per quanto riguarda l'autorizzazione predefinita, non sono sicuro. Immagino che possa essere configurato in qualche modo e quindi potrebbe essere diverso per ogni utente.


0

Per darti una risposta decente alla domanda 2, almeno, ecco una tabella riassuntiva che mostra cosa puoi / non puoi fare:

+--------------------------------------------------+
| Execute Yes (./file.sh) | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute Yes (./file.sh) | Read No (ERROR)        |
|--------------------------------------------------|
| Execute No (ERROR)      | Read Yes (vim file.sh) |
|--------------------------------------------------|
| Execute No (ERROR)      | Read No (ERROR)        |
+--------------------------------------------------+

La cosa importante da ricordare è che non è l'UTENTE che legge il file di file in memoria per eseguirlo, è il KERNEL che lo fa per conto dell'UTENTE.


0

Può essere complicato se vuoi escludere tutti gli altri. Guarda questo elenco dal mio file / etc / passwd (permessi e quant'altro rimosso per chiarezza):

root daemon bin sys sync giochi man lp mail news proxy uucp www-data backup list irc moscerini libuuid syslog messagebus usbmux haldaemon nessuno

a {questo sono io, e qui sotto ci sono cose che ho installato, soprattutto con il sistema}

avahi mysql pulse rtkit saned timidity didiwiki

Quindi, ad esempio, rimuovi le autorizzazioni da lp o uucp e interromperai la stampa. rimuovere l'autorizzazione da bin, sys o daemon e probabilmente molte cose si romperanno. irc, giochi, posta, notizie e backup potrebbero probabilmente essere rimossi in modo sicuro (a meno che non li utilizzi attraverso il sistema, non un browser). il resto lascio alle tue abilità nei motori di ricerca.

Questo è Ubuntu / Bodhi Linux, tuttavia, e altri sistemi potrebbero avere meno extra. tutti questi altri comunque devono impedire di eseguire tutto come root. immagino che sia possibile creare un sistema in cui ogni file può essere letto / scritto / eseguito solo da uno degli utenti del sistema (barra radice) ma non sono sicuro che sia stato provato.

Eseguire è l'autorizzazione per eseguire il codice. Leggere è solo permesso di guardare (e copiare?).

Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.