Pri inštalácii servera ste si mohli vytvoriť toľko partícií, koľko ste chceli. Nasledujúce odporúčania sa vám hodia, ak server ešte len idete (re)inštalovať. V prípade, že sa hodláte potrápiť s už rozdeleným diskom, nemusím (alebo musím??) hádam nikomu vysvetľovať, že to je veľmi nepríjemné a náročné a pred každou činnosťou súvisiacou s diskom by ste mali zálohovať všetky údaje!
Partícia (partition, oddiel, slice) je oblasť pevného disku, na ktorej bude neskôr vytvorený súborový systém (filesystem). Niekedy sa tieto dva pojmy spájajú a za partíciu sa označuje aj samotný súborový systém. Ak používate Windows, určite ste sa už stretli s partíciami vo forme logických diskov. Je dôležité vedieť, že na každej partícii môže byť ľubovoľný súborový systém. Preto je možné mať na jednom fyzickom disku niekoľko operačných systémov. Linux dokáže pracovať so súbormi uloženými na rôznych súborových systémoch, čo určite výhodne použijete napríklad pre sprístupnenie súborov na partícii s Windows.
Je dôležité vedieť, že partícii ako takej je úplne jedno, aký súborový systém na nej neskôr vytvoríte. Každá partícia obsahuje iba označenie typu partície, aby ju "spoznal" operačný systém. Kým začnete vytvárať partície, je vhodné si ich veľkosť a počet vopred premyslieť podľa toho, aký účel budú mať súborové systémy, ktoré na nich neskôr vytvoríte.
Na začiatku každého pevného disku (v 0. sektore) sa uchováva tzv. partičná tabuľka, ktorá obsahuje údaje o partíciách (príznak bootovania, typ, začiatok a koniec partície). Z historických dôvodov možno mať na jednom disku najviac 4 tzv. "primárne partície" (primary partition, v prípade DOS a Windows 9x je použiteľná iba jedna). V prípade, že to nestačí (a obyčajne to nestačí), môžete jednu z primárnych partícií definovať ako "rozšírenú" partíciu (extended partition). Rozšírená partícia potom môže obsahovať ďalšie partície, teoreticky ľubovoľné množstvo. Podľa "HOWTO Partition" je to 63 partícií pre IDE disk resp. 15 pre SCSI disk.
Linux ma iné označovanie partícií ako Windows - neexistujú disky C:, D: a tak ďalej. Namiesto toho sa používa systém označovania, ktorý - ak sa ho raz naučíte - vám povie veľmi presne, kde sa daná partícia nachádza.
Jednotlivé partície sú (ako veľa vecí v Linuxe) špeciálne (blokové) zariadenia/súbory v adresári "/dev
". Začínajú sa písmenami "hd
" (IDE disky) alebo "sd
" (SCSI disky). Ďalšie písmeno určuje, o ktorý fyzický disk ide. "/dev/hda
" je prvý fyzický IDE disk. "/dev/hdb
" je druhý fyzický IDE disk. "/dev/sda
" je prvý fyzický SCSI disk, "/dev/sdb
" druhý fyzický SCSI disk a tak ďalej. Toto označenie sa používa aj pre samotnú partičnú tabuľku.
Posledný údaj v označení partície je jej poradové číslo. "/dev/hda1
" označuje prvú partíciu na prvom fyzickom IDE disku. "/dev/hda2
" je druhá partícia na prvom fyzickom IDE disku. "/dev/sdb1
" je prvá partícia na druhom fyzickom SCSI disku.
Primárne partície sú vždy prvé 4 partície na disku, teda napr. v prípade prvého fyzického IDE disku: "/dev/hda1
", "/dev/hda2
", "/dev/hda3
" a "/dev/hda4
". Čo sa stane, ak použijeme viac partícií? Nič zvláštne, pokračujeme v číslovaní od "5" - niektorá z primárnych partícií musí byť označená ako rozšírená a ďalšia partícia bude mať označenie "/dev/hda5
".
Poznámka: ak používate diskové polia (napr. servery HP), označenia diskov budú takmer na 100% odlišné.
Radšej si ukážeme príklad (môj domáci počítač s jedným IDE diskom a dvomi operačnými systémami - Windows a Linux). Zatiaľ sa zamerajte na prvý a posledný stĺpec, už o chvíľu sa dozviete viac:
fdisk -l /dev/hda /dev/hda1 * 1 281 2257101 b Win95 FAT32 /dev/hda2 282 524 1951897+ 5 Extended /dev/hda5 282 412 1052226 b Win95 FAT32 /dev/hda6 413 414 16033+ 83 Linux /dev/hda7 415 421 56196 82 Linux swap /dev/hda8 422 524 827316 83 Linux
Partície:
/dev/hda1
: primárna partícia. Ekvivalent vo Windows: C:/dev/hda2
: primárna partícia označená ako rozšírená (Extended). Neobsahuje nijaké dáta./dev/hda5
: partícia v rámci rozšírenej partície. Ekvivalent vo Windows: D:/dev/hda6
: partícia v rámci rozšírenej partície. (pozn: tento disk Windows nevidia)/dev/hda7
: partícia v rámci rozšírenej partície. (pozn: tento disk Windows nevidia)/dev/hda8
: partícia v rámci rozšírenej partície. (pozn: tento disk Windows nevidia)Ako vidíte, zariadenia "/dev/hda3
" a "/dev/hda4
" sa nenachádzajú vo výpise, čo (celkom logicky) znamená, že tieto primárne partície nie sú využité.
Ako sme si povedali, na jednotlivých partíciách môžu byť vytvorené rôzne súborové systémy a tak na jednom disku môžu spolu "žiť" rôzne operačné systémy. Partície však môžete využiť aj v prípade jedného operačného systému:
/boot
".Pri vytváraní partícií pod Linuxom sa môžete najčastejšie stretnúť s týmito partíciami:
Pozor! Pri práci s partičnou tabuľkou buďte maximálne opatrní, pretože pri manipulácii s partíciami (odstránenie, zmena veľkosti, posun začiatku partície) sa vymaže ich obsah (dáta)!
Na prácu s partičnou tabuľkou slúži program fdisk
. Program je interaktívny a potrebuje ako parameter označenie disku, na ktorom sa nachádza partičná tabuľka. Vo väčšine prípadov ide o prvý disk (v tomto príklade IDE).
Partičnú tabuľku si môžete vypísať pomocou príkazu
fdisk -l /dev/hda
(kde /dev/hda určuje umiestnenie partičnej tabuľky - v tomto prípade prvý IDE disk). Na mojom domácom počítači sa zobrazí:
Disk /dev/hda: 255 heads, 63 sectors, 524 cylinders Units = cylinders of 16065 * 512 bytes Device Boot Start End Blocks Id System /dev/hda1 * 1 281 2257101 b Win95 FAT32 /dev/hda2 282 524 1951897+ 5 Extended /dev/hda5 282 412 1052226 b Win95 FAT32 /dev/hda6 413 414 16033+ 83 Linux /dev/hda7 415 421 56196 82 Linux swap /dev/hda8 422 524 827316 83 Linux
Zobrazené stĺpce znamenajú (príklady vychádzajú z tučne zobrazeného riadku):
Ak chcete partičnú tabuľku zmeniť, musíte program spustiť bez parametra "-l" a s rootovskými právami.
fdisk /dev/hda
Po stlačení "m" sa zobrazí menu s ovládacími klávesami:
fdisk -l /dev/hda
"Súborový systém je spôsob uloženia údajov na partícii, pričom údaje sa uchovávajú v súboroch, ktoré sú organizované do adresárov. Údaje o súboroch sa uchovávajú rôznym spôsobom, napr. súborový systém "ext2" (a mnohé iné) rozlišujú i-uzly (inodes) a bloky (blocks). Bloky obsahujú samotné údaje, i-uzly uchovávajú všetky informácie o súbore s výnimkou jeho mena a zoznam dátových blokov súboru. Adresáre sú v skutočnosti tiež iba súbory, ktoré obsahujú mená súborov a odkazy na zodpovedajúce i-uzly.
Na každom súborovom systéme existuje minimálne jeden adresár, ktorý sa nazýva hlavný alebo koreňový (root) adresár. Na Unixových systémoch sa označuje ako "/
".
Z hľadiska administrátora majú súborové systémy niekoľko kľúčových vlastností:
Na počítači môže existovať niekoľko súborových systémov, dohromady však musia byť prepojené s hlavným súborovým systémom. Jednotlivé súborové systémy sa pripájajú na vopred vytvorené (a prázdne - inak by "prekryli" pôvodné údaje) adresáre v rámci hlavného súborového systému. Tieto adresáre sa nazývajú pripájacie body. Po pripojení súborového systému (príkazom "mount
") sa jeho obsah objaví ako obsah adresára, ktorý je pre daný súborový systém pripájacím bodom.
Informácie o momentálne pripojených súborových systémoch získate zadaním príkazu "mount
" (bez parametrov). Informácie o súborových systémoch, ktoré sa automaticky pripoja pri štarte servera sa nachádzajú v súbore "/etc/fstab
".
Pri vytváraní súborových systémov na jednotlivých partíciách (v prípade niektorých distribúcií prebieha proces rozdeľovania disku a vytvorenia súborových systémov v jednom "kroku") si treba vybrať správny súborový systém. Našťastie, ak používate Linux, nie je ich veľa, takže to nie je také ťažké:
tune2fs -j /dev/XXX
" postupne pre všetky súborové systémy, kde chcete zapnúť žurnálovanie. Mám otestované, že to funguje aj pre živé, pripojené súborové systémy, ale ak môžete, urobte to radšej v jednopoužívateľskom režime ("init 1
")./etc/fstab
" nahraďte "ext2" za "ext3" pre všetky súborové systémy, kde ste zapli žurnálovanie.mount /dev/XXX -o remount
" znovu pripojte jeden zo súborových systémov, mali by ste vidieť hlásenie o vytvorení žurnála. Ak je všetko OK, urobte to pre ďalšie súborové systémy alebo reštartujte počítač. Po ďalšom boote budú súborové systémy pripojené ako "ext3".Odporúčanie: Neviem, ako sú na tom s podporou žurnálovania jednotlivé distribúcie; bezpečne viem o tom, že Mandrake podporuje vo verzii 8.2 rovnako reiserfs aj "ext3" (testoval som "reiserfs", po reinštalácii som prešiel na "ext3") a v starších verziách 8.x bola minimálne podpora "reiserfs". Vo všeobecnosti však platí, že ak si máte možnosť vybrať niektorý z týchto súborových systémov, tak to urobte.
Najdôležitejšie atribúty pripojenia (o všetkých sa môžete dočítať v manuálovej stránke "man mount
):
/var
" odložené inštalačné skripty k balíkom!)/etc/fstab
"!Súborovy systém môžete pripojiť príkazom mount:
mount -t TYP -o atribut1,atribut2,...,atributN zariadenie adresar
mount -o atribut1,atribut2,...,atributN zariadenie | adresar
Príklad 1: pripojenie súborového systému ext2 na zariadení/partícii /dev/hda4
na pripájací bod /home
:
mount -t ext2 /dev/hda4 /home
Príklad 2: pripojenie súborového systému, ktorý sa nachádza v /etc/fstab
a má pripájací bod /home
s atribútmi nosuid, nodev, rw (netreba uvádzať typ a zariadenie):
mount -o nosuid,nodev,rw /home
Príklad 3: pripojenie súborového systému, ktorý sa nachádza v /etc/fstab
na zariadení /dev/hda4
s atribútmi nosuid, nodev, rw (netreba uvádzať typ a pripájací bod):
mount -o nosuid,nodev,rw /dev/hda4
Príklad 4: pripojenie už pripojeného súborového systému s pripájacím bodom /home
s atribútmi suid, dev, rw
mount -o remount,suid,dev,rw /home
Odpojenie súborového systému je jednoduché:
umount zariadenie | adresar
Príklad:
umount /home
Aby ste nemuseli šamaniť na príkazovom riadku, existuje už spomínaný súbor "/etc/fstab
", ktorý obsahuje zoznam súborových systémov s parametrami. Tieto súborové systémy sa pri štarte servera automaticky pripoja a pri zastavení alebo reštarte automaticky odpoja.
Ukážka súboru "/etc/fstab
" z môjho domáceho počítača:
#part. prip. bod system atributy dump fsck /dev/hda8 / ext2 defaults 1 1 /dev/hda6 /boot ext2 defaults 1 2 none /dev/pts devpts mode=0620 0 0 /mnt/cdrom /mnt/cdrom supermount fs=iso9660,dev=/dev/cdrom 0 0 /mnt/floppy /mnt/floppy supermount fs=vfat,dev=/dev/fd0 0 0 /dev/hda1 /mnt/win_c vfat ro,user,exec,umask=0,codepage=852,iocharset=iso8859-2 0 0 /dev/hda5 /mnt/win_d vfat ro,user,exec,umask=0,codepage=852,iocharset=iso8859-2 0 0 none /proc proc defaults 0 0 /dev/hda7 swap swap defaults 0 0
Ukážka toho istého súboru z môjho nového počítača:
#part. prip. bod system atributy dump fsck /dev/hda9 / ext3 defaults 1 1 /dev/hda3 /boot ext3 defaults 1 2 none /dev/pts devpts mode=0620 0 0 /dev/hda8 /home ext3 defaults 1 2 none /mnt/cdrom supermount dev=/dev/scd0,fs=auto,ro,--,iocharset=iso8859-1,codepage=850,umask=0 0 0 none /mnt/floppy supermount dev=/dev/fd0,fs=auto,--,iocharset=iso8859-1,sync,codepage=850,umask=0 0 0 /dev/hda1 /mnt/win_c ntfs iocharset=iso8859-1,ro,umask=0 0 0 /dev/hda5 /mnt/win_d vfat iocharset=iso8859-1,ro,codepage=850,umask=0 0 0 /dev/hda6 /mnt/win_e vfat iocharset=iso8859-1,ro,codepage=850,umask=0 0 0 none /proc proc defaults 0 0 /dev/hda7 /var ext3 defaults 1 2 /dev/hda4 swap swap defaults 0 0 /dev/hdd1 /mnt/disk auto user,iocharset=iso8859-1,kudzu,codepage=850,noauto,umask=0,exec 0 0
mount
"fsck
" (1 = hlavný súb. systém, 2 = ostatné, ktoré sa majú kontrolovať, 0 = súborové systémy, ktoré sa nemajú kontrolovať na chyby - typicky súborové systémy Windows, CDROM, disketová mechanika, NFS)TODO: pokecať o tom viac, aj ukážka fs s nodev a pod. z príkladov hore
Na pripojenie/odpojenie všetkých súborových systémov v "/etc/fstab
" môžete použiť príkaz:
mount -a [-t TYP]
resp.
umount -a [-t TYP]
Ak uvediete parameter "-t TYP", pripoja/odpoja sa iba súborové systémy zadaného typu.
Súborové kvóty umožňujú obmedziť používateľské súbory (ich celkovú veľkosť a počet) pre jednotlivé súborové systémy. Aby ste ich mohli bez problémov používať, potrebujete:
/home
")/var/spool/mail
") alebo "/var
" alebo uchovávať maily priamo v domácich adresároch používateľov (formát Maildir
namiesto mailbox
v nastavení mail servera)/etc/fstab
" pre používanie kvótZ vyššie uvedených bodov vyplýva, že každý používateľ bude môcť vo svojom domácom adresári používať iba obmedzené množstvo a veľkosť súborov. Stále mu zostane možnosť používať adresáre pre dočasné súbory ("/tmp
", "/var/tmp
"), ktoré však z principiálneho hľadiska nebudeme obmedzovať (slúžia práve na dočasné odkladanie súborov, ktoré nie je možné uložiť inde), ale budeme ich periodicky čistiť.
Pri práci s kvótami sa stretnete s týmito pojmami:
Poznámka: všimol som si, že niekedy po prekročení kvóty používateľ už nemôže súbory ani vymazať. Momentálne to nemôžem overiť, ale ak by sa vám to stalo, pomohlo mi jedine to, že som používateľovi kvótu dočasne odstavil, zmazal mu súbory a potom zapol kvótu.
Pokiaľ ste si samostatné partície "/home
" a "/var
" (alebo "/var/spool/mail
") vytvorili pri inštalácii servera, je všetko v poriadku. Pokiaľ nie, budete musieť odzálohovať údaje na serveri a vytvoriť si partície teraz. Práci s partičnou tabuľkou sa venujem na inom mieste.
Ak by ste sa predsa len pokúsili pokračovať bez vytvorenia špeciálnych partícií, majte na pamäti, že kvóty vám síce budú fungovať, ale pokiaľ máte len jeden súborový systém ("/
"), na ktorom sa nachádzajú okrem používateľských údajov aj adresáre pre dočasné súbory, budú tieto obmedzenia platiť aj pre ne!
Ak používate predinštalované jadro, pravdepodobne je podpora kvót zakompilovaná. Úplná istota vám však celkom isto neublíži. Spustite konfiguráciu kernelu ("make menuconfig
") a presvedčte sa, že je zapnutá možnosť "QUOTA_SUPPORT". Ak nebola, zapnite ju, ukončite konfiguráciu a prekompilujte kernel.
/etc/fstab
"Predpokladajme, že už pracujete s novým jadrom s podporou kvót. Môžete pristúpiť k ďalšiemu kroku, a to je úprava "/etc/fstab
", kde sa nachádzajú informácie o súborových systémoch na vašom počítači.
Príklad: zavádzanie kvót pre súborové systémy "/home
" a "/var
".
Pôvodný "/etc/fstab
":
.. /dev/hda6 /home ext2 defaults,nosuid,nodev 1 2 /dev/hda4 /var ext2 defaults,nosuid,nodev 1 2 ..
Upravený "/etc/fstab
"
.. /dev/hda6 /home ext2 defaults,nosuid,nodev,usrquota,quota 1 2 /dev/hda4 /var ext2 defaults,nosuid,nodev,usrquota,quota 1 2 ..
Teraz treba opätovne primountovať súborové systémy:
mount -a -o remount
Ak máte zakompilovanú podporu kvót v jadre, malo by byť všetko v poriadku.
Teraz prichádza na rad použitie jednopoužívateľského režimu. Budeme totiž počítať súbory a ich veľkosť a nebolo by dobré, keby nás pri tom svojimi zmenami rušil nejaký proces či používateľ. Zadajte z konzoly:
init 1
a počkajte, kým sa opäť objaví shell. Teraz už môžete spustiť ďalší program, "quotacheck
", ktorý pripraví všetko potrebné na zavedenie kvót (zistí veľkosti súborov používateľov) a pri prvom spustení vytvorí súbory s kvótami "quota.user
" v koreňovom adresári na každej partícii, pre ktorú zavádzate kvóty (v našom prípade to budú: "/home/quota.user
" a "/var/quota.user
". Program "quotacheck
" sa spúšťa aj pri každom bootovaní servera. Parametre: "-a
": spracuje všetky súborové systémy z "/etc/fstab
", ktoré majú zapnutú podporu kvót ("usrquota
" resp. "grpquota"
), "-v
": verbose, "-u
": spracujú sa len používateľské (nie skupinové) kvóty:
quotacheck -avu
Ak je všetko v poriadku, môžete:
/etc/init.d
" by si mali testovať, či používate kvóty a ak áno, zapnú ich automaticky. Odporúčam použiť práve túto možnosť, pri súčasných distribúciách je to v pohodequotaon -avuhneď uvidíte prípadné chybové hlásenia, ale zostanete v runleveli 1
Poznámka: ak Vám príkaz "quotacheck
" vytvoril súbory "aquota.user
" ("aquota.group
"), môže sa Vám stať, že príkaz "quotaon
" nebude fungovať, pretože bude očakávať súbory "quota.user
" ("quota.group
")! Mne osobne sa to stalo na Debiane (Woody) s kernelom 2.4.21. Po chvíli pátrania som prišiel na to, že východiskom z problému je vytvorenie prázdnych súborov "quota.user
" ("quota.group
") na rovnakom mieste, ako sa vytvorili "aquota.user
" resp. "aquota.group
" (vytvoríte ich príkazom "touch quota.user
" resp. "touch quota.group
"). Súbory "aquota.*
" potom vymažte a opäť spustite "quotacheck
". Program síce vypíše varovanie o tom, že súbory neobsahujú platné údaje, ale použije ich - a my sme za vodou.
Prototypy používateľov slúžia ako šablóny, aby ste nemuseli definovať kvóty každému používateľovi samostatne. Definujete kvóty iba raz ako prototypy a potom podľa potreby ktorémukoľvek používateľovi zavediete kvótu podľa daného prototypu. Je to nielen rýchle, ale aj veľmi elegantné. A dá sa to robiť skriptom ;-)
Vytvorte si fingovaných používateľov, ktorých úloha bude len vystupovať v súbore "/etc/passwd
". Napríklad ja budem používať dva prototypy, jeden pre "študenta" ("q-stud
", kvóty obmedzené pre žiakov na vyučovaní) a druhý pre "používateľa" ("q-user
", väčšie kvóty určené skutočným používateľom), ktoré sa budú líšiť v maximálnej veľkosti súborov. Sadnite si a navrhnite si prototypy, aké budete potrebovať vy. V školách sa napríklad môže ešte často môže použiť obmedzenie kvóty pre študentov, resp. učiteľov. Nezabudnite si určiť veľkosti kvót tak, aby súčty kvót jednotlivých používateľov boli menšie, nanajvýš rovné veľkosti vyhradenej partície. Musíte si tiež ponechať diskovú rezervu pre pridávanie používateľov v budúcnosti.
Vytvorenie prototypových používateľov: Debian
adduser --system --no-create-home --disabled-password q-stud
adduser --system --no-create-home --disabled-password q-user
Vytvorenie prototypových používateľov: iná distribúcia
useradd -c "Quota prototype (student)" -d "/tmp" -r -s "/bin/false" q-stud
useradd -c "Quota prototype (user)" -d "/tmp" -r -s "/bin/false" q-user
Parameter "--system
" ("-r
") spôsobí, že UID protypového používateľa bude menšie ako 100 (500) a bude patriť k "systémovým" kontám na serveri. Je to len konvencia. Parameter "--disabled-password
" je však dôležitý: určuje, že protypový používateľ bude mať automaticky zablokované heslo a že ho nikto nebude môcť zneužiť na prihlásenie. V niektorých distribúciách má používateľ automaticky po vytvorení konto zablokované až do zadania hesla, v iných (Debian) si "adduser
" vypýta heslo používateľa. Keďže my prototypových používateľov v skutočnosti používať nebudeme, heslo zablokujeme a ušetríme si robotu. V iných distribúciách alebo pri použití programu "useradd
" je (malo by byť!) heslo defaultne zablokované.
Teraz vytvoríme kvótu pre tieto prototypy:
edquota q-stud
Spustí sa editor v ktorom nastavujete limity (vo väčšine prípadov "vi
", ale môžete zmeniť premennú "EDITOR
" vo vašom prostredí ešte pred zadaním príkazu):
bash:
export EDITOR=joe
csh, tcsh:
setenv EDITOR joe
Všimnite si, že v nasledujúcich príkladoch (a samozrejme aj v reálnej praxi) sa v súboroch s definíciou kvót nespomínajú pripájacie body diskov, ale priamo špeciálne zariadenia (napr. "/dev/hda4
"). Preto si vždy pred úpravou kvót (alebo aj počas nej) nechajte vypísať Vaše disky príkazom "mount" (bez parametrov).
Quotas for user q-stud: /dev/hda4: blocks in use: 0, limits (soft = 1000, hard = 1024) inodes in use: 0, limits (soft = 5, hard = 5) /dev/hda6: blocks in use: 0, limits (soft = 3072, hard = 4096) inodes in use: 0, limits (soft = 475, hard = 500)
Týmto príkazom nastavíte kvóty na pre jednotlivé partície používateľa "q-stud
" takto:
/var
": soft: 1000 KB, hard: 1024 KB; max. 5 súborov (v skutočnosti by mal stačiť 1, pretože ide o súbor s mailami, ale niektoré programy na prácu s mailami môžu vytvárať uzamykacie súbory... takže pre istotu)/home
": soft: 3072 KB, hard: 4096 KB; počet súborov: soft: 475, hard: 500edquota q-user Quotas for user q-user: /dev/hda4: blocks in use: 0, limits (soft = 8000, hard = 8192) inodes in use: 0, limits (soft = 5, hard = 5) /dev/hda6: blocks in use: 0, limits (soft = 8000, hard = 8192) inodes in use: 0, limits (soft = 850, hard = 900)
Týmto príkazom nastavíte kvóty na pre jednotlivé partície používateľa "q-user
" takto:
/var
": soft: 8000 KB, hard: 8192 KB; max. 5 súborov/home
": soft: 8000 KB, hard: 8192 KB; počet súborov: soft: 850, hard: 900Teraz aplikujeme hodnoty prototypov na všetkých skutočných používateľov (Pozor! Nie pre roota a systémové kontá!!! Pre démonov by sa síce zišlo mať nejaké obmedzenia, ale nie je to triviálna záležitosť a v prípade, že urobíte chybu, niečo vám prestane fungovať - obyčajne ten démon ;)). Má to tú výhodu, že už nebudete musieť vôbec nič editovať:
Pre zavedenie kvót podľa prototypu "q-user
" pre používateľov "janko
", "marienka
" a "peter
":
edquota -p q-user janko marienka peter
Pre zavedenie kvót podľa prototypu "q-stud
" pre používateľov "pokus
", "novak
" a "jozef
":
edquota -p q-stud pokus novak jozef
Ak máte používateľov rozdelených do skupín, ktorým chcete zaviesť potenciálne rôzne kvóty, môžete použiť na vypísanie používateľov tento skriptík v bashi:
cat /etc/passwd |awk -F: '{if ($4 == XXX) print $1}'
kde "XXX" je číslo (GID) skupiny, ktorá Vás zaujíma (zistíte ho prehľadaním súboru "/etc/group
". Ak vizuálne skontrolujete výstup príkazu, môžete ho použiť na zavedenie kvót:
edquota -p q-user `cat /etc/passwd |awk -F: '{if ($4 == XXX) print $1}'`
Dôsledkom príkazu bude, že všetci zobrazení používatelia (skupina "XXX") budú mať zavedenú kvótu podľa prototypu "q-user
".
Alternatívne môžete chcieť zaviesť rovnakú kvótu všetkým používateľom servera. V takom prípade si zo súboru "/etc/passwd
" zistite UID prvého nesystémového používateľa (pravdepodobne 500 alebo 1000 - v tomto príklade použijeme "500") a použite skriptík takto:
cat /etc/passwd |awk -F: '{if ($4 > 500) print $1}'
a ak ste spokojní s výstupom, zavediete kvóty príkazom:
edquota -p q-user `cat /etc/passwd |awk -F: '{if ($4 > 500) print $1}'`
následkom čoho budú mať všetci vypísaní používatelia zavedenú kvótu podľa prototypu "q-user
". No a teraz mi povedzte, že to nie je elegantné! :) Kvóty sú hotové. Na ich kontrolu teraz a kedykoľvek počas prevádzky servera môžete použiť programy "quota
" a "repquota
":
Príklad:
quota janko Disk quotas for user janko (uid 657): Filesystem blocks quota limit grace files quota limit grace /dev/hda4 89 8000 8192 1 5 5 /dev/hda6 4087 8000 8192 601 850 900
Poznámka: výpis príkazu "repquota
" je z môjho servera, takže číselné údaje pre kvóty v ňom nesedia s tu uvedenými príkladmi. Sorry, nie je čas to teraz meniť. Všimnite si však, ako systém upozorňuje na prekročenie kvóty na disku "/dev/hda4" u používateľa "user6".
repquota -auv *** Report for user quotas on device /dev/hda4 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 2077 0 0 5 0 0 nobody -- 0 1000 1024 0 5 5 admin -- 1 0 0 1 0 0 q-stud -- 0 1000 1024 0 5 5 q-user -- 0 8000 8192 0 5 5 user1 -- 0 0 0 1 0 0 user2 -- 1316 0 0 1 0 0 user3 -- 27593 0 0 1 0 0 user4 -- 15743 0 0 1 0 0 user5 -- 28 0 0 1 0 0 vix -- 132 0 0 1 0 0 user6 +- 8182 8000 8192 none 1 5 5 *** Report for user quotas on device /dev/hda6 Block grace time: 7days; Inode grace time: 7days Block limits File limits User used soft hard grace used soft hard grace ---------------------------------------------------------------------- root -- 64632 0 0 2124 0 0 www-data -- 1554 0 0 56 0 0 nobody -- 1 3072 4096 1 475 500 mysql -- 226 0 0 57 0 0 admin -- 579 0 0 111 0 0 q-stud -- 0 3072 4096 0 475 500 q-user -- 0 8000 8192 0 850 900 user1 -- 17766 0 0 1650 0 0 user2 -- 62389 0 0 122 0 0 user3 -- 346932 0 0 1244 0 0 user4 -- 691711 0 0 7741 0 0 user5 -- 75841 0 0 574 0 0 vix -- 288035 0 0 8443 0 0 user6 -- 5025 8000 8192 195 850 900
Pre rýchle zrušenie kvót pre nejakého používateľa ("lenka
") môžete použiť:
edquota -p root lenka
Za predpokladu, že používateľ "root
", ktorého sme práve použili ako prototyp, nemá určenú kvótu!
To je všetko. V budúcnosti po pridaní nového používateľa do systému mu jednoduchým spustením programu "edquota
" podľa predchádzajúcich príkladov zavediete automaticky aj kvótu. Pre väčšie pohodlie môžete príkaz "edquota
" pridať do súboru "/usr/sbin/adduser.local
" (ak používate balík "adduser" na Debiane). TODO ukážka
Upozornenie: ak používateľovi nastavíte kvótu podľa prototypu, znamená to len toľko, že sa použijú tie isté nastavenia, ako používa prototypový používateľ. Ak zmeníte nastavenia prototypového používateľa, nastavenia kvót používateľov, ktorých ste vytvorili podľa tohto prototypu sa nezmenia! Pre aktualizácku budete musieť opätovne zaviesť kvóty, napríklad pomocou toho jednoriadkového skriptíku, ktorý som tu napísal. Takže vlastne - žiaden problém!
Upozornenie: nikdy nezavádzajte kvóty systémovým používateľom, ak presne neviete, čo robíte. A absolútne nikdy nezavádzajte kvótu používateľovi "root"!
Keď vytvárate partície, mali by ste od začiatku mať na pamäti, na čo ich budete chcieť použiť. Od toho totiž závisí, aké veľké partície si vytvoríte a kde budú ich pripájacie body. Plánované rozdelenie disku môže veľmi významne prispieť k zvýšeniu bezpečnosti.
Pripájacie body sa definujú v súbore "/etc/fstab
" spolu s atribútmi jednotlivých súborových systémov. Moje odporúčania sú takéto:
pripájací bod | popis | súborový systém | parametre (/etc/fstab) |
---|---|---|---|
SWAP | žiaden (partícia: linux swap) | defaults | |
/ |
hlavný súborový systém | ext3 (reiserfs, ext2) | defaults |
/home |
domáce adresáre používateľov | ext3 (reiserfs, ext2) | defaults,nosuid,nodev,usrquota |
/tmp |
umiestnenie dočasných súborov | ext3 (reiserfs, ext2) | defaults,nosuid,nodev,noexec |
pripájací bod | popis | súborový systém | parametre (/etc/fstab) |
---|---|---|---|
SWAP | žiaden (partícia: linux swap) | defaults | |
/ |
hlavný súborový systém | ext3 (reiserfs, ext2) | defaults |
/boot |
umiestnenie kernelu - nepovinné | ext3 (reiserfs, ext2) | defaults,nosuid,nodev |
/home |
domáce adresáre používateľov | ext3 (reiserfs, ext2) | defaults,nosuid,nodev,usrquota |
/var |
súbory, ktoré sa počas behu systému menia (dočasné súbory, čakajúce maily, rôzne databázy, ...) | ext3 (reiserfs, ext2) | defaults,nosuid,nodev* *: ak budete na tejto partícii vytvárať vyhradené adresáre pre démonov (chroot()), je pravdepodobné, že budete potrebovať aj zariadenia (napr. " /dev/null ") a tento parameter budete musieť vynechať! |
/var/log |
logovacie súbory | ext3 (reiserfs, ext2) | defaults,nosuid,nodev*,noexec |
/var/spool/mail (ak uchovávate maily v tomto formáte) |
umiestnenie doručených mailov | ext3 (reiserfs, ext2) | defaults,nosuid,nodev,noexec,usrquota |
/tmp |
umiestnenie dočasných súborov | ext3 (reiserfs, ext2) | defaults,nosuid,nodev |