Ustawianie prawidłowych uprawnień do przesyłania plików

12

Mam skrypt php, który przesyła plik do katalogu o nazwie „uploads”. Jedynym sposobem, aby uruchomić przesyłanie, jest:

chmod 777 uploads

Wiem, że to nie jest poprawne, ale nie wiem, co mam zrobić, aby to zadziałało.

Informacje o serwerze: T1-Micro Amazon Linux AMI 2013.03 na Amazon EC2

Pytania:

  • Jak dowiedzieć się, do których użytkowników potrzebny jest dostęp ... np. Jaka jest nazwa użytkownika dla apache lub serwera WWW?

  • Jakiego poziomu dostępu muszę udzielić i jakiego polecenia użyłbym, aby to zrobić.

Dzięki!

Edycja: Znalazłem wiele odpowiedzi na temat przepełnienia stosu, które zbadam. Na przykład

/programming/3642241/php-file-upload-permissions

/programming/10842880/setting-permissions-in-php-on-server

/programming/8948537/permission-denied-when-attempting-to-upload-file-with-php

Dzięki

fun_programming
źródło

Odpowiedzi:

20

Spróbuj uruchomić:

ps -ef | grep apache

i spójrz na lewą kolumnę odpowiadającą serwerowi Apache. To jest użytkownik korzystający z Apache, a przez dziedziczenie również PHP.

Zmień własność katalogu wysyłania na tego użytkownika i nieco ogranicz uprawnienia, np. Jeśli użytkownik serwera WWW www-datanależał do grupy o tej samej nazwie (używając przykładowej ścieżki /var/www/uploads):

sudo chown www-data:www-data /var/www/uploads
sudo chmod 755 /var/www/uploads

(lub dowolne uprawnienia w tym przypadku). Używam sudow przykładowych poleceniach - nie wiem dokładnie, jak skonfigurowano systemy EC2 w tym zakresie, aby uzyskać uprawnienia administratora.

Jeśli już przesłałeś pliki / katalogi, możesz chcieć również zmienić ich własność i uprawnienia. Aby to zrobić, przechodząc od 777bardziej rozsądnych uprawnień, możesz uruchomić:

sudo chown -R www-data:www-data /var/www/uploads
sudo chmod -R 755 /var/www/uploads
sudo find /var/www/uploads -type f -exec chmod -x {} \;

Nie „ślepo” uruchamiaj poleceń, jeśli nie rozumiesz każdej z nich. Sprawdź manstrony, jeśli coś jest niejasne (powinno być dość proste).

Daniel Andersson
źródło
Dzięki. To bardzo pomogło. apache jest użytkownikiem. Polecenia sudo chown i sudo chmod działają zarówno.
fun_programming
Jasne i proste rozwiązanie, wielkie dzięki. Teraz nie potrzebuję już ryzykownego pozwolenia 777
lhrec_106