Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: Sposób na pliki zapisane przez usera nobody

Czy administrujecie może serwerami WWW, na których uzytkownicy moga uruchamiac swoje skrypty (PHP, CGI...)? Czy uzytkownicy administrowanych przez Was serwerow mieli juz kiedys problem z plikami zapisanymi na serwerze przez te skrypty (np. uploadowanymi przez CMS-y)? Problem polega na tym, ze wlascicielem tych plikow jest nobody (lub inny uzytkownik pod ktorym dziala serwer WWW) i potem uzytkownik - wlasciciel strony ze swojego konta (spod shella albo FTP) nie moze dobrac sie do tych plikow...

U mnie na serwerze problem ten stal sie na tyle dokuczliwy, ze trzeba
bylo zrobic specjalne narzedzie do "poprawiania" takich sytuacji. Moze komus sie przyda - program wraz ze szczegolowym opisem tu:
http://www.ap.krakow.pl/~raj/fixowner/

konto usunięte

Temat: Sposób na pliki zapisane przez usera nobody

Jarosław Rafa:
Czy administrujecie może serwerami WWW, na których uzytkownicy moga uruchamiac swoje skrypty (PHP, CGI...)? Czy uzytkownicy administrowanych przez Was serwerow mieli juz kiedys problem z plikami zapisanymi na serwerze przez te skrypty (np. uploadowanymi przez CMS-y)? Problem polega na tym, ze wlascicielem tych plikow jest nobody (lub inny uzytkownik pod ktorym dziala serwer WWW) i potem uzytkownik - wlasciciel strony ze swojego konta (spod shella albo FTP) nie moze dobrac sie do tych plikow...

Niektore CMS pozwalaja na konfigurowanie domyslnych uprawnien do plikow - np. Joomla. Inny kod, jesli user ma do niego dostep i odrobine wiedzy, mozna poprawic samemu.

Powinno rowniez pomoc ustawienie "umask" w skrypcie startujacym Apache na 0011, wtedy pliki beda tworzone z uprawnieniami 0666 zamiast domyslnego 0644 - oczywiscie z tym moze wiazac sie cale mnostwo innych komplikacji...

konto usunięte

Temat: Sposób na pliki zapisane przez usera nobody

Jarosław Rafa:
Czy administrujecie może serwerami WWW, na których uzytkownicy moga uruchamiac swoje skrypty (PHP, CGI...)? Czy uzytkownicy administrowanych przez Was serwerow mieli juz kiedys problem z plikami zapisanymi na serwerze przez te skrypty (np. uploadowanymi przez CMS-y)?
M.in. z tego powodu u mnie skrypty użytkowników uruchamiają się z ich uprawnieniami. Jeśli Twój serwer WWW to Apache, to zerknij na suphp czy suEXEC.
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: Sposób na pliki zapisane przez usera nobody

Łukasz S.:

Niektore CMS pozwalaja na konfigurowanie domyslnych uprawnien do plikow - np. Joomla. Inny kod, jesli user ma do niego dostep i odrobine wiedzy, mozna poprawic samemu.

Powinno rowniez pomoc ustawienie "umask" w skrypcie startujacym Apache na 0011, wtedy pliki beda tworzone z uprawnieniami 0666 zamiast domyslnego 0644 - oczywiscie z tym moze wiazac sie cale mnostwo innych komplikacji...

Co da ustawianie uprawnien na pliku, ktory ma wlasciciela nobody i grupe nobody? Tu trzeba zmienic wlasnie wlasciciela, a nie uprawnienia...
No chyba ze sie ustawi uprawnienia 666 tak jak piszesz powyzej, ale to horror... nie wyobrazam sobie trzymania gdziekolwiek plikow z uprawnieniami write dla wszystkich... Wlasnie powinno byc 644 lub w pewnych przypadkach nawet 640 i tu nie trzeba nic poprawiac.
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: Sposób na pliki zapisane przez usera nobody

Jakub J.:

M.in. z tego powodu u mnie skrypty użytkowników uruchamiają się z ich uprawnieniami. Jeśli Twój serwer WWW to Apache, to zerknij na suphp czy suEXEC.

suphp ma jedna wade - dziala w trybie CGI. Po pierwsze zwieksza to obciazenie serwera, po drugie - nie wszystkie rzeczy w PHP dzialaja tak samo w CGI jak w module Apache'a i kiedys juz sie na to nacialem...
Poza tym trzeba tez rozroznic "skrypty uzytkownikow" w sytuacji typu hosting, gdzie jest wielu zupelnie niealeznych, nie majacych nic wspolnego ze soba uzytkownikow majacych zupelnie nie majace nic wspolnego ze soba strony (czyli np. typowe /home/*/public_html) - tu faktycznie suphp czy suexec jest sensownym rozwiazaniem - od sytuacji, gdy wielu uzytkownikow administruje roznymi kawalkami teoretycznie jednego serwisu, maja prawa zapisu do roznych katalogow w obrebie DocumentRoot, ale maja nie wchodzic sobie w parade... (przyklad konkretnie u mnie, to strony poszczegolnych instytutow w obrebie serwisu WWW uczelni). Tu jednak bylbym za tym, zeby caly serwis chodzil na module Apache'a, czyli pod userem nobody, i wtedy cos takiego sie przydaje...

Temat: Sposób na pliki zapisane przez usera nobody

nie wiem czy nie wolal bym przypisac tych userow do grup odpowiadajacych instytutom i dac prawa 660, niz jakis skrypt z crona poprawiajacy wlascicela plikow. A jesli chcialbym miec 600 to moze bym porobil udzialy w sambie per instytut i uzyl valid_user= login1, login2 .... , force_user=nobody , create_mask=0600 i powinno zadzialac. Ale oczywiscie zmiana kodu i dostep dla webmasterow tylko na devowym srodowisku ;)

pozdrawiam

konto usunięte

Temat: Sposób na pliki zapisane przez usera nobody

Co da ustawianie uprawnien na pliku, ktory ma wlasciciela nobody i grupe nobody?

Wystarczy dodac konto na ktorym dziala serwer FTP do grupy nobody, ustawic plikom 664, katalogom (jesli trzeba) 775 i po zawodach, chyba, ze uzytkownicy maja fizyczne konta na FTP i po zalogowaniu uzywaja lokalnego uid/gid (tylko po co?).

Jesli FTP sluzy do zarzadzania plikami w ramach konta WWW, nie widze sensu dodatkowej izolacji. Wystarczy chroot w katalogu domowym i praca FTP i WWW w ramach tej samej grupy.
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: Sposób na pliki zapisane przez usera nobody

Łukasz S.:

Wystarczy dodac konto na ktorym dziala serwer FTP do grupy nobody, ustawic plikom 664, katalogom (jesli trzeba) 775 i po zawodach, chyba, ze uzytkownicy maja fizyczne konta na FTP i po zalogowaniu uzywaja lokalnego uid/gid (tylko po co?).

Taka specyfika serwera. Jak to zreszta zwykle na serwerach uczelnianych. Uzytkownicy maja fizyczne konta w systemie, shella, FTP i wszystko co tylko moga miec :). Zdalnie sie loguja przez ssh, czytaja poczte przez elma/pine'a, bywa ze zapisuja sobie zalaczniki na dysku serwera i ftpuja je na swoj komputer i w ogole robia wszystko co sie robi w shellu :) Wydzielonego konta dla serwera FTP tam w ogole nie ma, bo uzytkownik po zalogowaniu przez FTP ma miec dostep do swojego /home/user. Po prostu zwykly najbardziej typowy serwer unixowy, bez zadnych ficzerow zorientowanych specyficznie na hosting.

konto usunięte

Temat: Sposób na pliki zapisane przez usera nobody

Jarosław Rafa:
Jakub J.:
M.in. z tego powodu u mnie skrypty użytkowników uruchamiają się z ich uprawnieniami. Jeśli Twój serwer WWW to Apache, to zerknij na suphp czy suEXEC.

suphp ma jedna wade - dziala w trybie CGI. Po pierwsze zwieksza to obciazenie serwera, po drugie - nie wszystkie rzeczy w PHP dzialaja tak samo w CGI jak w module Apache'a i kiedys juz sie na to nacialem...

Ad.1. FastCGI.
Ad.2. Owszem, nie wszystkie, ale za to można w prosty sposób mieć zupełnie różne php.ini dla każdego użytkownika, itp.
Poza tym - nie znam jakiejś "ważnej" rzeczy, która nie działałaby w php-cgi, a działałaby w php-jako-moduł-apacza. Możesz się podzielić swoimi spostrzeżeniami na ten temat? :)
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: Sposób na pliki zapisane przez usera nobody

Jakub J.:

Poza tym - nie znam jakiejś "ważnej" rzeczy, która nie działałaby w php-cgi, a działałaby w php-jako-moduł-apacza. Możesz się podzielić swoimi spostrzeżeniami na ten temat? :)

HTTP authentication ($PHP_AUTH_USER, $PHP_AUTH_PW). Ja akurat uzywam tego nagminnie.
Kiedys sie nacialem na inna wartosc zmiennej $SCRIPT_FILENAME.
Bylo jeszcze cos co mi tez kiedys bylo potrzebne ale w tym momencie nie pamietam...

Co wszystko oczywiscie nie uniewaznia faktu, ze suPHP to dobra rzecz... Zobacze jak bedzie z wydajnoscia, bo wlasnie robie wiekszy serwis dzialajacy na suPHP. Na suPHP bo ze wzgledow bezpieczenstwa musi dzialac pod wlasnym useridem, innym niz nobody, zeby nic poza tym serwisem nie mialo dostepu do zapisywanych przez niego plikow. A pliki ostatecznie maja trafiac na konta uzytkownikow, i tu mi sie wlasnie tez bardzo przyda to narzedzie, ktore opublikowalem w tym watku, zeby zmieniac wlasciciela z tego wlasnie specjalnego uzytkownika na docelowego "normalnego" usera.Jarosław Rafa edytował(a) ten post dnia 21.05.08 o godzinie 02:57
Jacek Wilczyński

Jacek Wilczyński Kierownik Sekcji
Informatycznej, Sąd
Okregowy w Gdańsku

Temat: Sposób na pliki zapisane przez usera nobody

Najproście jest dac uprawnienia do zapisu i odczytu grupie.

A może zwyczajnie użyć funkcjonalności cron-a i wykonać chown:) raz na jakiś czas?
Jarosław Rafa

Jarosław Rafa senior software
engineer, Motorola
Solutions Systems
Polska

Temat: Sposób na pliki zapisane przez usera nobody

Jacek Wilczyński:
Najproście jest dac uprawnienia do zapisu i odczytu grupie.

Są sytuacje, kiedy się nie da albo to nie wystarcza. Naprawdę nie zadawałbym sobie trudu pisania specjalnego programu, gdyby to samo można było uzyskac dostępnymi już środkami.
A może zwyczajnie użyć funkcjonalności cron-a i wykonać chown:) raz na jakiś czas?

To jest dobry pomysł, pytanie tylko z jak dobra dokładnością jesteśmy w stanie okreslić ten czas. U mnie ze wzgledu własnie na nieokreślonośc tego czasu ten sposób odpadł. Nieokreslonośc polega dokładnie na tym, ze user chce, aby pliki były dostepne natychmiast, nie ma zamiaru czekać (więc trzebaby wywoływac skrypt z crona bardzo często, nawet co minutę), ale z drugiej strony może wrzucać nowe pliki b. rzadko np. raz na miesiąc (więc wywoływanie skryptu z crona co minutę jest marnotrawstwem zasobów). Zresztą mój program również jest pomyślany w taki sposób, że może być wywoływany z crona, za to ma tę przewagę, że nie tylko.

Następna dyskusja:

Hmmm ... dig przez www ...




Wyślij zaproszenie do