Un altro modo è quello di mettere l'utente apache e gli "utenti del cliente" in un nuovo gruppo. Inoltre la directory dovrebbe usare il bit appiccicoso SGID
così ogni nuovo file ha ottenuto l'assegnazione di gruppo a questo nuovo gruppo. In questo modo il server web e gli "utenti del cliente" possono lavorare con i file senza problemi
[17:57] [email protected] /tmp/test $ ls -al /tmp/test
total 9
drwxrwsr-x 2 root users 48 Apr 1 17:55 .
drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
Come si vede la directory ha il bit bastone SGID
e il proprietario è il gruppo "utenti", in cui I (progman
) sono. No se un altro utente aggiunge un file il gruppo viene automaticamente impostato su questo gruppo
[17:55] proglap ~ # touch /tmp/test/x
Questo viene eseguito da root. Ora otteniamo:
[17:57] [email protected] /tmp/test $ ls -la /tmp/test
total 9
drwxrwsr-x 2 root users 72 Apr 1 17:59 .
drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
-rw-r--r-- 1 root users 0 Apr 1 17:59 x
Come vedi il file aggiunto è dalla radice, ma il gruppo è impostato per users
e in questo modo ho possibile rimuoverlo
[18:00] [email protected] /tmp/test $ rm x
rm: remove write-protected regular empty file `x'? y
[18:01] [email protected] /tmp/test $ ls -la /tmp/test
total 9
drwxrwsr-x 2 root users 48 Apr 1 18:01 .
drwxrwxrwt 36 root root 9264 Apr 1 17:53 ..
Tenete a mente che è ancora è necessario modificare chmod
se si desidera modificare il file come rw-r--r--
è solo accesso in lettura gruppo. Ma cambiare il chmod
, magari anche lavorando con umask
, è meglio che gestire l'accesso root e usare chown
.
Questo ha funzionato Sanhe - Grazie –
** Attenzione Questa funzione è stata sconsigliata a partire dal PHP 5.3.0 e rimosso come di PHP 5.4.0 **. – Jim