- Рут нуди потпуну контролу, али Убунту и друге дистрибуције га подразумевано онемогућавају како би смањили ризике.
- Судо вам омогућава да подижете привилегије од случаја до случаја и води евиденцију о томе ко извршава сваку команду.
- За графичке апликације постоје помоћни програми као што су kdesu, gksu, gksudo или pkexec, који се могу користити у .desktop лансирним програмима.
- Безбедност зависи од коришћења најмање привилегија, избегавања непоузданих скрипти и ревизије повишеног приступа.

У оперативном систему Windows, многи људи су навикли да притискају Shift+Enter или Shift+клик левим тастером миша да би отворили програм са повећаним привилегијама из менија Start. У Linux-у, ово није увек једноставно, јер безбедност зависи од root-а, sudo-а и графичких помоћника , а свако десктоп окружење има своје алате. Упркос томе, постоје прилично једноставни начини за покретање апликација као root из покретача, пречице или менија апликација, иако је важно разумети шта то подразумева.
Кључно је то што root корисник има апсолутну контролу над системом , а модерне дистрибуције, посебно Ubuntu и његови деривати, обично онемогућавају директно пријављивање. Стога није уобичајено пријављивати се као root, већ повремено повећавати привилегије користећи `sudo` или графички програм који тражи лозинку. Ако желимо да икона покретача покреће апликацију са тим привилегијама, мораћемо да изменимо команду коју извршава или да креирамо посебан покретач.
Шта заправо значи покренути нешто као root?

У Линуксу, root је налог са UID 0 и неограниченим привилегијама . Може да чита, мења или брише било коју датотеку, инсталира софтвер, мења конфигурације језгра и контролише процесе који припадају било ком кориснику. Због тога је невероватно моћан алат, али и велики ризик ако се користи непажљиво. Једноставна грешка у куцању са `rm` или `mv` може учинити систем неупотребљивим, а злонамерни скрипт извршен као root може инсталирати задња врата, мењати безбедносне мере или красти податке практично без трага.
У Убунтуу, root налог нема подразумевану лозинку и директно пријављивање није дозвољено. Филозофија је да радите са својим редовним корисничким налогом и користите `sudo` за одређене задатке . `sudo` у суштини значи покретање команде као други корисник, обично root, након аутентификације са сопственом лозинком ако припадате `sudo` групи. Ово ограничава време које сте изложени и води евиденцију о томе ко је шта урадио.
Међутим, у веома специфичним ситуацијама, као што је опоравак оштећеног система, рад у ограниченим окружењима или конфигурисање сервиса који захтевају стални приступ, можете размотрити привремено омогућавање root приступа. Општа препорука је да га поново онемогућите чим се укаже потреба. Што мање времена проведете као root, то је боље за стабилност и безбедност машине.
Ризици коришћења root-а без опреза
Једна од најочигледнијих опасности је случајно брисање виталних датотека . Као root, не постоје ограничења дозвола; команда попут `sudo rm -rf /` може обрисати систем без упозорења. Такође, обично не постоји корпа за отпатке за ова брисања, тако да опоравак може захтевати сложене форензичке алате или чак потпуну поновну инсталацију система.
Још један ризик је покретање непоузданих скрипти. Ако покренете код преузет са било које странице са повећаним привилегијама, у суштини му дајете кључеве од своје куће . Чак и ако скрипта делује безопасно, може да садржи деструктивне инструкције или да инсталира злонамерни софтвер са root привилегијама. Стога је препоручљиво прегледати код, користити званичне изворе, проверити контролне суме и тестирати га у виртуелној машини или контејнеру пре него што га покренете у продукцији.
Такође постоји проблем са могућношћу праћења. Када користите `sudo`, систем евидентира команду, корисника који ју је издао и време до `/var/log/auth.log`, `/var/log/secure` или `journalctl` . Ако се директно пријавите као root, све се појављује као root и губите могућност да знате која је особа направила сваку промену. У окружењима са више администратора или ISO 27001, PCI DSS или другим стандардима ревизије, овај недостатак могућности праћења је значајна слабост.
Начини за добијање привилегија са терминала

Најчешћи и препоручени начин је да се испред одређене команде дода `sudo`. На пример, да бисте ажурирали пакете, поново покренули сервис или изменили заштићену датотеку, `sudo` ће тражити вашу корисничку лозинку, а не root лозинку, и након што вас аутентификује, извршиће команду са повећаним привилегијама. Ако је потребно да је покренете као други корисник, можете користити `sudo -u username command` . А ако схватите да сте заборавили да користите `sudo`, можете поновити последњу команду са `sudo!! `.
Када ћете обављати неколико административних задатака заредом, може бити згодно отворити привремену root шкољку. `sudo -i` симулира потпуно root пријављивање, учитава root окружење и смешта вас у почетни директоријум. `sudo su` или `sudo su -` такође раде, иако је `sudo -i` обично поузданији. Да бисте изашли из ове сесије, једноставно откуцајте `exit`. Није препоручљиво остављати root шкољку отворену без надзора.
Команда `su`, с друге стране, мења кориснике. `su - root` или једноставно `su -` такође усваја променљиве окружења циљног корисника, док `su root` или `su` без цртице задржава део претходног окружења. Ова разлика објашњава грешке попут `command not found`: административне команде се обично налазе у `/usr/local/sbin`, `/usr/sbin` и `/sbin`, путањама које се не појављују увек у PATH-у обичног корисника. Ако користите `su` без цртице, мораћете да унесете целу путању или да пређете на `su -` да бисте наследили коренски PATH.
Ако желите да омогућите лозинку за root-а, можете то учинити помоћу команде `sudo passwd root` . Ubuntu ово не обесхрабрује, али технички дозвољава root-у да има лозинку. Да бисте закључали налог, користите `sudo passwd -l root` , а да бисте га откључали, користите `sudo passwd -u root`. У SSH-у, директан root приступ контролише се помоћу `PermitRootLogin` у `/etc/ssh/sshd_config`. Најбезбедније је да га подесите на `no` или, највише, `prohibit-password` да бисте дозволили само SSH лозинке. Након тога, потребно је да поново покренете SSH сервис.
Прецизно конфигуришите џемпере
Датотека `/etc/sudoers` дефинише ко може да користи `sudo` и у коју сврху. Најбоље је да је не уређујете ручно; исправан приступ је коришћење `sudo visudo` , што закључава датотеку и проверава синтаксу пре чувања. Основно правило има облик `host user=(target_user)`. На пример, `bob ALL=(ALL) ALL` дозвољава `bob`-у да изврши било коју команду као root на било којој машини. Могу се користити и групе, као што је `%admin ALL=(ALL) ALL`.
Да би се доделиле прецизније дозволе, користе се алијаси. `User_Alias ADMINS = alice, bob` групише кориснике, а `Cmnd_Alias LOCATE = /usr/sbin/updatedb` групише команде. Затим се користи `ADMINS ALL = LOCATE` тако да ти корисници могу да извршавају само те команде. Алијаси попут `NETWORKING` могу се креирати за команде као што су `route`, `ifconfig`, `ping`, `iptables` итд. Ово примењује принцип најмањих привилегија без давања пуног root приступа било коме.
Опција NOPASSWD вам омогућава да покрећете одређене команде без лозинке, на пример, `pi ALL=(ALL)`. NOPASSWD: ALL. Ово је згодно, али опасно ако се злоупотреби. Штавише, свака употреба команде `sudo` се бележи, што помаже у ревизији приступа и решавању проблема. Ако нешто поквари, преглед ових дневника може указати која је недавна промена изазвала грешку.
Покретање графичких апликација као root из покретача

За програме са графичким интерфејсом, једноставно коришћење команде `sudo` обично не функционише добро јер нема терминала који би тражио лозинку. Ту долазе до изражаја графички помагачи . У KDE-у постоји `kdesu` : ако знате која команда покреће апликацију, можете покренути `kdesu that_command`. Опција `Run Command` у KDE менију вам такође омогућава да покренете апликацију као други корисник уносом његових акредитива. У GNOME и GTK окружењима , `gksu` и `gksudo` су били широко коришћени ; то су фронтенди за `sudo` или `su`. На пример, `gksu synaptic` или `gksudo gparted` отварају апликацију и траже лозинку.
У модерним системима, gksu се или не препоручује или је застарео. Његова уобичајена алтернатива је pkexec , заснован на PolicyKit-у, који омогућава програмима да се покрећу са привилегијама у складу са дефинисаним политикама. Многи тренутни лансери користе pkexec за административне задатке. Идеја је иста: корисник не мора да отвори терминал, већ систем проверава ауторизацију на контролисан начин.
Да бисте креирали пречицу у покретачу, уредите .desktop датотеку . Линија `Exec` је кључ. Ако желите да се покреће као root корисник, можете користити нешто попут `Exec=gksu /путања/до/програма`, `Exec=kdesu /путања/до/програма` или `Exec=pkexec /путања/до/програма`. Ако директно користите `sudo`, биће вам потребно да покретач има `Terminal=true` или да конфигуришете графичку пропусницу. Такође можете покушати да притиснете Alt+F2 и откуцате помоћну поруку и име програма, на пример, `gksu synaptic`. У KDE-у, `kdesu synaptic` или опција за покретање као други корисник обавља сличну функцију.
Постоји класична алтернатива која се зове consolehelper , омотач за GUI апликације. Креирате симболичку везу, на пример, /usr/bin/xterm-root која показује на /usr/sbin/consolehelper. Затим конфигуришете PAM креирањем /etc/pam.d/xterm-root са укључивањем auth, account и session из config-util. Затим дефинишете /etc/security/console.apps/xterm-root са USER=root и PROGRAM=/usr/bin/xterm. Када покренете xterm-root, consolehelper тражи PAM аутентификацију и покреће xterm као root. Ако наиђете на грешку „Xlib connection to :0.0 refused by server“ (Xlib веза са :0.0 одбијена од стране сервера), покретање xhost local:root би могло помоћи.
У сваком случају, отварање графичких апликација као root има недостатке: меша променљиве окружења, може да прекине сесијску магистралу, утиче на Wayland или X11 и креира датотеке у власништву root-а у вашем почетном директоријуму. Најбоље је да га користите само за одређене административне алате и да их затворите чим завршите. Немојте прегледавати интернет или отварати сумњиве документе као root , јер би сваки експлоит наследио пуне привилегије.
Уобичајени примери задатака који захтевају root приступ
Многе свакодневне операције захтевају повећане привилегије. Управљање пакетима помоћу apt, zypper, dnf или yum често захтева sudo. На пример, `sudo apt update` , `sudo apt install firefox` или `sudo zypper install docker-ce`. Исто важи и за системске сервисе: `sudo systemctl restart apache2`, `sudo systemctl restart ssh` или `sudo systemctl restart nginx`. Да бисте изменили корисничке налоге, користите `sudo usermod`, а да бисте променили власништво над датотекама, користите `sudo chown`. Уређивање критичних конфигурација, као што је `/etc/ssh/sshd_config`, такође захтева root привилегије ако се ради помоћу nano, vim или gedit.
Не треба вам `sudo` за команде које само читају информације или не мењају систем, као што су `zypper repos` или `systemctl status NetworkManager`. Коришћење `sudo` за све из навике је лоша пракса. Разумно је повећати привилегије само када задатак то захтева , а затим се што пре вратити на нормалног корисника.
Најбоље праксе при раду са повећаним привилегијама

Принцип најмањих привилегија треба да води све. Користите `sudo` за појединачне команде кад год је то могуће, избегавајте трајне root шкољке осим ако није апсолутно неопходно и изађите чим завршите. Не покрећите скрипте из непознатих извора као root; претходно прегледајте код, преузмите га из званичних репозиторијума или реномираних пројеката, проверите контролне суме и тестирајте у изолованом окружењу ако имате било какве сумње. Здрава доза скептицизма је врлина када се ради са кодом треће стране који има пуне привилегије.
Такође је препоручљиво да се sudo-ери конфигуришу грануларно, не ослањајући се искључиво на sudo групу за све, и да се воде евиденције. Ако администрирате сервере, проверите `/var/log/auth.log`, `/var/log/secure` или `journalctl -xe` да бисте открили злоупотребу. У окружењима са више корисника, знање ко је извршио сваку команду је кључно за одговорност и усклађеност са безбедносним прописима.
Омогућите и онемогућите root са главом
Ако одлучите да омогућите root приступ, доделите лозинку са `sudo passwd root`, користите је само за неопходне задатке, а затим поново закључајте налог. Да бисте онемогућили директно SSH пријављивање, уредите `sshd_config` и подесите `PermitRootLogin no` или `prohibit-password`, а затим поново покрените SSH. Да бисте локално закључали налог, користите `sudo passwd -l root`. Да бисте га откључали, користите `sudo passwd -u root`. Ове мере смањују површину напада и спречавају грубе нападе на најмоћнији налог.
У већини случајева, практичан одговор на почетно питање је да: можете покренути програм из покретача са root привилегијама користећи графички помоћник као што су kdesu, gksu, gksudo или pkexec, или креирањем .desktop датотеке одговарајућом командом. Међутим, ово није нешто што би требало да оставите подешено за било коју апликацију. Боље је имати посебне административне покретаче са јасним називима и користити их само када је то потребно.
Кључна ствар је да root није играчка и да sudo постоји управо да би вас оснажио, а да сваки клик не претвори у трајни ризик. Ако треба да покренете графичку апликацију као суперкорисник, дајте приоритет помоћним функцијама које захтевају лозинку, проверите да ли је апликацији заиста потребна и ограничите њену употребу на административне задатке. На овај начин, уживате у погодности покретача без жртвовања безбедности која чини Linux тако јаким.