Како користити СУИД, СГИД и Стицки Битс на Линук-у

СУИД, СГИД и Стицки Битс су моћне специјалне дозволе које можете поставити за извршне датотеке и директоријуме на Линук-у. Поделићемо предности – и потенцијалне замке – њиховог коришћења.

Већ су у употреби

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

На Линук-у, сачуване лозинке су заштићене на два начина: шифроване су и само неко са роот привилегијама може да приступи датотеци која садржи лозинке. То би могло звучати у реду, али представља недоумицу: ако само људи са роот привилегијама могу да приступе сачуваним лозинкама, како они који немају тај приступ мењају своје лозинке?

Подизање вашег статуса

Обично се Линук команде и програми покрећу са истим скупом дозвола као и особа која покреће програм. Када роот покрене команду пассвд да промените лозинку, ради са роот-овим дозволама. То значи да команда пассвд може слободно да приступи сачуваним лозинкама у датотеци /етц/схадов.

Оно што би било идеално је шема у којој би свако у систему могао да покрене програм пассвд, али да програм пассвд задржи повишене привилегије роот-а. Ово би омогућило било коме да промени сопствену лозинку.

Горњи сценарио је управо оно што ради Сет Усер ИД бит (СУИД). То покреће програме и команде са дозволама власника датотеке, а не са дозволама особе која покреће програм.

Ви подижете статус програма

Међутим, постоји још једна дилема. Особа мора бити спречена да се меша са туђом лозинком. Линук укључује СУИД шему која му омогућава да покреће апликације са скупом привремено позајмљених дозвола—али то је само половина безбедносне приче.

Контролни механизам који спречава некога да ради са лозинком друге особе садржан је у програму пассвд, а не у оперативном систему и СУИД шеми.

Програми који се покрећу са повишеним привилегијама могу представљати безбедносне ризике ако нису креирани са начином размишљања „сигурност по дизајну“. То значи да је сигурност прва ствар коју узмете у обзир, а затим градите на томе. Немојте писати свој програм, а затим покушавајте да му дате заштитни слој.

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

  Како направити ОЦР из Линук командне линије користећи Тессерацт

Ово је код који открива да ли је неко роот.

Исечак изворног кода из

Следи пример у коме је то узето у обзир. Пошто роот може да промени било коју лозинку, програм не мора да се мучи са проверама које обично обавља да би видео које лозинке особа има промену дозволе. Дакле, за роот, то прескаче те провере и излази из функције провере.

Исечак изворног кода из

Са основним Линук командама и услужним програмима, можете бити сигурни да су у њих уграђена сигурност и да је код прегледан много пута. Наравно, увек постоји претња од још непознатих експлоата. Међутим, брзо се појављују закрпе или ажурирања како би се супротставили свим новоидентификованим рањивостима.

То је софтвер треће стране – посебно онај који није отвореног кода – са којим морате бити изузетно опрезни када користите СУИД. Не кажемо да то не радите, али, ако радите, желите да будете сигурни да то неће изложити ваш систем ризику. Не желите да подижете привилегије програма који неће правилно самостално управљати собом и особом која га покреће.

Линук команде које користе СУИД

Следе неке од Линук команди које користе СУИД бит да би команди дале повишене привилегије када је изводи обичан корисник:

ls -l /bin/su
ls -l /bin/ping
ls -l /bin/mount
ls -l /bin/umount
ls -l /usr/bin/passwd

Имајте на уму да су имена датотека означена црвеном бојом, што указује да је СУИД бит постављен.

Дозволе за датотеку или директоријум обично су представљене са три групе од три знака: рвк. Ово означава читање, писање и извршавање. Ако су писма присутна, та дозвола је дата. Међутим, ако је цртица (-) уместо слова присутна, та дозвола није дата.

Постоје три групе ових дозвола (с лева на десно): оне за власника датотеке, за чланове групе датотеке и за остале. Када је СУИД бит постављен на датотеци, „с“ представља дозволу за извршење власника.

Ако је СУИД бит постављен на датотеку која нема извршне могућности, велико „С“ означава ово.

Погледаћемо пример. Редовни корисник даве откуцава команду пассвд:

passwd

Тхе

Команда пассвд тражи од Даве-а његову нову лозинку. Можемо користити команду пс да видите детаље покренутих процеса.

Користићемо пс са греп у другом прозору терминала и потражите пассвд процес. Такође ћемо користити опције -е (сваки процес) и -ф (пун формат) са пс.

Укуцавамо следећу команду:

ps -e -f | grep passwd

Тхе

Пријављене су две линије, од којих је друга греп процес који тражи команде са стрингом „пассвд“ у њима. Међутим, то је прва линија која нас занима, јер је то она за пассвд процес који је Даве покренуо.

Видимо да процес пассвд ради исто као да га је покренуо роот.

Постављање бита СУИД

Лако је променити СУИД бит помоћу цхмод-а. Симболични режим у+с поставља СУИД бит, а УС симболички режим брише СУИД бит.

  Најбоље алтернативе за Мац апликације за Линук

Да бисмо илустровали неке од концепата СУИД бита, направили смо мали програм под називом хтг. Налази се у основном директоријуму даве корисника и нема подешен СУИД бит. Када се изврши, приказује стварне и ефективне корисничке ИД-ове (УИД).

Стварни УИД припада особи која је покренула програм. Ефективни ИД је налог са којим се програм понаша као да је покренут.

Укуцавамо следеће:

ls -lh htg
./htg

Тхе

Када покренемо локалну копију програма, видимо да су стварни и ефективни ИД-и постављени на даве. Дакле, понаша се баш онако како би нормалан програм требао.

Копирајмо га у /уср/лоцал/бин директоријум како би други могли да га користе.

Откуцавамо следеће, користећи цхмод да поставимо СУИД бит, а затим проверавамо да ли је подешен:

sudo cp htg /usr/local/bin
sudo chmod u+s /usr/local/bin/htg
ls -hl /usr/local/bin/htg

Тхе

Дакле, програм је копиран, а СУИД бит је постављен. Поново ћемо га покренути, али овог пута ћемо покренути копију у директоријуму /уср/лоцал/бин:

htg

Тхе

Иако је Даве покренуо програм, ефективни ИД је постављен на роот корисника. Дакле, ако Марија покрене програм, дешава се иста ствар, као што је приказано у наставку:

htg

Тхе

Прави ИД је Мари, а ефективни ИД је роот. Програм ради са дозволама роот корисника.

Бит СГИД

Бит Сет Гроуп ИД (СГИД) је веома сличан СУИД биту. Када је СГИД бит постављен на извршну датотеку, ефективна група се поставља на групу датотеке. Процес се покреће са дозволама чланова групе датотеке, а не са дозволама особе која га је покренула.

Ми смо подесили наш хтг програм тако да показује и ефективну групу. Променићемо групу хтг програма да буде подразумевана група корисника Мари, Мари. Такође ћемо користити ус и г+с симболичке режиме са цховном да уклонимо СУИД бит и поставимо СГИД.

Да бисмо то урадили, откуцавамо следеће:

sudo chown root:mary /usr/local/bin/htg
sudo chmod u-s,g+s /usr/local/bin/htg
ls -lh /usr/local/bin/htg

Тхе

Можете видети СГИД бит означен са „с“ у групним дозволама. Такође, имајте на уму да је група подешена на мари и име датотеке је сада истакнуто жутом бојом.

Пре него што покренемо програм, хајде да установимо којој групи припадају Дејв и Мери. Користићемо команду ид са опцијом -Г (групе), да одштампате све ИД групе. Затим ћемо покренути хтг програм као даве.

Укуцавамо следеће команде:

id -G dave
id -G mary
htg

Тхе

ИД подразумеване групе за мари је 1001, а ефективна група хтг програма је 1001. Дакле, иако ју је покренуо Дејв, она ради са дозволама чланова групе Мари. То је исто као да се Даве придружио Мари групи.

Хајде да применимо СГИД бит на директоријум. Прво ћемо креирати директоријум под називом „рад“, а затим променити његову групу у „геек“. Затим ћемо поставити СГИД бит у директоријум.

  Како инсталирати претраживач Сурф на Линук-у

Када користимо лс да проверимо подешавања директоријума, такође ћемо користити опцију -д (директориј) тако да видимо детаље директоријума, а не његов садржај.

Укуцавамо следеће команде:

sudo mkdir work
sudo chown dave:geek work
sudo chmod g+s work
ls -lh -d work

Тхе

СГИД бит и „штреберска“ група су подешени. Ово ће утицати на све ставке креиране у радном директоријуму.

Укуцавамо следеће да бисмо ушли у радни директоријум, креирали директоријум под називом „демо“ и проверавали његова својства:

cd work
mkdir demo
ls -lh -d demo

Тхе

СГИД бит и група „геек” се аутоматски примењују на „демо” директоријум.

Хајде да откуцамо следеће да креирамо датотеку са додирнути команду и проверите њена својства:

touch useful.sh
ls -lh useful.sh

Тхе

Група нове датотеке је аутоматски подешена на „геек“.

Тхе Стицки Бит

Лепљиви комад је добио име по својој историјској намени. Када је постављен на извршну датотеку, оперативни систем је означио да делови текста извршне датотеке треба да се држе у размени, што чини њихову поновну употребу бржом. На Линук-у, лепљиви бит утиче само на директоријум — постављање на датотеку не би имало смисла.

Када поставите лепљиви бит на директоријум, људи могу да бришу само датотеке које им припадају унутар тог директоријума. Они не могу да бришу датотеке које припадају неком другом, без обзира на то која комбинација дозвола за датотеке је постављена за датотеке.

Ово вам омогућава да креирате директоријум који сви – и процеси које покрећу – могу да користе као дељено складиште датотека. Фајлови су заштићени јер, опет, нико не може да обрише туђе датотеке.

Хајде да направимо директоријум под називом „дељено“. Користићемо симболички режим о+т са цхмод-ом да поставимо лепљиви бит у том директоријуму. Затим ћемо погледати дозволе за тај директоријум, као и директоријуме /тмп и /вар/тмп.

Укуцавамо следеће команде:

mkdir shared
sudo chmod o+t shared
ls -lh -d shared
ls -lh -d /tmp
ls -lh -d /var/tmp

Тхе

Ако је лепљиви бит постављен, извршни бит „другог“ скупа дозвола за фајлове је постављен на „т“. Назив датотеке је такође истакнут плавом бојом.

Фасцикле /тмп и /вар/тмп су два примера директоријума који имају све дозволе за фајлове постављене за власника, групу и друге (зато су означени зеленом бојом). Користе се као дељене локације за привремене датотеке.

Са тим дозволама, свако би, теоретски, требало да буде у могућности да уради било шта. Међутим, лепљиви бит их превазилази и нико не може да избрише датотеку која му не припада.

Подсетници

Следи кратка контролна листа онога што смо покрили изнад за будућу употребу:

СУИД ради само на датотекама.
Можете применити СГИД на директоријуме и датотеке.
Лепљиви бит можете применити само на директоријуме.
Ако се индикатори „с“, „г“ или „т“ појављују великим словима, извршни бит (к) није постављен.