Back to top

Autore Topic: La gestione dei permessi in sistemi *nix  (Letto 6306 volte)

mau_develop

  • Visitatore
La gestione dei permessi in sistemi *nix
« il: 28 Mag 2010, 10:49:25 »
Boh, ... sempre lo stesso problema :) ... dove lo metto? dove si incontra il problema! ...mmmhh no! meglio in articoli della community,.... però non viene visto subito e si continua a fare la domanda...
Vabbè per ora quì.

Nei sistemi Unix like per ogni cartella e per i files in essa contenuti vengono assegnati dei permessi che appunto hanno il compito di permettere o impedire operazioni su di essi a seconda di determinate "appartenenze".

Infatti ogni file ha tre parametri su cui imposare dei permessi e sono:

- l'owner, ovvero il proprietario (owner)
- il gruppo del proprietario (group)
- gli altri utenti (users)

Per ognuno di questi tre parametri bisogna impostare dei permessi, quindi definire cosa potrà fare l'owner, l'appartenente al gruppo dell'owner e l'utente con quella cartella o con i files in essa contenuti.
I permessi sono gerarchici, quindi quelli di un file contenuto in una cartella ne ereditano anche le limitazioni e possono introdurne di nuove.
Se un file si trova in una cartella non scrivibile dall'utente anche i files in essa contenuti saranno non scrivibili, ma possono essere ulteriormente ristretti a non eseguibili o leggibili.

I valori da assegnare a ognuno dei parametri per definirne i permessi sono:
0 -> nessun permesso -> -
1 -> esecuzione -> x
2 -> scrittura -> w
3 -> esecuzione e scrittura -> xw
4 -> lettura -> r
5 -> lettura ed esecuzione -> rx
6 -> lettura e scrittura -> rw
7 -> lettura, scrittura ed esecuzione -> rwx

A questo punto è semplice capire chi può fare cosa:
un file con permessi 777 vorrà dire che per tutti e tre i parametri sono stati applicati i permessi di scrittura, lettura ed esecuzione e quindi sia l'owner, sia il group, sia l'utente potranno leggere, scrivere ed eseguire quel file.

Ci troviamo spesso a confrontarci con queste problematiche quando abbiamo a che fare con "l'ambiente web", ovvero quando abbiamo la necessità di trasferire su un server web dei contenuti che vorremmo venissero condivisi e per i quali dobbiamo ovviamente stabilire delle "politiche" d'uso.

Ricordate che quando trasferite dei files con un software ftp su di uno spazio web assegnatovi, questi verranno sempre installati con un owner e un group di appartenenza stabiliti dall'amministratore del sistema; a seconda voi siate il proprietario o un membro del gruppo del proprietario dovete pensare di poter avere ampi permessi per lavorare sui files.

Dove si genera la confusione? Direi che leggendo si potrebbe credere di stare attribuendo delle autorizzazioni a delle "identità" che avranno accesso al nostro sito web: non è così, o meglio non precisamente.
Un conto sono le autorizzazioni attraverso i nostri script e un conto sono i permessi, ma devono comunque collaborare.
Attraverso l'autorizzazione dei nostri script (login) riusciremo a "raggiungere" files (es. admin) che con il loro codice potranno modificare (o no) parti o contenuti a seconda che:
- il file target appartiene allo stesso proprietario/gruppo
- il file target abbia i permessi per essere letto, scritto ed eseguito (7) dall'owner/group.

Molti hanno l'illusione che assegnando un permesso basso all'utente questo non abbia possibilità di manipolare nulla, nulla di più sbagliato, altrimenti perchè si generano vulnerabilità nel codice?.
Quando ci si "inserisce" nel flusso di uno script alla "vista" del server, si assume l'identità del file contenete lo script o che lo ha generato.

Come si agisce sui permessi?
Diciamo che qualunque software di ftp ha il suo tool per il cambio dei permessi. Su un server che non vi appartiene non potete modificare owner e group ma se il server è vostro nulla vi impedisce di aprire un terminale e digitare da root:
chown nome_file owner:group

Però prima ancora sarebbe meglio ricordare che per sapere tutti gli attributi del mio file devo digitare:
ls -l
prendo come esempio il mio file locale htaccess di Joomla:
-rwxrwxrwx  1 ts ts    4068 2010-03-19 18:27 htaccess.txt

Partendo da sinistra verso destra ho:
1) un trattino: è un file, se fosse stata una directory al posto del '-' c'era 'd'
2) tre gruppi (owner-group-users) di tre lettere (read-write-execute)
3) saltiamo il numerino che nn ci interessa
4) owner e group del file
5) la dimensione
6) la data dell'ultima modifica
7) l'ora dell'ultima modifica
8) il nome del file

Riassumendo, sono l'owner di quel file (il server è mio) sono anche membro del gruppo dell'owner e quindi posso lavorare con i suoi stessi privilegi.
L'owner può scrivere leggere ed eseguire quel file così come lo possono fare gli appartenenti al gruppo o gli users.
Per cambiare i permessi useremo questa forma:
chmod nnn nome_file_o_cartella
dove al posto di n andrà la somma dei singoli valori di ogni tipo di permesso che gli vogliamo attribuire (vedi la prima tabella); supponendo di voler arrivare ad avere un file con i permessi come il mio htaccess sopra:
owner->rwx group->rwx users->rwx

dovremmo sommare i singoli permessi:
r (read)->4 + w (write)->2 + x (execute)->1 = 7 (owner)
r (read)->4 + w (write)->2 + x (execute)->1 = 7 (group)
r (read)->4 + w (write)->2 + x (execute)->1 = 7 (users)

Quindi usando la sintassi vista prima:
(root) chmod 777 htaccess.txt

Se si trattasse invece di una cartella la sintassi non cambia ma abbiamo la possibilità di applicare ricorsivamente gli stessi permessi anche ai files in essa contenuti aggiungendo il recursive:

(root) chmod 777 -R nome_cartella

E windows? Scusate ma mi rifiuto di cercare di capire una cosa che mi viene nascosta alla base e che posso solo usare, per cui come sempre, non mi occupo di windows, non lo spiego e mi limito ad usarlo nei limiti delle mie conoscenze, lasciando questo infelice compito ad altri che ne sanno di più.

Però una cosuccia ve la dico, così capite perchè vi impiantate con questo problema e Joomla (ma comunque succederebbe con qualunque altro cms) e impazzite a impostare a 777 permessi di cartelle, files:
chmod NON funziona nei file system NTFS (quindi Windows), dove tutti i file sono di norma leggibili ed eseguibili da tutti , quindi se emulate Apache in ambiente windows potreste avere degli errori cercando di accedere a risorse locali, fuori dall'ambiente virtuale creato, se siete su un server windows... buona fortuna!

M.
« Ultima modifica: 28 Mag 2010, 10:52:11 da mau_develop »

Offline pitto

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Re:La gestione dei permessi in sistemi *nix
« Risposta #1 il: 31 Mag 2010, 17:03:27 »
Ho ben compreso :)

Il mio problema è però capire quale sia lo stato dell'arte dei permessi da assegnare su *nix ai folder e ai file di joomla.

Mi spiego meglio.

Faccio l'installazione "standard" tutto ok.
Non funziona nulla.
Ho tutti i file "non scrivibile".

Rendo la cartella tmp e cache scrivibili (777) da client ftp e da quel momento posso installare plug in et similia ma cmq molte funzioni non vanno bene.

Come faccio a risolvere definitivamente?

Io pensavo di rendere owner l'utente apache/php delle cartelle di joomla (e dei files).
Qualcuno ha provato?

Il mio provider dice che non si può/non vuole farlo.

mau_develop

  • Visitatore
Re:La gestione dei permessi in sistemi *nix
« Risposta #2 il: 31 Mag 2010, 17:22:18 »
Il mio provider dice che non si può/non vuole farlo.
-------------------------------------------------------------------
questo è il tuo vero problema, non i permessi che devi cambiare.

Se uno mi da un servizio che a me non sta bene lo cambio.

ma sei sicuro che sei su un hosting linux? solitamente quei problemi capitano coi server win.

Il problema non è comunque settare a 777 o 755 bisogna vedere perchè il server è configurato così.

M.
« Ultima modifica: 31 Mag 2010, 17:24:35 da mau_develop »

Offline maicolstaip

  • Global Moderator
  • Instancabile
  • ********
  • Post: 17623
  • Sesso: Maschio
    • Mostra profilo
Re:La gestione dei permessi in sistemi *nix
« Risposta #3 il: 01 Giu 2010, 20:53:35 »
Beh,
è ora di farne un articolo  :)
Non si risponde a PM tecnici. Postate sul forum. Grazie.

Offline pitto

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Re:La gestione dei permessi in sistemi *nix
« Risposta #4 il: 03 Giu 2010, 11:29:07 »
Amen, Maicol!

Un articolo di quelli linkabili al dannato tipo del servizio di hosting con giustificazioni téNNiche che lo buttino ko in 3 (o anche 4 righe).

Sarebbe gran gioia :'(

mau_develop

  • Visitatore
Re:La gestione dei permessi in sistemi *nix
« Risposta #5 il: 03 Giu 2010, 14:53:33 »
ragionare così non risolve il problema.

Ogni hosting ha pagine pubbliche dove espone regole prezzi tipo di servizi e configurazione e tu puoi tranquillamente scegliere tra varie proposte e vari prezzi.

Non ti sembra assurdo sceglierne uno che non ti va bene per poi reclamare e dirgli all'hoster che ha sbagliato lui?
Magari su quel server ci stanno altri 500 user contenti... perchè dovrebbe cambiare?

soprattutto così chi si ritrova in stallo sei tu.

M.

Offline pitto

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Re:La gestione dei permessi in sistemi *nix
« Risposta #6 il: 03 Giu 2010, 17:59:32 »
Non è esattamente così...
Ti spiego meglio.

Qui siamo al centro del molise ed offrire un servizio di hosting è un po' come tagliare la carne sul banco del macellaio.
Le garanzie sono poche se non il sorriso di una persona che conosci da svariati anni.

Io sono un sistemista microsoft e azzanno un minimo di linux per curiosità personale e casalinga.
So garantirti che qualsiasi problema di autorizzazione su windows si riduce a permessi di condivisione e di protezione, punto. Questa cosa so giustificarla e so dimostrare come funziona.

Per ciò che compete l'hosting in genere e linux nel particolare sono decisamente ignorante ma desumo che anche qui esistano delle regole esatte e mi farebbe piacere che un altro forummista potesse scrivere in termini tecnici come un'installazione di joomla deve essere gestita dal punto di vista della sicurezza.
Tutto qui :)

Per altri lavori ho ovviamente scelto aruba (per dirti il primo che mi viene in mente) e nessun problema.

Per questo cliente devo vedere io d'interfacciarmi con l'host che fa un po' le orecchie da mercante e sto cercando i mezzi (se ci sono) per aiutarlo... Ad aiutarmi :)

Offline sali40

  • Global Moderator
  • Instancabile
  • ********
  • Post: 4791
  • Sesso: Maschio
    • Mostra profilo
Re:La gestione dei permessi in sistemi *nix
« Risposta #7 il: 11 Lug 2010, 21:39:48 »
Prima di tutto complimenti a mau per l'articolo. Anche secondo me è un articolo propriamente detto e andrebbe pubblicato fra gli articoli. Tecnicamente perfetto.

Andando alproblema di Pitto. In alcuni casi per ragioni di sicurezza, viene addotto, utente ftp e utente apache non appartengono allo stesso gruppo.

Per le motivazioni egregiamente espresse da mau, questo implica che ciascuno dei due utenti è "altri utenti" o "resto del mondo" per l'altro.

Il problema può essere solo aggirato (forse sarebbe meglio dire "differito"), quindi  ma questo "workaround" che ti trascrivo perché probabilmente lo troveresti altrove, è altissimamente sconsigliato

Puoi provare a
  • impostare tutto a 777 attraverso il tuo ftp
  • installare in joomla un componente "file explorer" (tipo extplorer o ninjaexplorer)
  • fare (con l'explorer appena installato) una copia di tutte le cartelle e dei file della root distinguendoli con un prefisso (1administrator; 1component; 1configuration.php etc etc lasciando stare l'htaccess). Joomla (e quindi Apache) che ha creato questi file e queste cartelle ne sarà quindi il proprietario
  • mettere il sito off line e disconnettere l'amministratore
  • via ftp, eliminare le cartelle e i file senza il prefisso e rinominare quelle con il prefisso togliendo il prefisso stesso (la rinomina dei file e delle cartelle non modifica la proprietà degli stessi).

I nuovi file e le nuove cartelle saranno così di proprietà di apache e potrai lavorare tranquillamente con joomla

Dicevo che il problema è solo differito.
Infatti se dovesse insorgere un qualsivoglia problema, quei file non potrai editarli, sovrascriverli o modificarli via ftp (l'aggiornamento di joomla via ftp risulterà impossibile, ad esempio)
Ti ho anche scritto di lasciare stare l'htaccess di proprietà di ftp perché se dovessi incasinare l'htaccess, questo ti impedirebbe di accedere al sito (anche da backend) e quindi non potresti modificare l'htaccess via explorer di joomla, ma neppure via ftp, visto che non ne avrebbei permessi. Il sito sarebbe, quindi, difficilmente ripristinabile a meno di intervento dell'hosting
Ribadisco, il "workaround" altissimamente sconsigliato

La soluzione migliore è l'individuazione di un servizio hosting che non crei questi problemi

Offline pitto

  • Nuovo arrivato
  • *
  • Post: 14
    • Mostra profilo
Re:La gestione dei permessi in sistemi *nix
« Risposta #8 il: 13 Lug 2010, 15:48:05 »
sali40 ---> Cyborg

Ed infatti è una soluzione troppo futuristica per il mio cervello parzialmente nuvoloso :D

Cambierò host ma grazie di cuore per il tempo dedicatomi :)

 



Web Design Bolzano Kreatif