Freesco, NND, CDN, EOS
http://forum.freesco.pl./

Wyświetlanie info o rozmiarze folderów użytkowników na WWW
http://forum.freesco.pl./viewtopic.php?f=34&t=17271
Strona 1 z 1

Autor:  mes mariusz [ piątek, 31 października 2008, 14:10 ]
Tytuł:  Wyświetlanie info o rozmiarze folderów użytkowników na WWW

Witam.

Chciałbym na swoim serwerze ( postawionym na NND ) dodać funkcjonalność wyświetlania rozmiaru zajętości katalogów poszczególnych użytkowników (/home/user) na stronie WWW, tak aby każdy z użytkowników mógł w każdej chwili wejść na specjalną stronę, i sprawdzić sobie ile w chwili obecnej jego pliki zajmują miejsca na serwerze.

Może to być statystyka zbiorcza.

Interesują mnie też każde inne statystyki pokazujące aktywność użytkowników systemu.

Zdaje się, że można by samemu spróbować napisać skrypt.

Np. wykorzystując crona aby raz na dobę uruchomić skrypt, który wykona polecenie du -h /home/user dla każdego użytkownika (no właśnie... jak to zautomatyzować, żeby robił to dla każdego użytkownika) i wyeksportuje dane >> do pliku, który zostanie wykorzystany przez mechanizm php, który na tej podstawie wypisze informacje / wykreśli wykresy.

Autor:  Kimas [ piątek, 31 października 2008, 14:29 ]
Tytuł: 

tu masz skrypt który wyświetli to co chcesz:

: [/] [] ()
<?
$a = shell_exec("du -h /home/user");
echo "<pre>" . $a . "</pre>";
?>


chyba o to chodziło?

Autor:  mes mariusz [ piątek, 31 października 2008, 15:34 ]
Tytuł: 

Niezłe, i nawet działa :-)

Ale czy rzeczywiście powinno działać, jeśli na partycji z plikami stron internetowych dla bezpieczeństwa wycięto exec ?

PS. Wygląda to dosyć groźnie.

A co jeśli jakiś użytkownik konta WWW użyje np. halt zamiast du ?
Na jakich prawach działa php? Chyba nie roota?

Autor:  Kimas [ piątek, 31 października 2008, 16:46 ]
Tytuł: 

te polecenie działa na nobody, więc nie ma się czego obawiać, a komendy halt nie użyjesz ponieważ nobody nie posiada odpowiednich praw dostępu, więc śmiało możesz korzystać z tego skryptu co zapodałem.

co do

: [/] [] ()
Ale czy rzeczywiście powinno działać, jeśli na partycji z plikami stron internetowych dla bezpieczeństwa wycięto exec ?


możesz zastosować skrypt w bashu, który przesyła odpowiednie dane do pliku i jest odpalany za pomocą crona:

: [/] [] ()
#!/bin/bash

a=`du -h /home/user`
echo $a >> /home/user/staty.txt

Autor:  mes mariusz [ piątek, 31 października 2008, 17:06 ]
Tytuł: 

Kimas pisze:
te polecenie działa na nobody, więc nie ma się czego obawiać

Czyżby nobody miał uprawnienia do wyświetlania zawartości katalogu dowolnego użytkownika?

Nawet mając dostęp do bashu / konsoli zwykły użytkownik nie jest w stanie wejść / wyświetlić zawartości katalogu innego użytkownika.

Czyżby był w stanie to zrobić z poziomu php?

Autor:  Kimas [ piątek, 31 października 2008, 18:16 ]
Tytuł: 

skrypt w php nie zadziała ponieważ domyślne prawa wykonywalności folderu usera == 711, sry że wprowadziłem Cie w błąd, ale sprawdzałem na swoim serwerku, a na katalogu użytkownika miałem chmod 755, więc pozostaje użycie sudoers. lub odpalania skryptu bashowego cronem z roota, lub użytkownika który jest właścicielem katalogu.

Autor:  mes mariusz [ piątek, 31 października 2008, 20:38 ]
Tytuł: 

Ale mi ten skrypt zadziałał...

Autor:  Maciek [ piątek, 31 października 2008, 21:14 ]
Tytuł: 

Widoacznie masz katalogi domowe z uprawnieniami 755 zamiast 711.

Autor:  mes mariusz [ piątek, 31 października 2008, 22:43 ]
Tytuł: 

Maciek pisze:
Widoacznie masz katalogi domowe z uprawnieniami 755 zamiast 711.

Rzeczywiście, na tym (i tylko na tym) katalogu miałem uprawnienia 755. Cóż za zbieg okoliczności ;-)

Rzeczywiście, jeśli katalog ma uprawnienia 711 nie wyświetli się nic.

Autor:  mes mariusz [ piątek, 31 października 2008, 22:53 ]
Tytuł: 

Kimas pisze:
pozostaje użycie sudoers. lub odpalania skryptu bashowego cronem z roota, lub użytkownika który jest właścicielem katalogu.

Cron da mi okresowe wyniki, a skrypt dawał wyniki rzeczywiste (w danej chwili) i był dosyć prosty i wygodny w użyciu.
Zastanawiam się czy nie zostawić takiego katalogu z 755 na strony specjalne, ale... wystarczy włam do takiego katalogu, choćby przez ftp-a i... robi się groźnie... A może się mylę?

Autor:  Kimas [ piątek, 31 października 2008, 23:08 ]
Tytuł: 

według mnie lepiej użyć sudoers i pozostać przy 711

Autor:  mes mariusz [ piątek, 31 października 2008, 23:13 ]
Tytuł: 

Kimas pisze:
według mnie lepiej użyć sudoers i pozostać przy 711


Z tego, co zdążyłem się zorientować, sudoers to plik w /etc. Jak go najlepiej skonfigurować na taką okazję?

Autor:  Maciek [ sobota, 1 listopada 2008, 00:05 ]
Tytuł: 

Najlepiej przez visudo. Inaczej się nie da. Trzeba wpisać odpowiednie uprawnienia dla wykonania du przez nobody.

Autor:  mes mariusz [ sobota, 1 listopada 2008, 19:44 ]
Tytuł: 

W międzyczasie stygma zaproponował takie: rozwiązanie w bashu

Autor:  Maciek [ sobota, 1 listopada 2008, 19:55 ]
Tytuł: 

Nie sądzę, zeby to było dobre. Po pierwsze, aby wskazania były aktualne, cron musiałby to wykonywać co parę minut. Uruchamianie z php i tak wymagałoby dodania polecenia du do sudoers. Jeśłi koniecznie użytkownik miałby być informowany o zajętym miejscu w swoim katalogu, to lepiej wprowadzić quotę i wtedy zdaje się jest możliwość informowania mailem, jeśli wolne miejsce zmniejsza się niebezpiecznie. Obawiam się, że żaden użytkownik nie będzie i tak na taką stronę zaglądać. Jeśłi chcesz mieć informację dla siebie, to zrób sobie wykonywanie du -h /home z crona i wysyłaj sobie maila z wynikami.

Strona 1 z 1 Strefa czasowa UTC+2godz.
Powered by phpBB® Forum Software © phpBB Group
https://www.phpbb.com/