1. 1 Какво означава Linux ?


Файлова система, права за достъп



страница2/3
Дата08.05.2017
Размер380.93 Kb.
#20830
1   2   3

Файлова система, права за достъп

  • Що е файлова система?

  • Файлова система на Linux

  • Монтиране на файлова система

  • Права за достъп до файловете

  • Промяна на правата за достъп

  • Промяна на собственика

  • Виртуална файлова система

Най-простичката дефиниция за файлова система е набор от файлове, структурирани по някакъв начин и съхранени върху запомнящо устройство.
Едно от основните предимства на Linux е, че поддържа множество файлови системи. Това го прави особено гъвкав при съвместно съжителство с други операционни системи. Без да се замислям мога да ви изброя поне 15 файлови системи, които Linux без проблем поддържа - например ext и ext2, майкрософтските msdos, ntfs и vfat, xia, minix, umsdos, iso9660, ufs, proc, sysv, ncp, smb, affs, hpfs, ntfs, а и непрекъснато се добавят нови.
Linux, както и UNIXTM не използват идентификатори на устройствата за различните файлови системи, а организират всичко в една единствена йерархична дървовидна структура. Всяка нова файлова система, която трябва да бъде достъпна за Linux се добавя към тази дървовидна структура като неино под-дърво. Мястото където присъединяваме (монтираме) добавяната файлова система се нарича точка на монтиране и задължително трябва да съществува във файловата система на Linux.
Вашият твърд диск трябва да бъде разделен на логически дялове преди да можете да го използвате. Всеки дял може да съдържа една файлова система. Устройства, които съдържат файлова система се наричат блокови.
Да предположим, че имаме IDE твърд диск, който е свързан като master към първия IDE канал на дънната ви платка, който е разделен на два (първични) дяла. Тогава първото блоково устройство (първия дял на диска) се нарича /dev/hda1, а втория /dev/hda2. Ако нашия диск беше свързан към втория IDE канал на компютъра тогава двете блокови устройства щяха да бъдат съответно /dev/hdc1 и /dev/hdc2.
Това се определя по следната простичка схема:




IDE0

IDE1

master

hda

hdc

slave

hdb

hdd

Всъщност файловата система дори не е необходимо да бъде локална за машината. Може да се намира някъде другаде из мрежата на друг компютър.
Файловата система на Linux се нарича ext2 (пълното и наименование е The Second Extended File System), която е наследник на ext, която от своя страна е наследила minix (първата файлова система, която е ползвала Linux). Създадена е от Remy Card през 1993. При тази файлова система данните се пазят в блокове от данни с еднаква дължина. Тя обаче може да се променя при отделните ext2 файлови системи. Този размер на блоковете се определя при създаването на файловата система. Но не пречи да имаме две ext2 файлови системи с различни дължини на тези блокове.
Файловата система може да бъде разгледана в два аспекта. На високо ниво под файлова система се разбира разположението на директориите и файловата йерархия в един дял, а на ниско ниво представлява начина на форматиране на блоковото устройство. Тук ще разгледаме файловата система само от високо ниво, тъй като ниското ниво обикновено е в интереса на тесен кръг от специалисти. Ако все пак някой се интересува от по-подробна информация за суперблоковете, полетата в тях и описанията им може да потърси из Интернет или да ми пише на адрес yovko@sdf.lonestar.org да му изпратя такава.
Една типична организация на директориите в една Linux система е следната:

/
|-- bin


|-- boot
|-- dev
|-- etc
|-- homе
| '-- yovko
|-- lib
|-- lost+found
|-- mnt
| |-- cdrom
| |-- fat
| '-- floppy
|-- proc
|-- root
|-- sbin
|-- tmp
|-- usr
| |-- X11R6
| |-- bin
| |-- doc
| |-- etc
| |-- games
| |-- include
| |-- lib
| |-- local
| | |-- bin
| | |-- doc
| | |-- etc
| | |-- games
| | |-- lib
| | |-- man
| | |-- sbin
| | '-- src
| |-- man
| |-- sbin
| |-- src
| | |-- linux -> linux-2.2.15-5
| | |-- linux-2.2.15-5
| '-- tmp
'-- var

В завимост от вашата конкретна Linux дистрибуция горната структура може повече или по-малко да се отличава. А и горният пример е измислен и има за цел да демонстрира принципна дървовидна структура, а не конкретна система.


Как можем да монтираме файлова система? Това ни се налага непрекъснато, защото всяка дискета или компакт-диск е различна файлова система и не бихте могли да прочетете съдържанието на една дискета без преди това да я монтирате. Командата за монтиране на файлова система е mount. Необходимо е да се посочи типът на файловата система, къде се намира тя (кое е блоковото устройство) и къде (в коя директория) да се монтира. Ето как можем да монтираме CD-то си (предполагаме, че то е свързано като master-устройство към втория IDE канал (често CD-то се свързва като slave на същия IDE канал с твърдия диск, най-често първия тогава вместо hdc трябва да напишете hdb):

mount -t iso9660 ro /dev/hdc /mnt/cdrom

Тази команда монтира файловата система на компакт-диска в CD-ROM устройството в директорията /mnt/cdrom като read-only (само за четене). Сега в директорията /mnt/cdrom имате съдържанието на CD-то си. То разбира се не е там - само така изглежда. Когато решите да го смените трябва го демонтирате иначе няма как да го извадите от устройството. Командата е umount:

umount /dev/hdc

Аналогично можете да монтирате и дискети - флопито ви е блоково устройство /dev/fd0, ако имате второ флопи то ще е /dev/fd1. Файловата му система може да е различна - съобразете се с това - msdos, vfat, ext2 ? Препоръчвам ви много внимателно да прочетете помощните страници на mount. Командата за получаване на помощ е man:

man mount

Съществува един конфигурационен файл за автоматично монтиране на файловите ви системи - той е /etc/fstab. Разгледайте го - ако решите, че си струва да прочетете малко за него - поздравявам ви - имате нюх. Можете много да си облекчите живота.

След логическо включване към системата вие попадате във вашата home директория. Нека предположим, че сме потребителя yovko и нашата home-директория е /home/yovko. Значи след включването ни към системата това е нашата текуща директория.


Командата за промяна на текущата директория е cd.
Тук е мястото да кажем, че описанието на пътищата до файловете в Linux става по два начина: с абсолютен (наричан още и глобален) и относителен път като разделителя е /
Абсолютен се нарича този път, който започва от коренната директория, която се обозначава също с /
Когато използваме относителен път Linux счита, че тръгваме от текущата директория (тази в която се намираме в момента). Например ако сме в директорията /home/yovko и искаме да попаднем в директорията /mnt използвайки относителен път трябва да напишем следната команда:

cd ../../mnt

Тук както и в DOS с . се означава текущата директория, а с .. предишната - родителската директория (едно ниво по-назад) само, че ако в DOS сте свикнали да пишете слято командата и двете точки ще трябва да отвикнете - интервалът между тях е задължителен. Ако използвахме абсолютен път командата щеше да бъде:

cd /mnt


Командата, с която можем да проверим коя е текущата ни директория е pwd.
Нека създам един файл в своята директория /home/yovko например така:

date > sample.txt

Тази команда ще разпечата текущата дата и час в текстов файл sample.txt. Можете да видите съдържанието му с командата cat ./sample.txt, но сега не ни интересува съдържанието, а просто съществуването на файла. Иначе трябва да получите нещо такова като резултат:

Wed Sep 8 18:17:50 EEST 1999

Командата, с която можем да проверим какви файлове съдържа текущата директория (ако имаме права за това разбира се) е ls.
Нека подадем командата в този и вид:

ls -l


Ще получим следното:

drwx------ 40 yovko users 1024 Sep 8 14:51 .
drwxr-xr-x 7 root root 1024 Aug 18 19:23 ..
-rw-r--r-- 1 yovko users 30 Sep 8 18:17 sample.txt

Нека разгледаме подробно полученото. Когато се създаде един файл той е собственост на автора си. Така е и с нашият файл sample.txt, който аз създадох като потребител yovko. Този потребител е от група users. Следователно нашият файл е собственост на потребителя yovko. Така би било ако създадем и директория. Нека го направим. Командата е mkdir:

mkdir sample

И пак да разгледаме съдържанието на директориите:



drwx------ 40 yovko users 1024 Sep 8 14:51 .
drwxr-xr-x 7 root root 1024 Aug 18 19:23 ..
-rw-r--r-- 1 yovko users 30 Sep 8 18:17 sample.txt
drwxr-xr-x 2 yovko users 1024 Sep 8 18:19 sample

Как да различаваме обикновените файлове от директориите? Директориите се обозначават с d в началото на описанието им. Какво означават останалите девет символа? Това са правата за достъп до съответния файл или директория от различните потребители. Трябва да разглеждате тези знаци (наричат се флагове за достъп) в групи по три като наличието на знак е дадено право, а наличието на тире е липса на това право. Знаците могат да бъдат r за четене (read), w за запис (write) и x за изпълнение (execute). Значението на трите групи е следното - първите три знака са правата на собственика(автора), следващите три са правата на групата, на която е член собственика, а последните три са правата на всички останали потребители.



Собственик

Група

Останалите

r

w

x

r

w

x

r

w

X

Интересено е какво означава да имаме право да изпълняваме файл, който е директория - това означава, че можем да преглеждаме съдържанието на тази директория. Ако това ви се вижда глупаво след като имате право за четене там помислете за ситуация, в която не знаете точното име на файл от директория, в която имате право само за четене. Вие можете да достигнете файла само ако знаете точното му име и го зададете с абсолютен или относителен път и докато го помните няма проблем да го четете или изпълнявате, но само него. В тази директория може да има още файлове, за които и не подозирате, защото нямате право да разлистите съдържанието и. (Заб.: Някои файлове вместо x може да имат знака s - това означава, че програмата ще се стартира не с правата на този, който я стартира, а с правата на собственика и. Има и още едно означение t - така наречения sticky-bit, но той няма отношение към разглежданата тема в момента.)

Какво направихме дотук - един файл sample.txt, който неговият собственик може да чете, както и да пише в него. Едно малко уточнение - щом имаме права за писане във файл това разбира се означава и че можем и да го изтрием. Групата на собственика може само да чете този файл. Всички останали потребители също могат да само да четат този файл. Това обикновено са правата, които са зададени по подразбиране на всеки нов файл.


Нека да разгледаме и директорията, която създадохме - тя се казва sample. (В нашия случай файлът и директорията имат различни имена - sample.txt и sample - това обаче не е задължително. В Linux може да имате съвпадение на имената на файл и директория - т.е. можеше и файлът да наречем sample без това да доведе до проблем, както би било с други операционни системи.) Собственик на тази директория е отново потребителят yovko, принадлежащ на групата users - т.е. аз и аз имам право да чета, пиша, както и да преглеждам съдържанието на тази директория. Потребителите от групата users, както и всички останали потребители могат само да четат файлове от тази директория, както и да я разлистват, но не могат да създават файлове там.

Как можем да променим правата за достъп до файловете? Командата за смяна на флаговете за достъп е chmod. Да предположим, че имаме файл viki във /tmp директорията, който искаме да направим изпълним за всички. Командата е:

chmod +x /tmp/viki

След тази команда операционната система ще включи флага за изпълнение на този файл.


Нека да направим същото с нашия файл sample.txt и да видим как ще се променят флаговете. (С уточнението, че това действие няма никакъв смисъл, защото нашия файл нищо не прави и не е логично да го правим изпълним. Целта е само образователна.). Командата разбира се е:

chmod +x ./sample.txt

И да видим какво се промени след тази наша намеса с командата ls -l

drwx------ 40 yovko users 1024 Sep 8 14:51 .
drwxr-xr-x 7 root root 1024 Aug 18 19:23 ..
-rwxr-xr-x 1 yovko users 30 Sep 8 18:17 sample.txt
drwxr-xr-x 2 yovko users 1024 Sep 8 18:19 sample

Появиха се три флага x за изпълнение, съответно за собственика, групата и всички останали потребители.


Сещате ли се вече какво ще направи командата

chmod -w ./sample.txt

Ами разбира се, че ще изключи на всички правата за писане в този файл. Синтаксисът е много прост + включва, а - изключва даден флаг, а с r, w или x уточняваме кой флаг да се промени. Естествено можем да променяме няколко флага или дори всички. Например така:

chmod -rwx ./sample.txt

Сега нашият файл стана много симпатичен ;-)
Резонен е въпроса как да променим правата само на собственика или само на групата, а не толкова глобално за всички. Ами преди знака + или - поставяме опция чии права искаме да променим като опциите са следните:


  • u - собственика (user)

  • g - групата (group)

  • o - останалите (others)

  • a - всички (all) - това е по подразбиране

Ако искаме да дадем права за писане в нашия файл на всички потребители от нашата група тогава командата е следната:

chmod g+w ./sample.txt

А за да дадем всички права на собственика трябва да напишем следното:

chmod u+rwx ./sample.txt

По същия начин се процедира и със s флага, когато е необходимо.
Има още един начин за управление на правата върху файловете и директориите и той е посредством осмична бройна система. Нека предположим, че имаме следното състояние:

drwx------ 40 yovko users 1024 Sep 8 14:51 .
drwxr-xr-x 7 root root 1024 Aug 18 19:23 ..
-rw-r----- 1 yovko users 30 Sep 8 18:17 sample.txt
drwxr-xr-x 2 yovko users 1024 Sep 8 18:19 sample

И отново да разгледаме флаговете за достъп на файла sample.txt. Нека се уговорим да отбелязваме с единица състоянието на включен флаг и с нула липсата на право - ще се получи това:



Собственик

Група

Останалите

r

w

x

r

w

x

r

w

x

1

1

0

1

0

0

0

0

0

Сега нека разгледаме тази последователност от нули и единици като три двоични числа - 110, 100 и 000.

Собственик

Група

Останалите

r

w

x

r

w

x

r

w

x

1

1

0

1

0

0

0

0

0

110

100

000

Двоичната аритметика казва, че това са числата съответно 6, 4 и 0.


Малко математика

Преобразуването от двоична в десетична система става по следния простичък алгоритъм:


  • Най-младшия разряд има тежест 20=1

  • Следващият 21=2, а третият 22=4

Следователно всички възможни комбинации са:

000 0
001 1


010 2
011 3
100 4
101 5
110 6
111 7


Което означава, че до това състояние можем да достигнем чрез командата:

chmod 640 ./sample.txt

Какво трябва да направим за да дадем на собственика всички права, на групата само за четене и писане, а на всички останали само за четене - т.е. тази конфигурация:



Собственик

Група

Останалите

r

w

x

r

w

x

r

w

x

1

1

1

1

1

0

1

0

0

111

110

100

7

6

4

Разбира се, че

chmod 764 ./sample.txt

Ако ви се вижда сложно запомнете само, че изпълнението на файл е единица, писането - двойка, а четенето - четворка. И събирайте четене и писане е 4+2 значи 6 - просто е, нали? Опитайте и ще свикнете след 5 минути.

Как да сменим собственика на един файл? Командата за това е chown. Ако предположим, че ние сме потребителя yovko и притежаваме файла viki.gif в нашата home директория /home/yovko, но искаме да го "подарим" на потребителя nataly достатъчно е да напишем:

chown nataly /home/yovko/viki.gif

Трябва да отбележим, че въпреки, че този файл е в нашата home директория, собственик на този файл вече е nataly и повече не сме в състояние да променяме правата или собственика му. Въпрос на добра воля е nataly да ни върне собствеността върху този файл. Друг, който може да го направи разбира се е root.




Можете да сменяте правата и собствеността само на вашите собствени файлове.




Можем да сменим и групата с командата chgrp, но това ви оставям като домашно задание да прочетете в man-страниците на вашия Linux. Командата естествено е:

man chgrp

Виртуална файлова система (VFS)

Това е едно невероятно свойство на Linux, което не може да ви предложи никоя друга операционна система.
В Linux реалните файлове са отделени от операционната система и нейните средства чрез интерфейсен слой, наречен виртуална файлова система - Virtual File System (VFS). Именно този интерфейс спомага Linux да поддържа толкова много и различни файлови системи. Достатъчно е просто да се създаде един софтуерен интерфейс към VFS. Така всички особености на която и да е файлова система се представят така, че изглеждат идентични за останалата част на ядрото на операционната система и програмите изпълнявани върху нея. На всичко отгоре това става съвсем прозрачно.
VFS на Linux е оптимизирана така, че скоростта на достъпа до файловете да е възможно най-бърза като при това можете да сте съвсем сигурни, че файловете и данните в тях са съхранени коректно. VFS на Linux кешира в паметта информацията за всяка монтирана файлова система като при това се грижи да обновявя тази кеширана информация при всяко създаване, запис или изтриване на файл или директория.

Конзола, терминал, telnet и шел


  • Конзола

  • Терминал

  • telnet

  • Шел

  • BASH шел

Тази част разглежда няколко основни терминологични понятия, които се в същината на всяка UNIXTM и Linux система. За някои от тях има теоретични спорове, за други няма общоприети дефиниции и те често се използват интуитивно. Не искам текста по-долу да се приема като дефиниционен - това е моето тълкувание на тези понятия.

Конзола

Терминът е исторически. Идва от времето, когато компютрите са заемали огромни помещения и в средата на залата е имало един терминал, на който са излизали системните съобщения и на който можел да седне администратора или да се намеси при определена ситуация. Сега може би най-точната дефиниция е, че на конзолата излизат системните съобщения. Често се казва, че root-а или системния администратор работят на конзолата, обикновено се визира работното място. Това строго погледнато не е много точно, но не може и да се твърди, че е погрешно. Друга съвсем некоректна употреба на понятието е, че когато не използваме графична среда работим на конзола. Съществува и приложение X конзола, която може да прихване конзолата - т.е. системните съобщения.


Съществува още едно понятие т. нар. виртуална конзола - това са (обикновено) шестте терминални прозореца, които превключвате с клавишните комбинации Alt+F1 до F6. Струва ми се, че по-доброто название е виртуални терминали. Обърнете внимание, че системните съобщения излизат на първа "виртуална конзола" дори и никой да не е log-нат в системата.

Каталог: wp-content -> uploads -> 2014
2014 -> Роля на клъстерите за подобряване използването на човешките ресурси в малките и средни предприятия от сектора на информационните технологии
2014 -> Докладна записка от Петър Андреев Киров Кмет на община Елхово
2014 -> Биография: Цироза е траш група от град Монтана. Началото й дават Валери Геров (вокал/китара), Бойко Йорданов и Петър Светлинов (барабани) през 2002година
2014 -> Албум на Първични Счетоводни Документи 01. Фактура
2014 -> Гр. Казанлък Утвърдил
2014 -> 1. Do you live in Madrid? A
2014 -> Брашно – тип „500” седмична справка: средни цени за периода 3 10 септември 2014 Г
2014 -> Права на родителите: Да изискват и получават информация за развитието, възпитанието и здравословното състояние на детето, както и информация за програмите, по които се извършва възпитателно-образователната работа в одз№116


Сподели с приятели:
1   2   3




©obuch.info 2024
отнасят до администрацията

    Начална страница