Tomuto hlavnímu adresáři říkáme root (kořenový) adresář a označujeme jej prostě lomítkem (/). Toto pojetí možná vypadá podivně, ale ve skutečnosti vám velmi usnadňuje život v situaci, kdy chcete diskový prostor rozšířit. Například se vám stane, že už se nevejdete na disk, kde máte připojený adresář /home. Takže, když diskový oddíl může být připojen pod libovolný adresář, můžete jednoduše skočit do obchodu, koupit tam další harddisk a namountovat (připojit) si jej pod adresář /home. No a máte "naroubováno" o něco více prostoru do vašeho systému. A to vše bez nutnosti hýbat s mnoha věcmi okolo.
Dále si popíšeme hlavní adresáře nacházející se na nejvrchnější úrovni souborového systému Unixu.
$ pwd
/usr/bin
mkdir
vytvoříte nový adresář. Následující příklad vytvoří adresář manka
v aktuálním adresáři:
$ mkdir manka
Taky můžete zadat cestu:
$ mkdir /usr/local/manka
Volbou -p
řekneme mkidiru, aby vytvořil i nadřízené adresáře. Výše uvedený příklad totiž zhavaruje, pokud /usr/local
neexistuje. Volba -p
zajistí i vytvoření /usr/local
:
$ mkdir -p /usr/local/manka
cd
se používá ke změně pracovního (aktuálního) adresáře. Jednoduše napíšte cd
následovaný jménem cesty k adresáři. Zde je pár příkladů:
darkstar:~$ cd /bin
darkstar:/bin$ cd usr
bash: cd: usr: No such file or directory
darkstar:/bin$ cd /usr
darkstar:/usr$
rmdir
se mažou adresáře. Před vymazáním musí být adresář prázdný, jinak se vymazání neprovede. Syntaxe je jednoduchá:
$ rmdir <directory>
Následující příklad vymaže podadresář cipisek
z aktuálního adresáře. Kdyby adresář cipisek
neexistoval, rmdir
vám to poví:
$ rmdir cipisek
Rovněž můžete smazat adresář včetně jeho nadřízených adresářů zadáním volby -p
. Systém se nejdříve pokusí smazat adresář hejaz
uvnitř adresáře /tmp
. Pokud se to podaří, bude se dále snažit smazat adresář /tmp
. rmdir
pokračuje v mazání tak dlouho, dokud se buď neobjeví chyba, nebo dokud není celý zadaný strom smazán.
$ rmdir -p /tmp/hejaz
Souborový systém ukládá informace o vlastnictví pro každý soubor a adresář v systému. Tj. který uživatel a skupina vlastní ten který soubor. Nejsnazší způsob jak zobrazit tyto informace je použít příkaz ls
:
$ ls -l /usr/bin/wc
-rwxr-xr-x 1 root bin 7368 Jul 30 1999 /usr/bin/wc
Zajímá nás třetí a čtvrtý sloupec. Ty obsahují jméno uživatele a skupiny, kteří vlastní tento soubor. Vidíme, že tento soubor vlastní uživatel root
a skupina bin
.
Vlastníky můžeme měnit příkazy chown
(značí "change owner" - změň vlastníka) a chgrp
(značí "change group" - změň skupinu). Abychom změnili vlastníka souboru na daemon
, použijeme chown
:
# chown daemon /usr/bin/wc
Ke změně skupiny vlastníků na root
použijeme chgrp
:
# chgrp root /usr/bin/wc
Pomocí chown
můžeme změnit i vlastníka i skupinu:
# chown daemon.root /usr/bin/wc
Práva (permissions) jsou další důležitou úlohou víceuživatelského aspektu souborového systému. S jejich pomocí můžete měnit kdo smí číst, zapisovat a spouštět soubory.
Informace o právech jsou ukládána jako čtyři osmičkové číslice, každá specifikuje jinou množinu práv. Jsou to práva pro vlastníka, skupinu a ostatní (world). Čtvrá cifra je použitá k uložení speciálních informací jako je nastavené uživatelské ID, nastavené skupinové ID a "sticky" bit. Osmičkové hodnoty přidělené módům oprávnění jsou (mají též přidělená písmena, která zobrazují programy jako ls
a mohou být využívána programem chmod
):
Druh práva Permission Type | Osmičková hodnota | Písmenkové vyjádření |
---|---|---|
"sticky" bit | 1 | t |
nastav ID uživatele | 4 | s |
nastav ID skupiny | 2 | s |
čtení | 4 | r |
zápis | 2 | w |
spouštění | 1 | x |
Pro každou skupinu práv zadáváte osmičkové hodnoty. Například pokud chcete aby práva skupiny byla "čtení" a "zápis", měli byste pro práva skupiny zadat "6".
Pro změnu práv použijeme příkaz chmod
(což znamená "change mode" - "změň mód"), kterým nastavíme práva souboru example
. Nastavte osmičková čísla práv, která chcete. Aby vlastník mohl číst, psát a spouštět, měl by mít hodnotu 7. Číst a spouštět by bylo 5. Dejte to dohromady a zadejte to do příkazu chmod
:
$ chmod 755 /tmp/example
$ ls -l /tmp/example
-rwxr-xr-x 1 david users 0 Apr 19 11:21 /tmp/example
K nastavení zvláštních oprávnění zadáme čísla do prvního sloupce. Například k nastavení ID uživatele a ID skupiny dáme do prvního sloupce "6":
$ chmod 6755 /tmp/example
$ ls -l /tmp/example
-rwsr-sr-x 1 david users 0 Apr 19 11:21 /tmp/example
Pokud vás osmičková čísla pletou, můžete místo nich používat písmena. Skupiny
oprávnění pro chmod
pak vypadají takto:
Vlastník | u |
Skupina | g |
Ostatní | o |
Všichni zmínění | a |
Abychom dosáhli toho, co nahoře, museli bychom použít několik příkazových řádků:
$ chmod a+rx /tmp/example
$ chmod u+w /tmp/example
$ chmod ug+s /tmp/example
Někteří lidé dávají přednost písmenům před číslicemi. Obě cesty vyúsťují do té samé sady oprávnění.
Na několika místech jsme se zmínili o nastavování ID uživatele a ID skupiny. Možná si říkáte, o co jde? Obyčejně, když spustíte program, ten pak pracuje pod vaším uživatelským účtem. To znamená, že má všecha ta oprávnění, která máte vy jako uživatel. Totéž platí pro skupinu. Jestliže spustíte program, vykonává se pod vaší současnou skupinou. S nastaveným oprávněním ID uživatele si můžete vynutit, aby program vždy běžel jako majitel programu (třeba jako "root"). Nastavení ID skupiny je totéž, ale pro skupinu.
Zacházejte s tím opatrně. Nastavení ID uživatele a ID skupiny programům může ve vašem systému otevřít významné bezpečnostní mezery. Pokud často nastavujete ID uživatele programům, které vlastní "root", povolíte každému, aby provozoval tento program stejně jako root. A protože root nemá v systému žádná omezení, můžete si sami představit, jak velký bezpečnostní problém to je. Stručně řečeno, není špatné používat nastavení oprávnění ID uživatele a ID skupiny, ale dělejte to s citem.
Odkazy (links) jsou ukazovátka mezi soubory. Pomocí odkazů můžete mít soubory na mnoha místech a mít je přístupné pod mnoha názvy. Existují dva typy odkazů: Pevné a symbolické.
Pevné odkazy jsou názvy pro konkrétní soubor. Ty mohou existovat pouze uvnitř jediného adresáře a jsou vyjmuty jedině tehdy, když je ze systému vyjmuto reálné jméno. Jsou v určitých případech užitečné, ale mnoho uživatelů shledává symbolické linky mnohostrannějšími.
Symbolický odkaz, též nazývaný "měkký", může ukazovat na soubor vně svého adresáře. Je to vlastně malý souborek, obsahující informaci, kterou potřebuje. Symbolické odkazy můžete přidávat i mazat bez zasažení vlastního souboru
Odkazy nemají svou vlastní sadu práv či vlastnictví, ale místo toho je přebírají od souboru, na který ukazují. Zde je obecný příklad:
$ ls -l /bin/sh
lrwxrwxrwx 1 root root 4 Apr 6 12:34 /bin/sh -> bash
Odkazy se vytvářejí příkazem ln
:
$ ln soubor [jméno_odkazu]
Příkaz vytvoří odkaz na soubor. Není-li uveden druhý parametr, pak je odkaz vytvořen v aktuálním adresáři a dostane stejné jméno, jako originální soubor. Uvedeným způsobem vytvoříte odkaz pevný. Pro vytvoření symbolického odkazu přidejte za příkaz ln
parametr -s
.
$ ln -s soubor [jméno_odkazu]
V Unixu se diskové zařízení musí nejdřív připojit k souborovému systému. Běžně se to nazývá přimountovat. V Unixu totiž nemají jednotlivé disky písmenka, jako ve windows, disk se musí připojit k nějakému adresáři a po jeho přípojení v tom adresáři bude obsah toho disku. Po práci je potřeba disk zase odmountovat, speciálně se to týká disket, před tím než se vyndá tak se musí odmountovat, jinak přijdete s velkou pravděpodobností o data. Data se na disketu zapisují se zpožděním a když dáte příkaz k odmountování, tak se teprve zapíší. Když vytáhnete neodmountovanou disketu, koledujete si o problémy, nejen že můžete přijít o data, ale nepůjde vám přimountovat ani další disketa.
S cédéčky je to podobné, ale
snazší. Zaprve se na ně nic nezapisuje a zadruhé Unix nedovolí otevřít
dvířka mechaniky, dokud není cédéčko odpojeno. Může se vým stát, že disk
nepůjde odpojit. To znamená, že některý program přistupuje k tomu disku,
např. má otevřen soubor, který se na disku nachází. Musíte tomu programu
říct, ať ten soubor zavře a nebo ten program ukončit. Nemusí jít jen o
otevřený soubor, stačí abyste měli v mc
zobrazen obsah toho disku v
panelu s
kurzorem (pak je adresář toho disku pracovním adresářem mc) a už také nepůjde
odpojit. Když nebudete tušit, kde to vázne, pomůže vám příkaz fuser
(jako root dejte na zkoušku příkaz fuser -v /
a zjistíte co všechno vám visí na disku připojeném ke kořenovému
adresáři).
Obecně se mountování disku dělá příkazem mount
a
odmountování příkazem umount
. Protože některé disky se
mountují pravidelně nebo se spoustou různých parametrů, třeba hardisky, a
bylo by nepohodlné je po každém startu počítače či v případě potřeby
mountovat ručně, je tu konfigurační soubor /etc/fstab
, v
kterém si mountování disku můžete předkonfigurovat. Můžete i zadat, které
disky se mají přimountovat rovnou při startu počítače.
Obecně je při mountování potřeba zadat:
Disketu s win formátem (FAT) pak můžete přimountovat příkazem:
$ mount -t vfat /dev/fd0 /mnt/fd0
-t vfat
je typ souborového systému, místo vfat můžete zadat jiný,
třeba cdromy mají iso9660. Příkaz mount umí některé poznat sám, takže
to můžete zkusit i bez tohoto parametru, a teprve, když obdržíte
chybové hlášení, že mount nedokázal rozeznat formát, zadáte mu jej
ručně./dev/fd0
je zařízení 'první disketovka' ve windows známá jako a:/dev/fd1
je druhá/dev/hda1
je první partition prvního ide disku (primary master)/dev/hdc6
je šestá partition třetího ide disku (secondary master) a
tak dále./mnt
je adresář v kořenovém adresáři, zadaný adresář musí
existovat.V souboru /etc/fstab
můžete mít pak tento řádek:
/dev/fd0 /mnt/fd0 auto noauto,user,showexec=no 0 0
Tento řádek znamená, že máte předkonfigurováno připojení první
disketovky k adresáři /mnt/fd0
s automatickým rozlišováním formátu (auto) a s
nějakým dalším nastavením (noauto znamená nepřipojovat automaticky po
startu a tak podobně). Parametry jsou
odděleny čárkami a NESMÍ být mezi nimi mezera. Když máte toto
předkonfigurování, stačí vám pak jen dát příkaz:
$ mount /mnt/fd0
a Unix si už to ostatní doplní a disk připojí. Po skončení práce dejte příkaz:
$ umount /mnt/fd0
a to je všechno. V případě potíží:
$ fuser /mnt/fd0
# Ukazka moznosti pripojovaji v souboru /etc/fstab
#
# poradi udaju (oddluji se mezerami nebo tabulatory):
# svazek(zarizeni) pripojny_bod typ_soub_systemu volby,oddelene,carkama priznak_zalohovani kontorla_fsck
#
# Podrobnosti viz:
# $ man fstab
# $ man mount
# pripojeni root oddilu
LABEL=/ / ext2 defaults 1 1
# (pred)pripojeni CD-ROM - druhy radek jen cteni bez prava spoustet programy
# treti radek pripojuje vypalovacku (propojuje se jako SCSI CD)
/dev/cdrom /mnt/cdrom iso9660 noauto,owner,ro 0 0
/dev/cdrom /cd iso9660 noauto,owner,ro,user,mode=0444 0 0
/dev/scd0 /mnt/scsi_cd auto noauto,iocharset=8859-2,umask=0,codepage=852,ro,exec 0 0
# (pred0pripojovani disketove jednotky
/dev/fd0 /mnt/floppy auto noauto,owner 0 0
/dev/fd0 /a auto noauto,owner,noexec 0 0
# pripojeni oddilu /usr
LABEL=/usr /usr ext2 defaults 1 2
# pripojeni virtualniho filesystemu /proc a /dev/pts
none /proc proc defaults 0 0
none /dev/pts devpts gid=5,mode=620 0 0
# tomuhle nejak nerozumim :o) - ze by pripojeni ftp oddilu z ip 192.168.10.2 ?
none /mnt/fm ftpfs noauto,owner,user,ip=192.168.10.2,user=cf,pass=cf-pwd,ro 0 0
# pripojeni swap oddilu (je na dvou ruznych discich)
/dev/hda3 swap swap defaults 0 0
/dev/hdb3 swap swap defaults 0 0
# pripojovani ruznych linuxovych oddilu
/dev/hdb2 /mnt/oldlin ext2 defaults 0 0
/dev/hdb7 /mnt/data ext2 defaults 0 0
/dev/hdb8 /mnt/oldlin/home ext2 defaults 0 0
# pripojovani ruznych FAT32 oddilu (MS Windows)
/dev/hda1 /mnt/windows vfat iocharset=8859-2,umask=0,codepage=852 0 0
/dev/hda5 /mnt/a5 vfat user 0 0
# pripojeni adresare z jineho pocitace pres nfs
/pocitac:/usr/share/soubory /mnt/poc_soub nfs hard,intr
# pripojeni iso obrazu instalacnich cd RedHatu - tohle se mi genialne libi! :o)
/mnt/data2/enigma-i386-disc2.iso /mnt/rh2 iso9660 loop,rw 0 0
/mnt/data/all/enigma-i386-disc1.iso /mnt/rh1 iso9660 loop,rw 0 0