2011-01-17 12 views

risposta

4

Ho avuto un requisito simile alcuni anni fa che richiedeva alcuni script PHP per comunicare con una porta seriale. La prima porta seriale è tipicamente/dev/ttyS0, di proprietà di root e nel dialout di gruppo.

Per la configurazione iniziale, ho aggiunto il mio utente apache al dialout di gruppo. Gli script PHP erano in grado di parlare direttamente con la porta seriale senza problemi. Tuttavia, solo una istanza di uno script poteva aprire la porta seriale in qualsiasi momento, quindi questa soluzione non poteva funzionare.

Ho quindi creato un demone che forniva uno strato tra la porta seriale e gli script PHP. Gli script PHP parlavano con il demone tramite una named pipe, e il demone quindi formattava le richieste e lo passava sulla porta seriale - facendo un po 'di cache lungo il percorso.

Quindi, o aggiungi www-data, o qualsiasi sia l'utente di apache, al gruppo che possiede quei file, dando i permessi di esecuzione di gruppo, o usa un proxy come ho fatto io. Se la sicurezza ti preoccupa, andrei con quest'ultimo.

0

È possibile modificare l'utente in cui viene eseguito il server. Questo può essere fatto facilmente usando la versione di Windows di apache (apache viene eseguito lì come servizio ed è facile configurare l'utente con cui viene eseguito apache).

Quale piattaforma server usi?

+0

Sto usando ubuntu lucid. Non desidero cambiare l'utente in base al quale viene eseguito apache, poiché questo sarebbe un rischio per la sicurezza, ma ho creato alcune app di back-end che richiedono l'accesso a file non di proprietà di www-data. Che ne pensi di creare un gruppo che contiene www-data e il proprietario dei file? – mrwooster

+0

sarebbe un'altra opzione che funzionerebbe. cambiare l'utente di apache è solo un rischio per la sicurezza se yozu assegna un utente con permessi di alto livello (come root) – Thariama

1

No, non direttamente. Se sei su una macchina Linux e hai i diritti, puoi impostare il set il bit setuid sul tuo file.

Tenere presente che il server Web viene eseguito come utente diverso per un motivo. È un meccanismo di sicurezza molto importante e, aggirandolo, si potrebbe causare una vulnerabilità di sicurezza.

6

Se si ha accesso alla configurazione del server (supponendo che sia Apache), si potrebbe prendere in considerazione l'utilizzo di suPHP. In un host virtuale del configuration è possibile impostare in modo esplicito l'utente e gruppo per il quale viene eseguito uno script PHP:

<VirtualHost 192.168.1.1:80> 
... 
suPHP_UserGroup user group 
... 
</VirtualHost> 

Questa impostazione è disponibile per configurazioni suPHP costruiti con l'opzione --with-setid-mode=paranoid.

Un altro modo per modificare l'ID utente è posix_setuid() per cui sono richiesti i privilegi appropriati. Ciò significherebbe eseguire gli script PHP come root, che è un problema di sicurezza serios.

Problemi correlati