Subsections

Вход и изход от системата

Първоначална идентификация

Когато стартирате своята Debain-система, първото, което трябва да направите след като системата е заредила успешно, е да се идентифицирате. Debian ще очаква да направите това, като ви предостави login prompt, който изглежда примерно така:

Debian GNU/Linux testing/unstable shodan tty1

shodan login:

При вас разбира се ще изглежда малко по-различно (най-малкото, заради името на хоста), а също така е взможно и този процес при вас да се извършва в графичен режим, вместо текстово като при мен, при положение че системата ви е конфигурирана с XWindow (kdm, gdm или xdm).

След въвеждането на потребителското име, ще трябва да се идентифицираме и с парола:

Debian GNU/Linux testing/unstable shodan tty1

shodan login:manchev
Password:

След успешната идентификация, Debian ще ни предостави своя prompt, който при мен изглежда така:

manchev@shodan:~$

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

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

manchev@shodan:~$logout

Това ще ни върне в стартовото състояние и на екрана ще се изведе частта, очакваща идентификация:

Debian GNU/Linux testing/unstable shodan tty1

shodan login:

Когато искате да изключите компютъра изобщо, трябва да изпълните друга командата -- shutdown. Важно е да се отбележи, че това е задължителна стъпка, понеже директното щракване на копчето крие рискове от загуба на данни -- Linux поддържа кеш спрямо дисковете си, като времето на опресняване е от порядъка на 30 секунди. Спрете ли системата направо от захранването, рискувате загуба на информация, която все още не е прехвърлена към дисковата система.

shutdown

Командата shutdown(8) се използва за изключване на системата чисто и безопасно. Когато изпълните командата shutdown всички включени в системата потребители (локални или отдалечени) получават нотификация, че системата прекратява работа. Освен това се поставя и забрана за включване на нови потребители. Следващата стъпка, която shutdown(8) предприема е да изпрати сигнала SIGTERM до всички работещи към момента процеси. Това дава възможност на програмите, които го разпознават да приключат нормално работата си (например даден текстови редактор разбира, че системата се готви за изключване и може да запази данни от файла, който в момента се редактира чрез него). По-нататък shutdown(8) се свързва с процеса init(8), като заявява смяна на runlevel(8), като стойността по подразбиране е runlevel 1. (FIXME: Да се обясни) Има няколко важни параметъра, които можем да укажем на командата, а именно:

-r Параметърът изисква от системата да се рестартира, след като приключи изпълнението на процесите, които shutdown изисква.

-h Блокира всякакъв достъп към системата. Обикновено точно този параметър се използва, когато смятаме да изключим изцяло компютъра.

Освен това, командата shutdown изисква и един задължителен параметър "- time", който казва кога да се извърши изключването. Той може да се замени с константата "now", което инструктира shutdown да започне процеса незабавно.

От казаното по-горе можем да конструираме два от основните формати на извикване на shutdown, а именно:

Ако сега се опитам да изпълня една от двете команди на моята система, това което ще се случи няма да е очакваното:

manchev@shodan:~$shutdown now -r
bash: shutdown: command not found

Bash (FIXME:Две думи за Bourne и C shell) ни съобщава, че не е намерил изисканата от нас команда. Това се случва по простата причина, че ние като обикновен потребител нямаме в пътя си достъп до /sbin директорията от файловата система, коята съдържа в команди достъпни единствено за администраторите на системата. Дори и да отидем в самта директория и да изпълним командата там (което е постижимо), ще видим нещо от рода на:

shutdown: you must be root to do that!

Ако помислим логично -- тази защита е съвсем уместна. Ние не бихме искали всеки потребител на когото сме дали някакъв достъп до системата да има възможност да я изключва и рестартира. Което ни води до следващата крачка: Ако не използваме системата като root, но въпреки това администрираме системата, как да извършим операциите по изключването и рестартирането й?

Тук е момента да споменем още една основна команда -- su(1). Тя ни дава възможност да сменим своята идентификация и в частност да се превърнем superuser, който има права да извърши дадената операция.

su

Както вече споменахме, su ни дава възможност да се превърнем в друг потребител по време на нашата собствена сесия. Ако извикаме командата без име на потребител, чиито права искаме да придобием, тогава по подразбиране su предполага, че искаме да се превърнем в root. Важно е да обърнем внимание на параметъра "", който се използва за да придобием и обкръжението, което потребителят в който се превръщаме би получил ако се включи директно към системата. Например, ако се превръщаме в нормален потребител, стойността на на променливата (FIXME: DOLLAR)PATH ще се промени на /bin:/usr/bin или ако се идентифицираме като super user, нейната стойност ще бъде /sbin:/bin:/usr/sbin:/usr/bin.

Друг итнересен параметър на командата е "-c" чрез който направо изпълняваме дадена команда с правата на потребителя, в който се превръщаме.

От тук насетне имаме два подхода: Първият е да се превърнем в super user и да изпълним командата shutdown(8), а вторият -- да извикаме su(1) и направо да поискаме той да изпълни shutdown(8) с права нa superuser.

Първият подход изглежда така:

manchev@shodan:~$su -
Password:

След като желаем да се превърнем в root, системата изисква да напишем паролата за акаунта на този потребител. След като я въведем правилно ще получим нов промпт:

shodan:~#

Обърнете внимание в промяната на знака $ в #. Именно заради тази промяна винаги можем да знаем като какъв потребител използваме конзолата -- нормален когато промпта е $ или root когато промпта е #.

Изпълняваме shutdown(8):

shodan:~#shutdown now -h

Broadcast message from root (tty1) 

The system is going down for system halt NOW!
INIT: Switching to runlevel: 0
INIT: Sending processes the TERM signal
INIT: Sending processes the KILL signal
Stopping periodic command scheduler: cron.
Stopping initernet superserver: inetd.
Stopping OpenBSD Secure Shell server: sshd.
Saving the System Clock time to the Hardware Clock...
Hardware Clock updated to Tue Aug 19 13:23:37 EEST 2003.
Stopping deferred execution scheduler: atd.
Stopping kernel log daemon: klogd.
Stopping system log daemon: syslogd.
Sending all processes the TERM signal... done.
Sending all processes the KILL signal... done.
Saving random seed... done.
Unmounting remote filesystems... done.
Deconfiguring network interfaces.... done.
Deactivating swap... done.
Unmounting local filesystems... mount: proc already mounted
done.
flushing ide devices: hda hdc
Power down.

Е, сега е безопасно да изключите компютъра си, ако той сам не се е изключил разбира се.

Другият вариант беше да напишем направо:

manchev@shodan:~$su -c "shutdown now -h"
Password:

И след въвеждането на паролата, щеше да последва същата поредица от действия (FIXME: Да не забравя за sudo).

Когато говорим за изключване или рестартиране на системата, трябва да обърнем внимание и на командите halt(8), reboot(8) и poweroff(8). Какво правят те е видно от самите им имена. Да вземем за пример действието на halt(8). Ако изпълним halt(8) и не се намираме в runlevel(8) 0 или 6 (тоест -- нормално функционираща система) Debian ще изпълни shutdown -h (респективно shutdown -r, ако извикаме reboot(8)). С една дума може да гледаме на halt(8) като синоним на shutdown -h. В по-старите версии на sysvinit не беше разрешно halt(8) да се извиква директно. Така или иначе употребата на shutdown(8) е по-елегантния начин за изключване/рестарт и най-добре се придържайте към него.

След като видяхме как правилно можем да се включим, изключим и как безопасно да спрем системата, вече е време да започнем да се забавляваме с основните команди на Debian GNU/Linux.



George Danchev 2004-12-25