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



страница1/3
Дата08.05.2017
Размер380.93 Kb.
  1   2   3
1.1 Какво означава Linux ?

Linux е свободна Unix-подобна операционна система започната от Linus Torvalds със съдействието на програмисти от целия свят.

Linux е независима POSIX-реализация и поддържа истинска многозадачност, виртуална памет, споделени библиотеки, зареждане при поискване, чисто управление на паметта, мрежови услуги съгласно стандартите TCP/IP, както и други услуги достъпни в Unix-подобните системи.

Тъй като е защитена от лиценза GNU General Public License, изходните текстове на програмите формиращи Linux са достъпни за всеки.






1.2 Основни понятия в Linux

Като многозадачна операционна система Linux във всеки един момент от работата си поддържа няколко активни програми в паметта.

Най-важната и същевременно задължителна програма е ядрото (kernel). То се занимава с управлението на хардуера, паметта, разпределя ресурсите на компютъра между обикновените програми, управлява мрежовия трафик, файловата система и прави още куп важни неща.

Останалите активно работещи програми се наричат процеси (process). При стартиране на Linux най-напред в паметта се зарежда и стартира ядрото, което като се намести и разбере че компютъра е в добро здраве, стартира първия процес в системата, който се нарича init. Този процес стартира други процеси (които му се падат деца), те пък стартират още процеси (които са внучета на init), докато накрая нормално работещата Linux система се оказва с около 20-200 стартирани процеса, изпълняващи най-разнообразни задачи.

Ние не взаимодействаме пряко с на ядрото. Всички видими дейности в системата се извършват от процесите. Те пък възлагат на ядрото да извършва входно/изходни операции и други важни неща.

Процесите могат да си предават един на друг информация по няколко начина, най-важният от които е мрежовата комуникация (networking). Подобно на телефонните разговори между хора, всеки процес може да се опита да се свърже с друг процес, работещ на сьщия или на отдалечен компютьр. Ако другият процес 'вдигне телефона' (приеме TCP връзка), започва обмен на информация.

Ако компютърът има един процесор, във всеки един момент може да работи най-много един процес (или ядрото). Но ядрото, използвайки особеностите на хардуера така превключва активните процеси, че създадава илюзията за едновременна работа на всички стартирани процеси.

Oсновно понятие в Linux е и файловата система (file system). Тя е йерархична, съдържа файлове, директории, препратки към файлове, както и специални файлове, които са логически образ на хардуерните устройства. Освен това тя е виртуална, тоест дървото от директории може да съдържа прикачени (mounted) едновременно дискови дялове (partitions), принадлежащи на най-различни операционни системи.

Linux е многопотребителска (multiuser) система - различни потребители могат едновременно да ползват компютъра, като всеки от тях има ясно дефинирани права за достъп до различните ресурси на системата. Администраторът на системата (root) има върховни права, останалите потребители са с ограничени права, което ги лишава от възможността да правят големи поразии. Старайте се винаги когато е възможно да работите като обикновен потребител !

Целта на учебника е да изясни основните принципи на Linux. Той не се занимава с детайли. Голяма част от понятията, термините и програмите в Linux са аналогични за всички UNIX-подобни операционни системи, особено за системите с отворен код (FreeBSD, NetBSD, OpenBSD). Това е сложна среда, създавана, синхронизирана и тествана от хиляди програмисти в продължение на 30 години. В тази среда взаимодействията между програмите и стандартите за това взаимодействие са по-важни от реализацията на самите програми. Не се плашете от тази сложност. Постарайте се да научите общите принципи и да усвоите техниката бързо да намирате информация по възникнал проблем, а не да изучавате всичко в дълбочина.






1.3 Как да започнем да учим Linux ?

За да го правите пълноценно, добре е да си инсталирате Linux. Съществуват различни дистрибуции (готови комплекти за инсталиране и ползване), които се различават в дребни детайли. Всяка дистрибуция съдържа инструкции за инсталация, настройка и ползване.

Опитайте се да четете този учебник преди и след инсталацията. Така ще увеличите шанса си да разберете по-добре процеса на инсталация и работата на системата изобщо.

Има няколко важни източника на детайлна информация:



  • HOWTO документите ще ви светнат как да инсталирате и ползвате някои важни средства. Те са предназначени за начинаещи. Обикновено се намират в директорията /usr/doc/HOWTO и /usr/doc/HOWTO/mini. Има ги и на много места в Мрежата.

  • Командата man име_на_програма_или_функция дава детайлна информация за начина на ползване на съответната програма/функция. Още по-подробна информация за параметрите и начина на използване на програмите и функциите дава командата info име_на_програма_или_функция, чийто текст е организиран с хипертекстови връзки.

  • Много големи програми се придружават от HTML-учебник. Тези учебници могат да се четат и директно от Мрежата.

  • Стандартите за работа на Мрежата са описни в документите RFC (Requests For Comments). Те са в директория /usr/doc/RFC или подобна а също и на много места в Мрежата.

  • Най-точната, но и най-трудна за разбиране документация са самите изходни текстове на програмите. Те са за тези, които искат да вникнат в най-дребните детайли от работата на конкретна програма, с евентуалната цел да поправят грешки или да подобрят работата й.

  • WhatIs.com е хубав тълковен речник за компютърни термини.




Потребители root и user

  • Суперпотребител root

  • Потребителски account-и. Файлът /etc/passwd

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

  • Пароли

  • Идентификатор на потребителя

  • Идентификатор на групата

  • Коментар

  • home директория

  • login команда

  • Запазени потребителски имена

  • Добавяне на потребители

  • Групи

  • Командата su

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

Суперпотребител root

Когато бъде инсталирана една Linux система един потребител се създава автоматично. Той се нарича root или суперпотребител, защото няма нещо, до което този потребител да няма достъп или да не може да направи. Всички останали потребители не биха могли да изтрият нищо освен своите собствени файлове, докато суперпотребителя може да унищожи всички системни файлове само с една единствена команда. Това е най-мощния потребителски account. Пред този потребител няма никакви забрани и ограничения. Когато се включите в системата като root няма защо да се тревожите за собствеността върху файловете, достъпа до тях или пък софтуерните настройки - можете да правите всичко по всяко време.


Това е особено привлекателно за начинаещите, които като се сблъскат с даден проблем във връзка със собствеността или правата на достъп вместо да го решат избират по-лесния път и работят като root. Докато прибързано не извършат някоя глупост и сринат системата, често и непоправимо. Затова основно правило е root-account-а да се използва само и единствено за администриране. Направете си друг потребител за ежедневната работа. Това е желателно да бъде първото нещо, което следва да направите, когато си инсталирате нова Linux машина.
Именно поради значимостта на командите, които подавате като root, използването на този потребител е свързано и с промяна на обичайния prompt на командния ред.
Важно е да се отбележи, че този потребител може да се нарича всякак - няма правило, което да изисква той да се казва root.

Потребителски account-и

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


Цялата информация за потребителите се съдържа във файла /etc/passwd - най-обикновен текстов файл, чийто собственик е суперпотребителя и само той може да редактира съдържанието му, останалите потребители по дефиниция могат само да го четат. Всички редове в този файл имат строго определен формат:

username:password:userID:groupID:comment:home_directory:login_comm

Нека разгледаме един примерен файл /etc/passwd - това е моят /etc/passwd файл, взет от домашния ми компютър:

root:x:0:0:root:/root:/bin/bash


bin:x:1:1:bin:/bin:
daemon:x:2:2:daemon:/sbin:
adm:x:3:4:adm:/var/adm:
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:/var/spool/mail:
news:x:9:13:news:/var/spool/news:
uucp:x:10:14:uucp:/var/spool/uucp:
operator:x:11:0:operator:/root:
games:x:12:100:games:/usr/games:
gopher:x:13:30:gopher:/usr/lib/gopher-data:
ftp:x:14:50:FTP User:/home/ftp:
nobody:x:99:99:Nobody:/:
postgres:x:100:233:PostgreSQL Server:/var/lib/pgsql:/bin/bash
xfs:x:101:101:X Font Server:/etc/X11/fs:/bin/false
gdm:x:42:42::/home/gdm:/bin/bash
yovko:x:500:100:Yovko Lambrev:/home/yovko:/bin/bash
nataly:x:501:100:Natalia Staikova:/home/nataly:/bin/bash

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



username е уникалното потребителско име за логическо включване към системата
password е паролата за съответния потребител (кодирана)
userID (UID) е уникално число, което идентифицира потребителя пред операционната система
groupID (GID) е уникално число, което определя групата на потребителя
comment е някакъв коментар (обикновено истинското име на потребителя, телефон и др.)
home_directory е директорията, в която попада потребителя след логическото си включване
login_comm е команда, която се изпълнява при логическото включване на потребителя (тази команда обикновено стартира някаква шел програма)

Обърнете внимание, че тази структура на /etc/passwd се използва в почти всички UNIXTM системи.



Потребителски имена

Потребителското име е символен низ, обикновено до 14 знака (в някои системи до 8), което уникално определя даден потребител. В една система не може да има двама потребителя с едно и също потребителско име. Желателно е да избирате кратки и ясни потребителски имена тъй като те са в основата на комуникациите с останалите потребители на системата. Обикновено потребителското име съвпада с истинското име на потребителя, прякора му, инициалите му или някаква тяхна комбинация.


Важно е да се отбележи, че съществува конвенция, според която потребителските имена трябва да се изписват с малки букви. Малките и големите букви са от значение при всички Linux (и UNIXTM) системи. Например mitko и Mitko са две съвсем различни потребителски имена. Тъй като повечето команди се пишат с малки букви прието и потребителските имена да се изписват така, а и за да избегнете опасността от недоглеждане потребителят mitko да получава пощата на потребителя Mitko, само защото някой не е забелязал главната буква. В потребителското име се допускат символи за подчертаване, числа и дори повечето специални символи, но тъй като името започва да изглежда странно (а не са изключени проблеми с някои приложения) съветът ми да се стремите към някоя простичка буквена комбинация.

Пароли

Операционната система записва паролата на потребителя кодирана във второто поле. Само самия потребител може да променя паролата си чрез командата passwd и разбира се администратора.




Някои версии (вече повечето) не записват паролите във файла /etc/passwd заради проблеми свързани със сигурността. (Както си спомняте вече споменахме, че този файл може да бъде прочетен от всички потребители на системата.) В такъв случай паролите се пазят в друг файл, назоваван shadow password file и обикновено се казва /etc/shadow. Когато паролите са записани в такъв файл (отново кодирани), тогава полето password в /etc/passwd съдържа просто знака x. Така е и в приведения по-горе примерен файл.

Ето как изглежда един примерен shadow файл:

root:K/c6663skpiAEF:10766:0:99999:7:::


bin:*:10766:0:99999:7:::
daemon:*:10766:0:99999:7:::
adm:*:10766:0:99999:7:::
lp:*:10766:0:99999:7:::
sync:*:10766:0:99999:7:::
shutdown:*:10766:0:99999:7:::
halt:*:10766:0:99999:7:::
mail:*:10766:0:99999:7:::
news:*:10766:0:99999:7:::
uucp:*:10766:0:99999:7:::
operator:*:10766:0:99999:7:::
games:*:10766:0:99999:7:::
gopher:*:10766:0:99999:7:::
ftp:*:10766:0:99999:7:::
nobody:*:10766:0:99999:7:::
postgres:!!:10766:0:99999:7:::
xfs:!!:10766:0:99999:7:::
gdm:!!:10766:0:99999:7:::
yovko:uYU42zvcFaCGI:10766:0:99999:7:::
nataly:$1$Az3Y52v7$40GjOcEbHYUAqZ9eCFXLg.:10821:-1:99999:-1:-1:-1:135518564


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


Обърнете внимание, че преобразуването на паролата до нейния кодиран вид е кратковременна и простичка операция докато обратното не е така. Ако случайно успеете някак да откраднете файла с паролите на някоя UNIXTM система не мислете, че е лесно да възстановите от кодираните последователности техните първообрази.
Полето за парола може да се използва и за ограничаване на достъпа. Това се използва за специални потребителски имена като lp или nobody. Ако в полето за парола бъде записана звездичка (*) всеки опит за логическо включване към системата посредством тези потребителски имена ще бъде отхвърлян.
Логично следва въпроса какво ще стане ако оставим това поле празно - ами всеки, който използва това потребителско име ще получи незабавен достъп до системата с правата на този потребител без да бъде питан за парола. Вие преценявате доколко можете да си позволите да имате такива потребители.
Не е много умно да редактирате полето за парола с текстов редактор тъй като паролите са кодирани и вие не можете да пресъздадете метода на кодиране. Това, което ще постигнете като резултат е, че повече няма да можете да използвате това потребителско име, а пък ако го направите с root забравете, че повече ще можете да администрирате системата си. За смяна или въвеждане на пароли използвайте командата passwd.

Идентификатор на потребителя (UserID)

Всеки потребител получава асоцииран с потребителското му име уникален потребителски идентификатор (UserID или UID) това е число, което операционната система използва за да идентифицира всяко нещо свързано с конкретния потребител.


Повечето UNIXTM системи използват идентификаторите от 0 до 99 за специални UID, а числата от 100 нагоре за потребителите. В горния примерен /etc/passwd файл можете да видите, че суперпотребителя root има UID 0, а обикновените потребители yovko и nataly имат съответно номера 500 и 501.

Идентификатор на групата (GroupID)

Този идентификатор се използва за да се обозначи принадлежността на даден потребител към някоя група потребители. Групите се използват от организационни съображения и са свързани с правата за достъп до файловете. Това подробно ще разгледаме малко по-долу. Номерата на GID започват от 0. Някои системи запазват номера от 0 до 49 (други само от 0 до 9) за системни групи, а останалите са предоставени за потребителски.



Коментари

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



HOME директория

Директорията, в която попада потребителя след log-ването си към системата обикновено е неговата home директория. Нормално е всеки потребител да има такава директория. В горния пример можете да видите, че потребителят yovko има home директория /home/yovko, a home директорията на root е /root.


Обикновено потребителя има пълни права в home директорията, но това съвсем не е задължително. Може да му бъде отнета собствеността върху някои файлове - това е класически подход за ограничаване на правата на даден потребител, например с отнемането на собствеността и правото да редактира profile файла си, който се изпълнява след логическо включване към системата.

Login команда

Тази команда се изпълнява веднага след като потребителя се включи към системата. В общия случай това е команда, която стартира някакъв shell, но може да бъде и произволно приложение. Ако това поле е оставено празно в повечето UNIXTM системи се стартира Bourne shell. Шелът по подразбиране за Linux e bash (Bourne Again Shell).



Запазени (системни) потребителски имена

В примерния /etc/passwd има около една дузина потребители, които са създадени от операционната система по време на инсталацията и имат специално предназначение:



  • Потребителят root е суперпотребителя (UID 0) и има неограничен достъп. Собственик е на много системни файлове.

  • daemon се използва за системни процеси. Използва се само за да притежава някои процеси и за да се установяват правилно техните права.

  • bin е собственик на изпълнимите файлове

  • adm притежава счетоводните и log файловете

  • uucp се използва за UUCP комуникации и достъп до файловете

Повечето имат звездичка в полето за парола, което забранява използването им при login процедура.

Добавяне на потребители

Можете да добавите потребители към системата си като просто редактирате /etc/passwd файла или да използвате скрипт, който ще го направи вместо вас. Разбира се и двете неща можете да направите само като root.




Преди да редактирате /etc/passwd файл направете си резервно копие !




Нека да добавим потребителя suncho към нашата система. Нека той да има home директория /home/sample и да ползва bash шел. Тъй като UID номерата 500 и 501 са заети, задваме на новия потребител UID 502 и го оставяме в групата на обикновените потребители users (GID 100). Значи трябва да добавим следния ред в края на нашия /etc/passwd файл:

suncho::502:100:Samo za primer:/home/sample:/bin/bash

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

passwd suncho

Ще бъдете подканен да въведете парола. Масова практика е тя да съвпада с потребителското име, като се очаква потребителя да си я смени при първото си логическо включване. Това обаче крие опасност някой друг недобросъвестен потребител да присвои този account.


Можете да оставите на потребителя сам да установи паролата си, но той може и да не забележи, че се log-ва без парола или пък да му хареса така, а проблемите ще рефлектират при вас, когато се появят. А ще се появят обещавам ви.
Запомнете едно - хората мразят да помнят, въвеждат и променят паролите си. Вие като администратор трябва да ги принуждавате за това.
Сега остава да създадем home директорията на новия потребител с командата:

mkdir /home/sample

И да прехвърлим собствеността и на потребителя suncho:

chown suncho /home/sample

Всички потребители трябва да принадлежат към някоя група. Това означава да добавите потребителското име на потребителя на съответния ред за групата в /etc/group файла. Ако потребителя принадлежи към няколко групи добавете името му към съответните редове за тези групи в /etc/group.
Ако всичко това ви се вижда толкова сложно проверете дали вашата система ще изпълни командите useradd или adduser. А може би ще ви хареса и командата vipw.

Групи

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


Потребителите от една група могат да имат повече права за достъп до устройства, файлове, файлови системи или цели машини в сравнение с потребителите, които не принадлежат на тази група.
Информацията за групите се съдържа във файла /etc/group, който изглежда примерно така:

root::0:root


bin::1:root,bin,daemon
daemon::2:root,bin,daemon
sys::3:root,bin,adm
adm::4:root,adm,daemon
tty::5:
disk::6:root,adm
lp::7:lp
mem::8:
kmem::9:
wheel::10:root
floppy::11:root
mail::12:mail
news::13:news
uucp::14:uucp
man::15:man
users::100:games
nogroup::-1:

Лесно е да предположите какъв е формата на файла:

име_на_групата:парола:GID:списък_потребители

Името на групата е уникално символно име както и това на потребителя.

Паролата на групата трябва да бъде въведена от потребител, който пожелае да се присъеднини към групата. Не всички версии на Linux и UNIXTM използват това поле!

GID е уникалният групов идентификатор.

Списъкът на потребителите съдържа потребителските имена на потребителите, които принадлежат към групата.

Всяка Linux система има няколко системни групи - такива са bin, mail, uucp, sys и др. Не е добра идея да имате потребители от тези групи тъй като това означава да им дадете големи привилегии.

Добавянето на група е аналогично на добавянето на потребители. Само, че не всички Linux системи имат скриптове addgroup или groupadd и трябва да редактирате /etc/group сами.

Командата su

Понякога се налага да изпълните някоя команда като друг потребител. Например ако сте администратор, а искате да създадете файл с правата на suncho, например. Или пък ако сте обикновен потребител и искате за малко да станете root. Разбира се едното решение е да напуснете системата и след това да се включите като другия, но има и алтернатива на този подход и тя е командата su.

Например ако искате да станете root достатъчно е да напишете:

su root


Разбира се, че ще трябва да въведете и паролата на root. Въведете командата su без аргумента root системата счита, че искате да станете root, така че можете да не уточнявате потребителско име ако ставате root.
Ако обаче сте обикновен потребител или root и искате да станете yovko задължително трябва да уточните това с командата:

su yovko


Разликата е, че Linux няма да пита за паролата на yovko ако сте root. Нали ви казах, че root може всичко.

За да станете пак такъв какъвто сте бил напишете exit или натиснете Ctrl+D.


  1   2   3


База данных защищена авторским правом ©obuch.info 2016
отнасят до администрацията

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