Линукс администратор – иницијална провера пред разговор за посао

У овом тексту обрадићемо нека најосновнија питања која ћете сигурно добити на разговору за посао уколико конкуришете за Линукс администратор позицију (Linux System Administrator | Linux SysAdmin ил’ како га већ послодавци викају…) а богами можда чак и за било каквог Систем Администратора. Текст није за некога ко није имао додира са Линуксом или кога не занима Линукс, те ако потпадате у ту групу – ман’те се ћорава посла и немојте читати овај текст.

Питања сам нашао по разним неким сајтовима и подељена су на нека општа питања, једноставна питања и питања средње тежине. Недостају овде и она мало зајебанија питања, где на нека ни ја немам спреман одговор али отом неки други пут – или, уколико има некога од вас ко би желео да настави са овим списком нек се јави.

Уколико налетите на неке грешке у тексту или одговорима, или имате неки бољи и разумљивији одговор, будите слободни да ме исправите или контактирате (шта ћу, погреши човек, можда сам и ја некад ззобззозбзо сам а и катаракта ме уби…).

Питања су постављена са плусићима, да бисте ви покушали прво сами себе да испитате да ли знате одговор на дато питање – те кад скоцкате одговор у глави – кликните на плус, а и одмах да знате – одговори нису детаљни већ општи, јер да сам писао детаљне одговоре добио бих шуљеве од седења и изгледао бих ко благо наварени Војислав Коштуница.

Општа питања

Која је улога DNS-а у мрежи?

DNS (Domain Name System) има улогу да назив рачунара (хоста) преведе у IP адресу рачунара

Шта је HTTP?

HTTP (Hypertext Transfer Protocol) је мрежни протокол који служи за комуникацију на релацији сервер-клијент и функционише по принципу захтев/одговор и основна намена овог протокола је дистрибуција садржаја на вебу. Сервер очекује захтев на порту 80 (подразумевани порт за http) који клијент шаље путем одређене команде, потом га обрађује и враћа клијенту одговор који се састоји од такозваног „response“ кода (200, 500, 400…) и конкретног одговора

Шта је HTTP proxy и како он функционише?

HTTP proxy (прокси) јесте рачунар који се поставља као посредник између веб браузера и интернета и обично служи као централна локација (у фирми) одакле је приступ интернету дозвољен. Функционише тако што клијент (нпр веб браузер) шаље захтев проксију (типа „GET https://kompjuteras.com HTTP/1.1″) коју прокси обрађује па прослеђује (или блокира, кешира…у зависности од типа прокси сервера и постављених правила) даље серверу те ће сервер заправо видети посету са IP адресе прокси сервера уместо IP адресе стварног клијента.

Шта је HTTPS и како функционише?

HTTPS (Hypertext Transfer Protocol Secure) је вид шифрованог HTTP протокола, тачније представља комбинацију HTTP протокола и SSL/TLS енкрипције која омогућује енкрипцију током преноса података од клијента до сервера и назад као и сигурну идентификацију сервера а уместо подразумеваног порта 80 који користи HTTP користи порт 443. Овај протокол се најчешће користи на сајтовима који баратају поверљивим подацима (рецимо где се врше онлајн плаћања).

Клијент од сервера захтева сигурну конекцију коју сервер доказује кроз SSL сертификат који је на серверу имплементиран а који SSL клијент може да прочита кроз софтвер који је у њему имплентиран (типа новији веб браузери) – те уколико се успостави да је сертификат валидан – конекција бива успостављена кроз SSL протокол тако да успостављени саобраћај не може да чита треће лице.

Шта је SNMP и која му је намена?

SNMP (Simple Network Management Protocol, слободни превод: једноставни мрежни протокол за надзор и управљање) једноставни је протокол који се данас најчешће користи за надзор и управљање мрежним уређајима у TCP/IP мрежама. SNMP омогућава мрежним администраторима да управљају мрежним перформансама, налазе и решавају мрежне проблеме те планирају потребе за растом мреже (прекопирано са Википедије)

Шта је RAID? Шта су RAID0, RAID1, RAID5, RAID0+1, RAID 1+0?

RAID (Redundant Array of Independent Disks) јесте технологија којом се комбинује више хард дискова како би се дошло до редудантности података и побољшања перформанси.

RAID0 (striping) јесте повезивање два или више хард дискова у једну целину како би се максимално добило на капацитету и брзини. Овим повезивањем подаци нису редудантни те ако се један од хард дискова поквари – можете да се убијете.
Два диска од по 1TB чиниће један диск од 2TB.

RAID1 (mirroring) јесте повезивање парног броја хард дискова у једну целину како би се добило на безбедности јер је за сигуран рад довољно да ради један диск из пара. Подаци на оба диска у пару су идентични а овим RAID-ом се губи на перформансама писања по диску.
Два диска од по 1TB чиниће један диск од 1TB.

RAID5 (striping with parity) јесте начин повезивања дискова с најмање 3 диска при чему се блок података дели на све дискове осим једног, а на њега се записује parity информација коју генерише контролер на основу података с осталих дискова. Уколико се поквари један диск долази до реконструције података а губитак само parity информације не утиче на доступност података…иако ће перфомансе бити драстично смањене док се не промени покварени диск.
Три диска од по 1TB чиниће један диск од 2TB.

RAID 0+1 (stripping and mirroring) односно RAID0+RAID1 јесте начин повезивања минимум 4 диска при чему се један пар дискова везује у stripping па се онда он mirror-ује при чему се задржавају добре перформансе уз толеранцију од једног диска колико може максимум да се поквари.
4 диска од 1TB чиниће један од 2TB.

RAID 10 (односно RAID 1+0, mirroring and stripping) исто као и у 0+1 само обрнутим редом…подаци се прво дуплицирају на минимум два диска па се онда мирорују.

Какве су то врсте бекапа level 0 backup и инкрементални бекап?

Level 0 backup је у ствари пун бекап (full backup). Инкрементални бекап јесте бекап само оних фајлова који су настали или су променили у односу на последњи пуни бекап (level 0 backup)

Шта је SSH?

SSH (secure shell) – је сервис којим се можете повезати на удаљени компјутер на сигуран начин јер је конекција шифрована. Подразумевани порт који користи ssh је 22.

Шта је SMTP и која му је намена?

SMTP (енг. Simple Mail Transfer Protocol) представља основни протокол слоја апликација за електронску пошту, који користи услугу поузданог трансфера података протокола TCP. Као и већина других протокола апликацијског слоја има клијентску и серверску страну (која се извршава на серверу за електронску пошту онога који шаље и друга страна која се извршава на серверу)

Једноставна Линукс питања

Објасни основну фајл-систем хијерархију на Линуксу, укратко
16 кључних локација:
/ – root, ту се налази све
/bin – (user binaries) – извршни програми и команде који су део Линукса
/boot – (boot loadеr files) – фајлови неопходни за стартовање система
/dev – (device files) уређаји – (хард диск, CD-drive, траке…)
/etc – (configuration files) – Конфигурациони фајлови
/home – (home directories) – Подразумевани директоријум за корисничке фајлове
/lib – (system libraries) – Заједниче библиотеке и кернел модули
/sbin – (system binaries) – Бинарне извршне датотеке који су доступне само root-у
/proc – (process information) – Подаци о системским процесима
/var – (variable files) – Фајлови специфични за корисника, попут имејл порука, историје…
/tmp (temporary files) – Привремени фајлови који се бришу са сваким стартовањем система
/usr (user programs) – дељиви и read-only подаци, бинарни фајлови, библиотеке, документација…
/opt (optionall add-in apps) – Конфигурациони фајлови за додавање на апликативни софтвер. Овде се могу инсталирати third-party апликације
/mnt – (mount directory) – Локација за mount-оване уређаје (првенствено хард дискове)
/media (removable devices) – Моунтовање мултимедијалних фајлова (USB, CD…) од стране корисника и различитих програма
/srv – (service files) – Фолдер је предвиђен за смештање података које користе програми намењени серверској употреби попут Apache Web Server-a рецимо
Како се зове и који је UID корисника са највишим привилегијама на Линуксу?
Зове се root и UID му је 0
Којом командом излистати све фајлове у једном фолдеру, укључујући и оне скривене фајлове?
ls -a
Којом командом можете обрисати фолдер и све фајлове унутар њега?
rm -rf naziv_foldera
Којом командом можете видети колико је меморије заузето и слободно?
free
Којом командом можете претражити да ли у фолдеру постоји фајл у којем се појављује текст 'kompjuteras?'
Постоји више начина, најлакши је:
grep -R „kompjuteras“ naziv_foldera/
Како се накачити на удаљени сервер путем SSH команде?
ssh remote_korisnik@remote_ip_ili_domen
Са којом командом можете излистати све варијабле?
Команда: env
Позивом команде ifconfig -a добијате одговор 'command not found'. Зашто?
Команду окидате из user mode-a па path није исконфигурисан. Два решења:
1) sudo ifconfig -а (или је покрените као root)
2) /sbin/ifconfig -а
Шта ће се десити ако у терминалу укуцам / и два пута притиснем тастер ТАБ?
Излистаће се сви фолдери и фајлови у root-у
...а ако укуцам /b и два пута притиснем таб?
Излистаће се сви фолдери и фајлови који се налазе у root-у и почињу на слово b (bin, boot)
Која команда ми даје преглед искоришћености простора на хард дисковима?
df
Којом командом можеш листати DNS рекорде неког сајта?
host -parametar, нпр
host -t ns kompjuteras.com ће излистати NAME сервере сајта kompjuteras.com
Којим командама можеш мењати пермисије и власништно над фајловима и фолдерима?

Пермисије: chmod
Власништво: chown
Група: chgrp

нпр: chmod 755 naziv_fajla.sh

Шта команда chmod +x ради фајлу?
Прави фајл извршним.
Шта значи пермисија 0777 над фајлом?
Свако може тај фајл прочитати, изменити или покренути.
Како додати новог корисника, а да тај корисник не може да се логује на систем?

useradd -M username_korisnika (корисник це бити направљен, али без home фолдера)
usermod -L username_korisnika (ће му закључати лозинку да не може да се логује)

може и

useradd -r username_korisnika (направићете системског корисника који нема лозинку или home фолдер па не може ни да се логује)

Како корисника ставити у одређену групу и како га уклонити из одређене групе?

Додавање: useradd -G назив_групе корисничко_име_корисника
Уклањање: gpasswd -d корисничко_име_корисника назив_групе

Шта је bash alias?

Bash alias јесте скраћеница или други назив за неку команду и дефинише се у фајлу .bashrc или .bash_profile или /etc/profile а обично се користи код поједностављења комплекснијих команди. Рецимо ако хоћете да вам rm -rf буде подразумевана команда за rm, у фајл .bash_profile ћете додати линију: alias rm=’rm -rf’

Шта док сте у терминалу ради комбинација тастера CTRL-C?
Прекида команду/јоb који сте покренули у терминалу
Шта се налази у фајлу /etc/services?
Налази се мапа који порт припада ком сервису или протоколу и садржи податак о порту, сервису или протоколу на који не везан, alias-у и коментару (уколико постоје)
Која је основна разлика између Unix-а и Линукса?
Лиценца. Unix (Јуникс) је већином комерцијални оперативни систем, док је Линукс клон Unix-а али већином бесплатан, отвореног кода, слободан за сваку даљу измену, дистрибуирање и било какву манупулацију. Друга основна разлика је: Unix је комплетан оперативни систем док је Линукс само кернел.
Која је разлика између Телнета и SSH?
Сигурност. Телнет не поседује никакву енкрипцију и саобраћај се одвија у читљивом текстуалном формату (plaintext) за разлику од SSH протокола који користи шифровану заштићену јавним и приватним кључевима.
Шта је су три вредности load-а у top-у и шта је уопште load?
Средња вредност load-а система за последњих 5, 10 и 15 минута.
Load је оптерећење проузроковано обрадом података те висок load може проузроковати превелико оптерећење процесора, меморије или хард диска – у односу на број процесорских јединица које обрађују податке.

Питања средње тежине

Чему служе следеће команде: tee, awk, tr, cut, tac, curl, wget, watch, tail?
  • tee – користи се да оутпут неког програма подели тако да у исто време може бити и приказан и записан у неком фајлу.
  • awk – програмски језик за обраду текстуалних фајлова. Најчешће се користи за извлачење текста из колона добијених aутпутом из програма
  • tr – служи да инпут препакује у aутпут уз измену или брисање одређених карактера. нпр:echo ‘kompjuteras’ | tr „[:lower:]“ „[:upper:]“ >> fajl.txt…ће реч kompjuteras препаковати у KOMPJUTERAS и додати у fajl.txt
  • cut – такође служи за процесуирање текста тако што ће одсећи задати део текста у колумни која му се прослеђује као циљна. нпр:cut -d ‘:’ -f1 /etc/passwd >> fajl.txt…ће нам дати све вредности из фајла /etc/passwd у првој колони пре делимитера „:“ (у овом случају корисничка имена коришћена у систему) и додати у фајл fajl.txt
  • tac – ће изистати садржај неког фајла али сортиран од доле на горе (за разлику од cat који листа од горе на доле). tac је уствари cat читан уназад 🙂
  • curl – служи да пребаци податке са или ка серверу коришћењем неког од подржаних протокола (http, ftp…), нпр:curl kompjuteras.com > kompjuteras.html….ће source странице http://kompjuteras.com ископирати у фајл kompjuteras.html
  • wget – је CLI download manager, нпр wget www.nekisajt.com/fajl.zip ће скинути fajl.zip са сајта nekisajt.com
  • watch – служи да испратите aутпут неког програма или команде у дефинисаном или реалном времену у терминалу, нпр: „watch -n 3 free -m“ ће сваке 3 секунде да у терминалу даје инфо о искоришћености меморије на компјутеру
  • tail – се користи за преглед последњих X линија неког фајла. Обично се користи за преглед логова у реалном времену, рецимо: „tail -f /var/log/messages“ ….ће дати преглед свих новокреираних линија у фајлу /var/log/messages у реалном времену
Која је улога карактера '&' после команде?
Извршавање команде у позадини како би несметано могли да покренете следећу команду у терминалу или скрипти.
Шта ради команда disown после &?
Ослобађа одређени јоб покренут у сесији, како би се могли безбедно излоговати из сесије.
Шта је packet filtering?
Packet filtering је процес блокирања или пропуштања пакета кроз мрежу а на основу информација добијених из њиховог хедера: одредишна IP адреса, циљна IP адреса, порт и протокол који се користи
Шта је виртуална меморија?
Виртуална меморија је простор на складишту (хард диску, SSD…) који се користи уколико је RAM пун, те се у подаци из меморије премештају на виртуалну меморију и тамо даље обрађују како би се ослободио простор на RAM-у.
Шта су укратко A, NS, PTR, CNAME и МX рекорди?
  • А рекорд (Address) јесте IP адреса која је повезана са доменом који се позива
  • NS рекорд (Name server) дефинише који ће сервер бити главни за достављање и управљање информацијама за дати домен
  • PTR rekord (Pointer Record) јесте домен који је повезан са IP адресом (супротно од А рекорда) и користи се већином као провера да ли је домен који се позива заиста повезан са датом IP адресом одакле је започета конекција
  • CNAME (Canonical Record) има улогу преусмеравања једног домена према другом
  • МX (mail exchange) рекорд указује на постојање SMTP протокола имејл сервера.
Шта је 'т' пермисија (sticky bit) и како се додељује?

Sticky bit или „т“ пермисија јесте пермисија која се додељује фолдеру а има за циљ да над фајловима унутар тог фолдера дозволи брисање/измену само власницима тих фајлова (и root-у наравно).

Додељује се са:
chmod +t naziv_foldera/ или chmod 1XXX naziv_foldera/ где је 1 sticki bit а XXX пермисије које додељујете.

Шта је immutable атрибут и како се поставља?

Immutable (непроменљив) бит јесте атрибут који се може доделити одређеном фајлу а који неће дозволити никоме (па ни root кориснику) да дати фајл промени или обрише – све док се тај атрибут не уклони – а то може да уради искључиво root корисник.

Додељује се комадном chattr:
chattr +i naziv_fajla

Шта је inode?
inode (иноуд, индекс нод) представља структуру података фајла (метаподаци) у којој се налазе подаци о:
– типу фајла
– дужини фајла
– власништву и приступним дозволама
– времену креирања фајла
– времену модификације фајла

Фото: Свет Компјутера

Inode број се може добити командом ls -i naziv_fajla и он је уникатан на нивоу партиције а неке inode информације се могу добити командом stat naziv_fajla

Која је разлика између хардлинкова и симлинкова?
Хардлинк би се грубијански могао описати као веза са локацијом фајла на фајл систему односно његовим метаподацима (inode подаци) али не и са самим фајлом (као што је случај са симлинковима). Дакле фајл се може изменити, реименовати и слично – веза ће и даље бити актуелна јер је inode исти. Ако се оригинални фајл обрише и даље је читљив као хардлинк – док код симлинкова то није случај, односно ако се реименује оригинални фајл, линк више није актуелан.
Један практичан пример употребе хардлинка?
У једном фолдеру направите хардлинкове ка више различитих вама битних фајлова – па радите периодични бекап истих.
У том случају последње верзије фајла биће бекаповане.
Шта се дешава са хардлинком и симлинком кад се обрише оригинални фајл?
Код хардлинка фајлу се може и даље приступити – док код симлинка линк постаје невалидан и фајл је изгубљен.
Како натерати систем да уради проверу фајлсистема приликом следећег стартовања?
Командом shutdown -rF now (као root корисник) а може и прављењем празног фајла forcefsck на root локацији (команда: touch /forcefsck)
Шта је runlevel и како да дођете до тренутног runlevel-а?
Runlevel је број који описује у ком моду се налази систем или у ком моду желите да покренете (у графичком (init 5), текстуалном (init 3), једнокорисничком (init 1) итд. Овај број може варирати од дистроа до дистроа.
Тренутни runlevel можете добити командом: who -r или runlevel
Шта је SSH port forwarding?
SSH port forwarding или SSH tuneling јесте механизам заснован на SSH протоколу којим шифрујете TCP саобраћај од вашег рачунара до удаљеног SSH сервера тако да нико између не може да чита саобраћај а потом са тог удаљеног SSH сервера радите редирекцију ка серверу:порту којем требате приступити под условом да је тај сервер:порт видљив са SSH сервера.
Тиме, сем енкрипције саобраћаја добијате приступ и другим ресурсима унутар затворене мреже без потребе да отварате додатне портове или постављате тај други сервер да буде јавно доступан.
Која је разлика између local и remote port forwardingа?

Local port forwarding се користи кад желите да приступите машини којој ви немате директан приступ – али има SSH сервер коме можете приступити…тако да постављањем локалног SSH port forwardinga ви можете приступити рецимо веб серверу који није јавно видљив (али је видљив са SSH сервера) путем адресе, например: http://localhost:9393

Remote port forwarding користите као и у претходном примеру али контра, тј користите га кад желите да сервис на вашем рачунару биде видљив корисницима који могу видети SSH сервер али не и ваш рачунар.

Како додати корисника без команди useradd или adduser?

– По узору на неког већ постојећег корисника креирати сличне линије у фајловима /etc/passwd, /etc/group.
– Доделити му лозинку кроз стандардну команду passwd
– Креирати и доделити му home директоријум који сте навели у /etc/passwd
– Доделити chown/chgrp привилегије том кориснику над тим home фолдером

Шта су MAJOR и MINOR бројеви код специјалних фајлова? (рецимо под /dev)

MAJOR (главни) број код специјалних фајлова јесте број који дефинише тип уређаја односно хардвера (да ли је у питању хард диск, tape drive…) док MINOR (минорни или другостепени) означава инстанцу главног уређаја (хард диск 1, хард диск 2).

$ cd /dev
$ ls -l | grep sda
brw-rw—- 1 root disk 8, 0 May 24 02:01 sda
brw-rw—- 1 root disk 8, 1 May 24 02:01 sda1
brw-rw—- 1 root disk 8, 2 May 24 02:01 sda2
brw-rw—- 1 root disk 8, 3 May 24 02:01 sda3
brw-rw—- 1 root disk 8, 4 May 24 02:01 sda4
brw-rw—- 1 root disk 8, 5 May 24 02:01 sda5
…у овом примеру, MAJOR број је 8 и означава да је упитању један тип хардвера (у овом случају тип је хард диск), док су MINOR бројеви (од 0 до 5) и означавају један root хард диск (sda) са 5 логичких делова попут партиција на њему (sda1-sda5)

Хард диск је величине 100GB, заузето је 95GB а пише да је заузет 100%. Зашто?

По дифолту фајл систем резервише 5% простора за неке своје системске фајлове или као превенцију од квара диска због препуњености, тако да и ако пише 100% ништа се катастрофално неће десити самом диску – али не-root корисник не може да користи тај простор.
Ако вам треба тих додатних 5% диска, можете га ослободити (иако није препоручљиво) командом:
tune2fs -m0 /dev/ta_particija

Обрисали сте фајл од 100GB али не да је систем ослобођен за 100GB. Зашто?

Брисањем фајла бришете само информацију о његовој локацији на диску те ако неки процес држи тај фајл отвореним, а ви сте га обрисали – он и даље постоји на систему док год процес који држи тај фајл отвореним – не стопирате или рестартујете.
Такође, ако сте направили хардлинк ка том фајлу па обрисали фајл – он ће и даље бити „жив“ и моћи ће да му се приступи све док не обришете и тај хард линк.
Процес који држи обрисани фајл отвореним можете наћи командом:
lsof| grep deleted
Све хардлинкове на систему можете наћи комадом:

find / -type f -printf '%n %p\n' | awk '$1 > 1{$1="";print}'
Који је најбржи начин да схватим како и шта ради команда ps?

Укуцајте: man ps

Како пронаћи на Линуксу који процес ослушкује који порт?

netstat -tulpn

Active Internet connections (only servers)
Proto Recv-Q Send-Q Local Address               Foreign Address             State       PID/Program name
tcp        0      0 0.0.0.0:3306                0.0.0.0:*                   LISTEN      1067/mysqld
tcp        0      0 0.0.0.0:22                  0.0.0.0:*                   LISTEN      930/sshd
tcp        0      0 127.0.0.1:25                0.0.0.0:*                   LISTEN      1160/master
tcp        0      0 :::80                       :::*                        LISTEN      1171/httpd
tcp        0      0 :::22                       :::*                        LISTEN      930/sshd
tcp        0      0 ::1:25                      :::*                        LISTEN      1160/master
tcp        0      0 :::443                      :::*                        LISTEN      1171/httpd
Окидате скрипту и желите да видите њене резултате унутар терминала и уписане у фајл. Како?

./skripta | tee fajl_u_koji_se_upisuju_rezultati

Шта се постиже командом: echo 1 > /proc/sys/net/ipv4/ip_forward
Уписује се број 1 у фајл ip_forward. Тиме се омогућује IP forwarding, који се већином користи уколико желите да ваш компјутер има улогу рутера.
Наведите Linux file types које знате

Регуларни фајл, попут текстуалног или извршног фајла

Фолдер (d)

Link (l) – пречица која указује на стварну локацију фајла

Специјални фајл (c)– фајл који указује на, рецимо, неку уређај, попут /dev/cdrom

Socket (s) – специјални фајл који дозвољава комуникацију између два процеса путем мреже

Pipe (p) – специјални фајл који дозвољава једном процесу да комуницира са другим ван мреже

Шта је ARP?
ARP (Address Resolution Protocol) је комуникацијски протокол задужен за проналажење хардверске адресе одредишта на основу његове IP адресе – односно преводи IP адресу рачунара у MAC адресу. Ово је одлично појашњено у овом тексту.
Која је главна између TCP и UDP??
TCP протокол захтева везу и има контролу над послатим пакетима ка одредишној адресе, те уколико се деси да неки пакет не буде послат, source адреса добија тај инфо са одредишне адресе те поново шаље тај пакет који није примљен, односно контрола примљених и послатих пакета је двосмерна.
UDP протокол не захтева везу, већ шаље пакете ка одредишној адреси те ако се деси да неки пакет не стигне на одредишну адресу – тај пакет остаје заувек изгубљен, односно, контрола примљених и послатих пакета је једносмерна.

Са друге стране, с обзиром на већу контролу послатих пакета – TCP протокол је доста захтевнији и спорији од UDP протокола, па се UDP протокол већином користи уколико је потребно пребацити велику количину података који нису нешто посебно битни, попут рецимо видео стриминга.