Quota. Pewnym problemem może być potrzeba
przydzielania ściśle określonej maksymalnej wielkości katalogów
domowych dla użytkowników mających swoje prywatne konta ftp, www
itd. Można to załatwić na dwa sposoby:
- Wydzielić dla każdego użytkownika osobną partycję po np. 20MB i
restrykcyjnie montować ją. Wskazane ze względu bezpieczeństwa,
niestety kłopotliwe, bo trzeba mieć niezagospodarowany obszar na
dysku, z którego po dodaniu użytkownika wykroimy partycję i
zamontujemy np. /home/antek . Więcej o podziale dysku na
partycje i montowaniu znajdziesz tutaj.
- Zastosować narzędzie quota. Polecam tłumaczenie z angielskiego HOWTO www.jtz.org.pl/Html/mini/Quota.pl.html. Mam kopię w swoim archiwum. Na podstawie tej stronki (plus własnych dowiadczeń) napisałem poniższy artykuł.
*
Aby móc skorzystać z Quoty musimy
mieć wkompilowaną w jądro jej obsługę (podczas kompilacji należy zazanczyć opcję Quota support
w menu Filesystem). Na pocieszenie podam, że współczesne Linuksy mają quotę wkompilowaną domyślnie. Ponadto należy zainstalować
odpowiednie oprogramowanie. W Linuksie Mandrake/Mandriva, RedHat itd. jest to plik o nazwie np. qouta-*.i386.rpm. Jak sprawdzić czy quota jest w systemie? Należy wylistować katalog /usr/sbin i poszukać plików: quota, quotaon, quotaoff, quotacheck, repquota. Jeżeli są to wszystko gra.
Dodatkowo proponuję, by przed grzebaniem w konfigach, a zwłaszcza w pliku /etc/fstab, nauczyć się montować partycję główną naszego Linuksa (montowaną jako /), pod jakimś zewnętrznym systemem operacyjnym np. Linuksem ratunkowym. Bardzo łatwo podczas edycji /etc/fstab o pomyłkę, która moze skutkować zablokowaniem restartu systemu. Wówczas Linuksem typu LiveCD (odpalanym z CD lub nawet ze zwykłego flopka) trzeba będzie podmontować odpowiednią partycję, dotrzeć do błędnie wypełnionego pliku /etc/fstab i dokonać w nim korekt.
*
KONFIGUROWANIE QUOTY
Musimy wiedzieć na jakiej partycji są katalogi domowe userów. Zagadnienie podziału dysku opisałem na stronie podzialdysku.php, natomiast linuksowe nazewnictwo urządzeń (dysków, partycji np. hda1, sda1 itp.) na stronie urzadzenia_hda_sda.php. Przyjmuję, że katalogi domowe userów są na osobnej partycji /dev/hda6 montowanej jako /home.
-
Dodajemy Quotę do systemów plików na naszym dysku poprzez edycję pliku /etc/
fstab i dopisanie odpowiednich parametrów. Tak więc kopiujemy na wszelki wypadek plik /etc/
fstab jako np. /etc/
fstab_old i w pliku /etc/
fstab po opcji
default dopisujemy przecinek i słowo
usrquota (bez spacji). Przykładowy wpis dla partycji
montowanej jako
/home:
/dev/hda6 /home ext2 defaults,usrquota 1 1
Jeśli chcemy ustawiać ograniczenia
dla całej grupy użytkowników, zamiast usrqouta musimy wpisać grpquota :
/dev/hda6 /home ext2 defaults,grpquota 1 1
Możemy też ustawić ograniczenia
przestrzeni dyskowej równocześnie dla użytkowników i grup :
/dev/hda6 /home ext2 defaults,userquota,grpquota 1 1
Obszerny opis pliku /etc/
fstab umieściłem na sąsiedniej stronie:
podzialdysku.php.
-
Teraz skonfigurujemy opcje quoty. Powinny być zapisane w plikach:
- quota.user (konfigi użytkowników mających swoją imienną grupę - przykładowo gdy user antek jest związany z grupą antek)
- quota.group (konfigi użytkowników mających grupę wspólną np. uczniowie)
Uwaga: konfigi
quota.* muszą być położone w katalogu głównym partycji, którą chcemy poddać nadzorowi narzędzia quota (przypominam, że przyjąłm, iż katalogi domowe userów są na osobnej partycji
/dev/hda6 montowanej jako
/home). Prawdopodobnie wspomnianych konfigów nie ma ich jeszcze w naszym Linuksie. Jeżeli nie ma, to jako root tworzymy pusty na razie plik (w katalogu głównym partycji montowanej jako /home) o nazwie
quota.user.
Wpisujemy jako root zlecenia:
touch /home/quota.user
touch /home/quota.group
oraz restrykcyjne
prawa dostępu:
chmod 600 /home/quota.user
chmod 600 /home/quota.group
Restart komputera. Jeżeli Linux nie powstanie, bo namieszalimy w pliku /etc/fstab i system nie potrafi zamontować partycji, to musimy odpalić zewnetrznego Linuksa ratunkowego i poprawić plik /etc/fstab (prawdopodobnie zrobiliśmy niewinną literówkę lub nie wstawiliśmy spacji w odpowiednim miejscu). Do takich prac polecam Linuksa Paragon, gdyż automatycznie montuje partycje i zawiera wygodny programik MC.
Czas na ustalenie limitów dla poszczególnych użytkowników. Wpisujemy więc zlecenie:
edquota antek (antek to użytkownik)
Przykład parametrów dla usera antek:
Quotas for user antek
/dev/hda3: blocks in use: 2594, limits (soft = 5120, hard = 6000)
inodes in use: 356, limits (soft = 1000, hard = 1500)
Objaśnienia.
Block in use oznacza aktualną ilość miejsca zajmowaną przez
naszego użytkownika
inodes in use to całkowita liczba plików, które
użytkownik posiada.
soft oznacza maksymalną wartość limitu jaką użytkownik
ma przyznaną z tym , że istnieje jeszcze grace period, która razem z soft limit
stanowi nieprzekraczalną ilość dostępnego miejsca hard limit
Mamy skonfigurowaną quotę. Możemy na koniec ustalić limit czasowy, czyli parametr Grace period. Narzucimy go wydając polecenie edquota -t
Time units may be: days, hours, minutes, or seconds
Grace period before enforcing soft limits for users:
/dev/hda3: block grace period: 7 days, file grace period: 7 days
Objaśnienia.
7 days oznacza okres czasu (można go zamienić z dni na godziny, minuty,
sekundy).
Dla całych grup limity ustawiamy tak samo jak dla użytkowników z tym, że zamiast Quotas for user antek
wpisujemy słowo group i nazwę grupy, czyli w praktyce: Quotas for group uczniowie.
Inne polecenia:
quotacheck - wykonuje skanowanie filesystemu ze zwróceniem
uwagi na jego użycie systemu plików i katalogów,
repquota - podaje użycie systemu plików,
quotaon , quotaoff - startuje lub zatrzymuje quotę.
Praktyczny przykład zlecenia startującego quotę z opcjami avug:
quotaon -avug
lub jeżeli katalog /usr/sbin nie jest ustawiony w zmiennej PATH, to wpisujemy:
/usr/sbin/quotaon -avug
Oczywiście takie uruchamianie quoty stosujemy na poczatku, gdy quotę testujemy. Gdy wszystko działa prawidłowo, quotę uruchamiamy specjalnym skryptem np. /etc/rc.d/rc.quota (opis poniżej).
-
Quotę
uruchamiamy po wykonaniu(!)
wszystkich standardowych (systemowych) poleceń montujących dyski i partycje. Przykład skryptu inicjującego o nazwie np. /etc/rc.d/
rc.quota:
#!/bin/sh
if [ -x /usr/sbin/quotacheck ]
then
echo "Sprawdzanie quoty. Moze zabrac troche czasu."
/usr/sbin/quotacheck -avug
echo " Zrobione."
fi
if [ -x /usr/sbin/quotaon ]
then
echo "Wlaczanie quoty."
/usr/sbin/quotaon -avug
fi
Należy koniecznie ustawić
prawo do wykonania takiego pliku! Aby uzyskać prawa
root.root rwxr-xr-x wpisujemy zlecenie:
chown root.root /etc/rc.d/rc.quota
chmod 755 /etc/rc.d/rc.quota
Teraz zostało jedynie dopisanie na końcu(!) pliku /etc/rc.d/
rc.local odwołanie do skryptu
rc.quota, czyli wpisujemy nowy wiersz:
/etc/rc.d/rc.quota
Restart komputera.
-
Przy konfigurowaniu quota czasami potrzebujemy wyświetlić rozmiar wykorzystanej i wolnej przestrzeni na dysku
(partycjach). Jako root wpisujemy wówczas zlecenie:
df -h
Used oznacza używane-zajęte,
Avail oznacza dostępne-wolne, Size - czyli wielkość
partycji.
Poleceniem, które się jeszcze przyda jest:
repquota, które pokazuje raport używania limitów w systemie. Proponuję jako root wpisać zlecenie:
repquota /home | grep username
Opcje zlecenia
repquota:
-a raport wszystkich systemów plików
-v raport z wszystkich limitów, łącznie z tymi nieużywanymi
-g raport z limitów grup
-a raport z limitów użytkowników
Powyższe zlecenie
repquota jest domyślnie dostępne tylko dla roota. Natomiast zwykły user
może sprawdzić limity swojego konta poprzez zlecenie
quota z opcjami:
-g wypisuje limity grup do jakich należy użytkownik.
-u wypisuje linit określonego użytkownika.
-v wypisuje limity wszystkich systemów plików, obsługujących limity przy należne użytkownikowi.
-q pokazuje użytkownikowi czy posiada jakieś ograniczenia .
Ciekawostką jest możliwość wyświetlenia informacji o quota po zalogowaniu w shellu. Opis na
sąsiedniej stronie.
Ciekawy, choć krótki artykuł o quocie znalazłem w Komputer Świat Expert 1/2006 str. 83.