Posts tagged ‘sticky bit’

Какво са SUID, SGID и Sticky Bits?

В Линукс има някой специални атрибути свързани с файлове. Често в X Windows, когато проверявате свойствата на файл, се виждат три специални атрибута освен обикновените read/write/execute права за owner/group/others . Тези три атрибута са  наричат SUID, SGID и Sticky Bit.

Sticky Bit

Нека да започнем с Sticky bit, понеже е най-лесно да се обясни. Този атрибут казва на Линукс операционната система, че веднъж изпълнена програмата с този бит вдигнат трябва да остане в паметта. Линукс е многопотребителска операционна система и е предвидена да може да се ползва от много потребители в едно и също време. Логиката за съществуването на този атрибут е, че след като е в паметта стартирането на програмата отнема по-малко време, отколкото ако не е. Следователно след като един потребител е ползвал програмата веднъж този, който я ползва след него не трябва да чака програмата да се зареждан наново. Това е било много полезно преди време, когато времето за достъп до диска е било доста бавно.  Днес обаче това е излязло от употреба, тъй като времето за стартиране на програма в паметта е малко. Затова sticky bit има много малко значение. Sticky bit има смисъл само при изпълнимите файлове.
SUID (Set User ID) Bit

Понякога може да имате проблеми със стартирането на програма, която изисква да е ‘SUID root’ . SUID е съкращение от Set User ID. Това означава, че ако SUID бита е вдигнат за някоя програма, то тя ще се изпълни с привилегиите на друг потребител, а не с тези на вашия. Това означава, че ако имам програма, която принадлежи на потребителя ‘root’  и има вдигнат SUID бит, тогава когато пусна тази програма като нормален потребител, тази програма ще се стартира все едно я е пуснал ‘root’ потребителя. В случай, че сте разбрали горното, не се ли питате на е ли това голям риск за сигурността ? Ако потребителите могат да изпълняват програми като ‘root’ потребителя това би било голям риск за сигурността.  Всъщност обаче SUID се използва за да се повиши сигурността. Идеята за SUID е, че вие като ‘root’  потребителя може да позволите на определени програми или скриптове да работят все едно ‘root’ потребителя ги е пуснал. Вие би трябвало да знаете какво точно правят тези програми. Потребителите, които изпълняват тези програми ще могат да ги изпълняват но те ще правят само това, за което са написани. Например ако един скрипт копира пет файла от едно място на друго, потребителя, който го ползва трябва да може да копира само пет файла от едно място на друго. Той не би могъл да променя скрипта, ако няма достъп за писане по него.  По този начин обикновените потребители ще могат да правят разни работи, които са достъпни само за ‘root’  потребителя. По-важното е, че потребителите не трябва да знаят  ‘root’ паролата.

Важно: Премислете преди да вдигнете SUID бита за скриптове, които приемат аргументи от командния ред, понеже никога не знаете параметрите, които биват предадени на скрипта.

SGID (Set Group ID) bit

Също като SUID, вдигането на SGID бита за файл изпълнява файла като като групата, на която е файла. Наистина е много удобно като имате машина, на която всеки потребител има достъп до файловете на другите потребители. Главната идея е същата като тази на SUID бита, файловете с вдигнат SGID бит се използват от потребителя. които ползва файла, принадлежи към тази група.

Забележка : Да направим SUID и SGID програмите безопасни е много трудно или може би невъзможно, затова е добре да се внимава много при използването им на важни машини. Ако ги ползвате на домашната си машина могат да в ипомогнат да свършите доста работа без да се налага да се логвате като ‘root’  потребителя постоянно.

Possibly Related Posts: