Linux за начинаещи

0
554

Въведение в Линукс. Възникване на Линукс. История на Линукс. Основни дистрибуции. Основни концепции в Линукс- ядро, потребители, root. Принципи на свободния софтуер. Лицензионни правила GPL

Линукс, каквато се разбира в повечето случаи когато се говори за нея, е операционна система. Операционната система на кратко е програма, която управлява вашия компютър и неговите устройства. Освен това тя помага да общувате с него – да му задавате команди и да получавате резултатите на монитора или друго външно устройство. Линукс е създаден на базата на друга много популярна в миналото операционна система – UNIX. UNIX е създаден през далечната 1969 година в Bell Laboratories като наследник на друга многопотребителска операционна система – Multics. По това време UNIX е бил уникална операционна система. Написан на изцяло на С, UNIX е бил лесно преносим между различните платформи за разлика от другите операционни системи по онова време, които били писани на асемблер. Точно тази преносимост е била и основния двигател на UNIX и появилите се след него клонинги. Освен това UNIX е бил различен и в друго отношение – той е изграден от множество малки и бързи програми, които взаимодействали помежду си чрез скриптове. Този подход се пази и досега и е различен от подхода предприет от Windows – многофункционални, големи и тежки програми.
Линикс води началото си от MINIX – един от многобройните клонинги на UNIX. MINIX е била също безплатна операционна система и нейният създател Андрю Таненбаум също предоставил нейния кода. Точно на базата на този код е през 1991 е бил създадено и първото ядро на Линукс от студента Линус Торвалдс. Версии на това ядро още може да се намерят за свободно сваляне на адрес http://www.kernel.org/pub/linux/kernel/Historic .
Основната разлика между Линукс и Windows е принципа на отворения код, на базата на който се разработва Линукс ядрото. Софтуер, който се разпространява с отворен код спазва правилата дефинирани в Open Source лиценза.
Първото изискване на OSD (Open Source Definition – Дефиниция на отворения код) е, че всеки пакет с отворен код трябва да се разпространява напълно свободно, като това не изключва негова продажба.
Второто изискване е, че освен програмата, вие трябва да предоставите и изходния код на тази програма. На това се базира и модела на отворения код за подобрение и развитие на софтуера. Получавайки изходения код хиляди програмисти могат да работят над тази програма, да оправят грешки и да добавят нова функционалност.
Третото изискване е променения изходен код да се разпространява по същия начин както и оригиналния.
Четвъртото изискване е, че не може една програма компилирана от променен изходен код да се разпространява под същото име и номер на версията както и оригиналната.
Това основните изисквания на отворения код. Пълния текст може да се намери на адрес http://opensource.org/docs/definition.php . Като цяло основната идея е свободното разпространение и развитие на софтуера.
Последното което ще разкажа от историята на Линукс и отворения код е историята на GNU обществото. Самото означение GNU означава „GNU’s Not UNIX“ или преведено „ГНУ не е UNIX“.
GNU e анонсирана от Ричард Сталман към края на Септември, 1983 година, с идеята да се създаде UNIX – подобна операционна система, която може да се разпространява свободно. Фактически GNU проекта официално стартира през Януари 1984г.
До тогава разпространението на свободен софтуер е ставало без никакви лицензи, което позволило на много компании да използват свободен софтуер за направата на комерсиални продукти. Именно това била причината да се замисли нов лиценз, който би могъл да предотврати комерсиализация и затваряне на продуктите.
Това е така наречения GNU General Public License (GPL) лиценз, който изисква всяка модификация на GPL софтуер също да бъде разпространявана под този лиценз. Това гарантирало, че свободния софтуер, каквото и развитие да търпи, ще си остане свободен.
GPL лиценза е един от няколкото лиценза прилагани при разпространението на свободен софтуер. Другите по често използвани са Artistic License и BSD лиценз. Общото между тях е следното:
Софтуера може да се инсталира на неограничен брой компютри.
Броят на хората използващи софтуера също е неограничен.
Софтуера може да се копира неограничено (свободно или отворено редистрибутиране).
Няма ограничения по модифицирането на софтуера с изключение на запазването на базовата функционалност, за който е бил създаден.
Няма ограничение по разпространението, дори продажбата на софтуера.

След историята на Линукс и отворения код, нека да изясним какво се разбира под операционна система. Операционна система са нарича програма, който управлява компютъра и неговите периферни устройства, като мишка, клавиатура, принтер и др. Операционната система освен това се грижи и за разпределение на ресурсите между отделните програми и потребители.
В повечето случаи обаче обикновения потребител не може да прави нищо само с операционна система. За да може той да работи с нея са необходими допълнителни програми, наречени приложен софтуер или просто приложения.
При Windows и DOS част от тези приложения идват с операционната система, но при Линукс не е така. Това е така, защото Ликукс е само ядрото на операционната система. Той може да управлява устройства и задачи, но сам по себе си е абсолютно неизползваем.
Именно за това съществуват Линукс дистрибуции, които съдържат в себе си както ядрото на операционната система, така и приложен софтуер. Всяка една дистрибуция идва с базов набор от най-необходимите програми, като те са еднакви в повечето Линукс дистрибуции. Освен това много Линукс дистрибуции идват и с огромен набор от приложения, които включват браузъри, текстообработващи програми, офис пакети, среди за разработка на приложения, набор от графични среди и т.н. Сега ще се запознаем с някои от по-известните Линукс дистрибуции:

Debian:
Debian е една уникална дистрибуция различаваща се от другите по това, че се издържа от дарения. Той е подходящ за опитни потребители и е една от най-големите (цели 7 диска). Друго характерно при Дебиан е начина на управление на пакетите (това с програмите преди да се инсталират). Пакетната система на Дебиан е толкова развита, че той може да се инсталира от две дискети и стабилна Интернет връзка.

Red Hat:
Red Hat е една от най-разпространените дистрибуции. Нейната инсталация е особенно лесна и е подходяща за начинаещи потребители. Red Hat е първата комерсиална дистрибуция. Едновременно с покупката на Red Hat потребителя получава и часове за поддръжка. Предимство на Red Hat е и това, че се поддържа от повечето производители на софтуер за Линукс. Наскоро обаче Red Hat преустанови свободното изтегляне и поддръжката на не сървърните си версии. За домашни потребители компанията пусна друга дистрибуция наречена Fedora.

SUSE:
Това е немска дистрибуция, която е изцяло локализирана на немски (това не означава, че не може да се използва и на други езици, вкл. и български). Инсталацията е елементарна и подходяща за начинаещи. Като цяло SUSE e една много добра дистрибуция. Тази година SUSE бе закупена от Novel и засега бъдещето на тази дистрибуция не е много ясно.
Slackware:
Slackware е предпочитан предимно от по-напредналите Линукс потребители, които искат да имат максимален контрол над всичко и това да става лесно и бързо. Под „лесно“ и „бързо“ обаче в Slackware се разбира ръчна промяна на множество конфигурационни файлове. Това прави дистрибуцията не особенно подходяща за начинаещи, въпреки нейната стабилност и сигурност. Освен това Slackware е идениствената дистрибуция от изброените, която не притежава вградено средство за ъпгрейд.

Mandrake:
Mandrake e френска дистрибуция базирана на Red Hat. Тя притежава елементарно средство за инсталация, която освен всичко друго може да работи на български. Като цяло Mandrake се характеризира с лесна администрация и удобен потребителски интерфейс. От изброените тя е най-подходяща за начинаещи.

Въпреки, че всяка една от дистрибуциите има различна целева група, всяка от тях е базирана на Линукс ядрото. Както и всяка програма разработчиците на ядрото непрекъснато добавят нещо ново или усъвършенстват съществуващи функции. Това налага строга и добре дефинирана номерация на версиите на ядрата. Принципа на номерация е следния: всеки номер се състои от три цифри. Първата от тях се променя много рядко, само при принципно различни ядра. Това засега е станало само веднъж – при преминаването от версия 1 към версия 2. Скоро не се очаква преминаване към версия 3. Второ число се променя при съществени промени в текущото ядро. За стабилните версии на ядрата, то винаги е четно, а за нестабилните (testing kernels) – нечетно. Последното число обозначава малко промени в ядрото. В момента се разработват две стабилни версии на ядрата – по-старата 2.4.х и съвременната 2.6.х. Последните версии в момента на писане са 2.4.24 и 2.6.3.
Всяко Линукс ядро е многопотребителско и многозадачно. Това означава, че в един и същ момент на една Линукс машина може да се стартират множество процеси от множество потребители едновременно, без това да влияе по-някакъв начин на изпълнението на програмите. Тъй като Линукс ядрото е наистина многозадачно, то всяка програма се стартира в собствена област от паметта, като евентуален срив в нея не причинява срив в операционната система.Въведение в системата. Многозадачност и многопотребителност на операционната система. Структура на файловата система и представяне на физическите и логически устройства – директория /dev. Зареждане на операционната система

Както бе отбелязано в предишната лекция, Линукс е многопотребителска и многозадачна операционна система. Като многозадачна операционна система Linux във всеки един момент от работата си поддържа няколко активни програми в паметта.
Най-важната и същевременно задължителна програма е ядрото (kernel).То се занимава с управлението на хардуера, паметта, разпределя ресурсите на компютъра между обикновените програми, управлява мрежовия трафик, файловата система и прави още куп важни неща.Останалите активно работещи програми се наричат процеси (process).
Процесите могат да си предават един на друг информация по няколко начина, най-важният от които е мрежовата комуникация (networking). Подобно на телефонните разговори между хора, всеки процес може да се опита да се свърже с друг процес, работещ на сьщия или на отдалечен компютър. Ако другият процес ‘вдигне телефона’ (приеме TCP връзка), започва обмен на информация.
Ако компютърът има един процесор, във всеки един момент може да работи най-много един процес (или ядрото). Но ядрото, използвайки особеностите на хардуера така превключва активните процеси, че създава илюзията за едновременна работа на всички стартирани процеси. Тук новото ядро 2.6 въведе понятието приоритетна многозадачност (preemptible). В предишните версии, ядрото не можеше да бъде прекъсвано по време на работа. При Линукс 2.6 ядрото в повечето случаи може да бъде прекъснато по време на задача, така че другите приложения могат да продължат работата си дори когато нещо работи на много ниско ниво.
Освен многозадачна Линукс е и многопотребителска операционна система. Тя може да съдържа набор от потребители, които се идентифицират пред нея чрез потребителско име и парола. Всеки един потребител има собствена директория, в която може да пази своите файлове (включително и конфигурационните файлове на различните програми), като тази директория е недостъпна за другите потребители. Всяка една Линукс система има един свръхпотребител наречен root. Той администрира система и има пълните права върху нея. Този свръхпотребител се създава при инсталирането на дистрибуцията, като след това той създава другите потребители.
Цялата тази информация(а и още много друга) се пази на твърдият диск на компютъра. Файлова система, най-общо казано се нарича набор от файлове, структурирани по някакъв начин и съхранени върху запомнящо устройство.
Едно от основните предимства на Linux е, че поддържа множество файлови системи. Това го прави особено гъвкав при съвместно съжителство с други операционни системи. Linux без проблем поддържа ext и ext2, msdos, ntfs и vfat, xia, minix, umsdos, iso9660, ufs, proc, sysv, ncp, smb, affs, hpfs, raiserfs и др.
Linux, както и UNIXTM не използват идентификатори (например C: или D:) на устройствата за различните файлови системи, а организират всичко в една единствена йерархична дървовидна структура. Всяка нова файлова система, която трябва да бъде достъпна за Linux се добавя към тази дървовидна структура като нейно под-дърво. Мястото където присъединяваме (монтираме) добавяната файлова система се нарича точка на монтиране и задължително трябва да съществува във файловата система на Linux.
Всеки хард диск трябва да е разделен на дялове, като всеки дял е форматиран на дадена файлова система. Под Линукс тези дялове не са видими докато не се монтират. Дяловете в Линукс се именуват по различен начин спрямо дяловете във Windows. Следната таблица показва точно как се именуват различните дискове в компютъра:

IDE0
IDE1
master
hda
hdc
slave
hdb
hdd

Дяловете на съответните дискове се номерират с името на диска последвано от номера на дяла. Номерата на дяловете започва от 1 до 4 за основните дялове и от 5 за логическите. Например първия дял на master диска закачен на първия IDE канал (IDE0) е hda1.
Файловата система може да бъде разгледана в два аспекта. На високо ниво под файлова система се разбира разположението на директориите и файловата йерархия в един дял, а на ниско ниво представлява начина на форматиране на блоковото устройство. Тук ще разгледаме файловата система само от високо ниво, тъй като ниското ниво обикновено е в интереса на тесен кръг от специалисти.
Една типична организация на директориите в една Linux система е следната:
/
|– bin
|– boot
|– dev
|– etc
|– homе
| ‘– dino
|– 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

В зависимост от конкретната Линукс дистрибуция горната структура може повече или по-малко да се отличава. Монтирането на различните файлови системи може да стане както автоматично при зареждането на системата, така и ръчно с командата mount. Някои дистрибуции даже притежават програма, която следи за прикачването на нови устройства и ги монтира автоматично. Тази програма се нарича automounter и е стартирана непрекъснато. Такива програми, които са стартирани непрекъснато и следят за събития на които реагират се наричат демони.
Както може би прави впечатление, с устройствата под Линукс се работи малко по-различно отколкото под Windows. Тук всяко едно устройство представлява файл от файловата система. Споменатите hda, hdb и т.н всъщност са файлове в директорията /dev. В тази директория се намират и останалите устройства като звукови карти (/dev/dsp), мрежови карти (/dev/eth0 и т.н.), USB устройства и т.н. Тази схема е изключително гъвкава, тъй като операциите по четене и запис в устройствата се свеждат до операциите четене и запис от файлове (опростено казано). Всяко едно устройство може да е или block device или character device. Всеки един файл, който сочи устройство притежава два номера – major и minor. Например едно SCSI устройство /dev/sda2 (втория дял на първия открит SCSI диск), получава major номер 8, който е общ за всички SCSI устройства и minor номер 2, който указва втория дял на диска. Различните видове устройства си разпределят основните и второстепенните номера различно, затова не може да се определи със сигурност колко точно устройства може да има една Линукс система. В ядра до 2.4.х ограничението на основните и второстепенните номера е 255 и в съвременните системи понякога се оказват недостатъчни. Тези ограничения бяха повдигнати с новото 2.6.х ядро – 4096 major устройства и над милион minor.
Важни устройства са:
/dev/hdx(y) – устройствата закачени на IDE контролера на дънната платка. Това може да са хард дискове, CD/DVD устройства и т.н.
/dev/sdx(y) – устройства закачени на SCSI конпролер. може да са хард дискове, CD/DVD устройства и т.н. Понякога някои USB и CD/DVD устройства емулират SCSI, за да работят.
/dev/tty(x) – това са терминалите на Линукс.
/dev/ttyS(x) – серийните устройства. Например /dev/ttyS0 е COM1 под DOS/Windows.
/dev/null – специално устройство от което не може да се чете. Целта му е ненужната информация да се пренасочва към него тъй като не води никъде.
/dev/zero – устройство при четенето от което потребителя може да запълни файл с нули.

Както бе отбелязано по-горе стартирането на Линукс започва от стартирането на ядрото. Това става благодарение на малка част от него записана на специално място на дисковия носител. Тази част сама по себе си не може да управлява компютъра, но тя знае къде да погледне, за да зареди пълното ядро. След като бъде заредено, ядрото започва хардуерна проверка на различните устройства на компютъра и присвояване на определени параметри на тези устройства. Когато хардуерната проверка завърши, Линукс ядрото предава управлението на специална програма наречена init. В този момент тя започва зареждане на стартиращите скриптове, откъдето разбира в какъв режим се стартира системата (графичен, конзолен, многопотребителски или еднопотребителски) и необходимите програми за нормалната работа на операционната система. На този етап се стартират и услугите на системата, които може да са различни видове сървъри, демон за отдалечено управление и т.н. В края на зареждането init зарежда програмата login, която подканя потребителя да въведе потребителско име или парола. Ако е зададен графичен режим, то вместо login се зарежда програмата xdm (X Display Manager), която стартира графичния сървър и графичната среда.Описание на директориите и тяхната функция. Типове файлове. Битове за права на файловете, типове права. Задаване и отнемане на права.
Всяка една операционна система има определена структура на директориите и всяка
директория има определена функция. В Линукс има два типа директории:
системни и потребителски. Системни са тези директории, които се
създават при инсталирането на операционната система. Такива
например са директориите /dev, /bin, /lib и т.н. Потребителски са
директориите, които се създават от потребителите на операционната
система с цел да пазят собствена информация в тях. Такива са
директориите /home/student и всички поддиректории вътре в нея.
Основните системни директории са:


  • /bin – съдържа
    основните програми на операционната система, без които тя не би
    функционирала правилно. Повечето програми от тази директория може да
    се изпълняват от всички потребители. Тя е присъства и в пътя по
    подразбиране на всички потребители.
  • /boot –
    съдържа ядрото на операционната система, както и други файлове,
    необходими за правилното функциониране на ядрото.
  • /dev – съдържа
    файловете отговарящи за хардуерните устройства на компютъра.
    Файловете в тази директория са достъпни само за четене от
    потребителите.
  • /etc – съдържа
    глобалните конфигурационни файлове на операционната система и
    нейните програми. Някои от програмите може да пазят конфигурационни
    файлове и на други места.
  • /home –
    съдържа домашните директории на потребителите. Тук за всеки
    потребител се създава отделна директория в която може да се
    съхраняват конфигурационни файлове или документи от различен тип.
    Специфичното в тези директории е начина на разграничаването на
    конфигурационните файлове и поддиректории от обикновените, а именно
    чрез добавяне на точка в началото им. Повечето файлови мениджъри
    скриват файл или директория, който започва с точка.
  • /lib –
    директорията съдържа най-важните споделени библиотеки на
    операционната система – glibc-solibs. Тези библиотеки се
    наричат споделени (shared object), защото повечето програми ги
    използват при изпълнението си.
  • /lib/modules –
    също много важна директория. Тук се съхраняват модулите на ядрото,
    т.е. драйверите на операционната система. Туй като всяка Линукс
    система може да има повече от едно ядро, то в тази директория се
    създават поддиректории с номера на всяко едно инсталирано ядро.
  • /mnt –
    незадължителна системна директория. Тя се създава автоматично и
    нейната цел е обединяването на всички монтирани устройства на едно
    място. Линукс обаче не ви ограничава да монтирате устройства в други
    директории.
  • /opt – тук
    повечето дистрибуции инсталират графичните среди като KDE и GNOME.
  • /proc – това е
    специална директория в която няма реални файлове. Посредством тази
    директория вие имате достъп до различни параметри на ядрото, както и
    до различна информация пряко предоставяна от ядрото на операционната
    система.
  • /root –
    домашната директория на свръхпотребителя. За обикновения потребител
    тази директория е заключена и той няма никакъв достъп до файловете в
    нея.
  • /sbin – важна
    системна директория с множество програми за управление на
    операционната и файловата система. Тази директория не е включена в
    пътя по подразбиране на обикновения потребител. Всички програми в
    тази директория искат root привилегии, за да работят.
  • /tmp –
    директория в която програмите записват временните си файлове. Тя има
    неограничен достъп за всички потребители. В нея обаче може да има
    поддиректории създадени от програми, които да са недостъпни за
    обикновените потребители.
  • /usr –
    директория с множество поддиректории. Тук се пазят повечето
    инсталирани програми, помощната информация и др.
  • /usr/X11R6, /usr/X11
    – в тази директория се пазят файловете на графичния сървър,
    шрифтовете му и неговите библиотеки.
  • /usr/bin –
    съдържа бинарните файлове на инсталираните програми, които не са
    важни за нормалното функциониране на операционната система.
  • /usr/doc –
    част от документацията на програмите. Тук се съхранява Linux-HOWTO.
  • /usr/include –
    тази директория е необходима само ако ще се инсталират програми от
    изходен код. Тук се пазят заглавните C файлове на инсталираните
    библиотеки и програми, които са необходими за инсталиране на други
    програми.
  • /usr/info –
    част от документацията на Линукс. Достъпа до нея се осъществява чрез
    специална програма – info.
  • /usr/local –
    директория в която по подразбиране се инсталират програмите
    компилирани от изходен код. Тази директория копира структурата на
    /usr.
  • /usr/man –
    най-мащабната част от Линукс документацията. Тук се съхранява
    ръководство (manual page) за почти всички инсталирани програми.
    Достъпа до тази информация се осъществява с програмата man.
  • /usr/lib –
    важна директория, в която се съхраняват повечето инсталирани
    библиотеки. Тези библиотеки не са необходими за работата на
    операционната система, а за работата на допълнително инсталирания
    софтуер.
  • /usr/share –
    също важна директория. Тук програмите инсталират файловете,
    необходими за тяхната правилна работа.
  • /usr/src – в
    тази директория се пази изходният код на Линукс ядрото. Той е
    необходим само когато ядрото ще се прекомпилира. И тук подобно на
    /lib/modules може да има код на повече от едно ядро. Те се
    съхраняват в директории, различаващи се с номера на версията. В
    директорията /usr/src присъства и линк linux, който сочи към една от
    директориите съдържащи изходен код.
  • /var –
    системна директория съдържаща предимно логове на програмите и
    система, както и опашка с отложените или предстоящи задачи за
    автоматично изпълнение. Директория съдържа и друга информация, като
    пристигнали писма, файлове заключващи дадени процеси и сокети на
    работещи в момента програми.

В повечето директории обикновения потребител има права за четене, но не и за запис. Някои
директории (като директорията /root и някои от директориите с логове)
обикновения потребител няма никакви права. Обикновения потребител има
пълни права единствено над файловете в собствената му директория и
над собствените права в /tmp директорията. Тази организация
затруднява значително инсталирането на зловредни програми (например
вируси), тъй като те ще имат достъп единствено до файловете на
потребителя, който ги изпълнява.

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


  • право за четене (r)
  • право за запис (w)
  • и право за
    изпълнение (х)

Ето казаното в таблична форма:

Собственик -> rwx
Група -> rwx
Всички останали -> rwx

Правата на всеки файл може да се видят с командата ls -l.
Ето пример на нейният изход:

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

Тук файловете, които започват с d всъщност са директории, а sample.txt е единствения истински файл. В този пример файла sample.txt има
следните права:


  • собственика на файла е
    dino и той може както да чете, така и да записва в него. Тук трябва
    да се отбележи, че групата към която принадлежи един файл може да не
    съвпада с групата на собственика на файла.
  • групата на файла е
    users и всички в тази група могат да четат от файла.
  • всички останали могат
    да четат файла.

Ако разгледаме директориите, ще видим че те имат флаг за изпълнение (execution). Тук
обаче този флаг има друго значение, а именно – право за търсене
(search). Ако един потребител няма това право, то той не може да
отваря директорията, но все още има достъп до файловете в нея. За да
може да прочете един файл в този случай обаче, е необходимо
потребителя да знае името на файла и пълният път до него.
Освен тези права файла може да има още един флаг – SUID и GUID. Файл с такива флагове се
изпълнява с привилегиите на потребителя или с привилегиите на
групата, която изпълнява файла. Тези флагове се считат за много
опасни и тяхното използване трябва да се ограничава.
Командите, които променят собственика и/или групата на файла и неговите права са съответно
chown и chmod. Ако трябва да се променят правата на
sample.txt, така че да бъде изпълним от всички, то трябва да се
напише следното:
#chmod +x ./sample.txt
Синтаксиса на командата е
много прост: + включва, а – изключва даден флаг. Чрез r, w и x
се уточнява кой флаг трябва да се промени.

По този начин се променя
даденото право глобално. А ако трябва да се промени само за
собственика или групата например? В този случай пред знака + или –
се постява опция чии права трябва да се променят, като опциите са
следните:


  • u – собственика(user)
  • g – групата(group)
  • о – всички останали (others)
  • а – всички (all), като това е опцията по подразбиране.

Ето и пример за премахване на правото за изпълнение от файла за всички останали потребители.
#chmod o-x ./sample.txt
Командата позволява свободно комбиниране на опциите, например:
#chmod u+rwx ./sample.txt
Нека отново разгледаме правата на един файл, като където флага е включен ще поставим еденица, а там където е изключен – 0.
#ls
-l ./sample.txt

-rwxr-xr–
1 dino users 30 Sep 8 18:45 sample.txt

Собственик -> r w x -> 1 1 1
Група -> r w x -> 1 0 1
Всички останали -> r w x -> 1 0 0

Сега нека разгледаме тази последователност от нули и еденици като три двоични числа –
111, 101 и 100:

Собственик -> r w x -> 1 1 1 -> 7
Група -> r w x -> 1 0 1 -> 5
Всички останали -> r w x -> 1 0 0 -> 1

Двоичната аритметика показва, че това са числата 7, 5 и 4. Причината за всичко това е, че оригиналния
синтаксис на командата chmod e (от UNIX):
#chmod 744 ./sample.txt
Това ще установи на файла правата в таблицата в долната таблица:
Собственик Група Всички останали
r w x r w x r w x
1 1 1 1 0 1 1 0 0
111 101 100
7 4 1
Този синтаксис е по-сложен, но и много
по-гъвкъв от типичния Линукс стил. Чрез този метод е възможна
промяната на всички права едновременно, нещо което не може да се
постигне по първият начин. Начина на образуване на правата е следния:


  • 4 – четене
  • 2 – запис
  • 1 – изпълнение/търсене

След това е достатъчно да се съберат
числата отговарящи за съответните права. Например право за четене и
запис се дава като се съберат 4+2 =6.
Освен промяна на правата, понякога се
налага да се променят и собственика или групата на файла. Това става
с командата chown.

#chown gosho ./sample.txt
#ls -l ./sample.txt
-rwxr-xr– 1 gosho users 30 Sep 8 18:55 sample.txt
След тази промяна потребителя dino
вече не притежава файла и съответно не може да си върне неговата
собственост. Това може да направи или gosho или root.

Промяната на групата става чрез
командата chgrp:

#chgrp root ./sample.txt
#ls -l ./sample.txt
-rwxr-xr– 1 gosho root 30 Sep 8 19:02 sample.txt

Освен с chgrp и промяната
на групата може да стане и чрез chown. В този случай собственика и
групата се променят едновременно:

#chown dino:users ./sample.txt
#ls -l ./sample.txt
-rwxr-xr– 1 dino users 30 Sep 8 19:02 sample.txtТипове потребители. Администратор(root) и нормален потребител. Файлове с пароли. Скриване на паролите. Команди за създаване и изтриване на групи и потребители

Достъпът до всяка Линукс система става чрез потребителски акаунт, установен от системния администратор. Това означава, че на всеки потребител се задава потребителско име за идентификация, парола, собствена директория и му се задават права за достъп до системата. Всичко това се прави чрез администраторския акаунт, наречен root.
Потребителя root се създава автоматично при инсталацията на дистрибуцията. Този потребител се нарича още свръхпотребител (суперпотребител), защото няма нещо, което този потребител да не може да направи. Пред този потребител няма никакви забрани или ограничения и затова работата с него е много удобна, но също толкова опасна. Поради значимостта на този потребител, командния интерпретатор променя обичайния prompt на командния ред.
Важно е да се отбележи, че името на този потребител не е задължително да бъде root, но това е името по подразбиране.
Освен суперпотребителя всяка Линукс система може да има и потребителски акаунти. Всеки акаунт има собствена директория в дървото на операционната система (изключение правят някои системни акаунти). Тя се нарича home (домашна) директория и потребителя попада винаги в нея след своя вход. Директорията се задава при създаването на потребителя и по подразбиране е : /home/ime_na_potrebitelia .
Обикновено потребителя има пълни права в тази директория, но това не е задължително. Например може да се ограничат правата на потребителя върху определени файлове в тази директория. Класически пример за това е ограничаването на правата върху файла profile, който се изпълнява след включване на потребителя в системата.
Цялата информация за потребителите се съхранява във файла /etc/passwd. Това е най-обикновен текстов файл, чийто собственик е суперпотребителя. Само той може да редактира съдържанието му, а останалите потребители имат права само за четене. Редовете в този файл имат строго определен формат:
username:password:userID:groupID:comment:home_directory:login_comm

Нека разгледаме един примерен файл:

root:x:0:0::/root:/bin/bash
bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/log:
lp:x:4:7:lp:/var/spool/lpd:
sync:x:5:0:sync:/sbin:/bin/sync
shutdown:x:6:0:shutdown:/sbin:/sbin/shutdown
halt:x:7:0:halt:/sbin:/sbin/halt
mail:x:8:12:mail:/:
news:x:9:13:news:/usr/lib/news:
uucp:x:10:14:uucp:/var/spool/uucppublic:
operator:x:11:0:operator:/root:/bin/bash
games:x:12:100:games:/usr/games:
ftp:x:14:50::/home/ftp:
smmsp:x:25:25:smmsp:/var/spool/clientmqueue:
mysql:x:27:27:MySQL:/var/lib/mysql:/bin/bash
rpc:x:32:32:RPC portmap user:/:/bin/false
gdm:x:42:42:GDM:/var/state/gdm:/bin/bash
pop:x:90:90:POP:/:
nobody:x:99:99:nobody:/:
sshd:x:33:33:sshd:/:
dino:x:1000:100:Dinko,,,:/home/dino:/bin/bash
www:x:1001:102:,,,:/home/www:/bin/bash
ffsearch:x:1002:103::/home/ffsearch:
stinger:x:1003:100:,,,:/home/stinger:/bin/rzsh
postfix:x:1004:100::/home/postfix:

Всеки ред от този файл е съставен от седем полета, разделени с двоеточия. Ако нищо не се въведе между две двоеточия полето остава празно, но двоеточията задължително трябва да съществуват. Ето и обяснение на седемте полета:
username – уникалното потребителско име
password – паролата на потребителя в кодиран вариант
userID(UID) – уникалното число, което идентифицира потребителя пред системата
groupID(GID) – уникално число, което определя групата на потребителя
comment – коментар (може да истинското име на потребителя и т.н.)
home_directory – това е директорията в която попада потребителя след своето включване
login_comm – това е команда, която се изпълнява след вход на потребителя. Най-често това е някаква шел команда.

Трябва да се отбележи, че тази структура на файла е еднаква не само за Линукс, но и UNIX базираните операционни системи.
Както бе казано по-горе, операционната система записва паролата във второто поле. Повечето съвременни версии, не използват този подход поради проблеми със сигурността. Те пазят паролите в друг файла, наричан shadow password fail, който се намира в /etc/shadow. Когато паролите са записани в този файл, полето за парола съдържа x. Ето как изглежда един shadow файл:
root:$1$EnI1gPEs$LwH91OIgMRGwPcdqlleU21:12209:0:::::
bin:*:9797:0:::::
daemon:*:9797:0:::::
adm:*:9797:0:::::
lp:*:9797:0:::::
sync:*:9797:0:::::
shutdown:*:9797:0:::::
halt:*:9797:0:::::
mail:*:9797:0:::::
news:*:9797:0:::::
uucp:*:9797:0:::::
operator:*:9797:0:::::
games:*:9797:0:::::
ftp:*:9797:0:::::
smmsp:*:9797:0:::::
mysql:*:9797:0:::::
rpc:*:9797:0:::::
gdm:*:9797:0:::::
pop:*:9797:0:::::
nobody:*:9797:0:::::
sshd:*:9797:0:::::
dino:$1$Vd11bYBs$3NV2tT0FK48OR/CYGM/rD0:12209:0:99999:7:::
www:$1$m4as.9uy$sOJvGN/fJKeSItUDNxl3e0:12215:0:99999:7:::
ffsearch:!:12313:0:99999:7:::
stinger:$1$u8M/xs7r$YgtlAmXbGsppdUNk6/onw/:12400:0:99999:7:::
postfix:!:12411:0:99999:7:::

Когато потребителя въведе паролата си, програмата login прави проста проверка и сравнява двете пароли. Ако те съвпаднат потребителя се допуска до системата, в противен случай достъпа му се отказва.
Въпреки, че преобразуването на паролата до нейния кодиран вариант е кратковременна операция, то обратната операция отнема много време. Полето за парола може да се използва и за ограничаване на достъпа. Това става, като се въведе * на мястото на кодираната парола. Това се използва за потребителски имена като nobody или lp. Обратно, ако това поле се остави празно, то дадения потребител ще може да се включва в системата без парола.
Всеки потребител има асоцииран уникален номер (UID), като чрез него операционната система идентификацира потребителя. Повечето UNIX™ системи използват идентификаторите от 0 до 99 за специални UID, а числата от 100 нагоре за потребителите. Slackware използва различна схема, а именно – от числата от 1000 нагоре се използват за потребителите.
И в двата примерни файла има около дузина потребителски имена създадени автоматично от операционната система. Предназначението на по-важните от тях е:
Потребителя root е суперпотребителя (UID 0)
demon се използва за системни процеси. Използва се само, за да притежава някои процеси и за да се установяват правилно техните права.
bin е собственика на изпълнимите файлове
adm притежава журналните и лог файловете
uucp се използва за UUCP комуникация

Повечето от тях имат звездичка в полето за парола, което забранява използването им при логин.
Всички потребители са организирани в групи. Всяка група подобно на потребителските имена притежава уникален идентификационен номер (GID). Тя представлява обединение на няколко потребителя по някакви причини. Например в една група могат да бъдат хората от един отдел, а от друга – вашит

ДОБАВИ КОМЕНТАР

Коментирай това преди всички други

Извести ме за
avatar
wpDiscuz