Каква е магията?
Да вземем например числото 777. То дава абсолютни права за достъп до файл или директория. Да го изразим със символи:
-rwxrwxwvx
Да разделим на групи:
rwx rwx rwx
За да превърнем в двоичен вид, правим следното: ако има символ- пишем 1, ако няма- пишем 0. В двоичен вид числото 777 ще има вида:
111 111 111
Да превърнем двоичното число в осмично. За целта, разделяме двоичното число на групи по три бита, като започваме деленето от дясно на ляво, след което записваме осмичния еквивалент за всяка група.
![]() |
От двоична в осмична бройна система (и обратно) |
0- няма поставени SUID, SGID или Sticky Bit;
7- собственика на файла има пълни права над него (чете, пише, изпълнява);
7- групата има пълни права над файла;
7- всички останали имат пълни права над файла.
Какво е SUID?
Други команди на които може да се постави SUID са ping и crontab.
Как можем да поставим SUID на файл?
Съществуват два начина за поставяне на SUID на файл: единият чрез символи, а другият е чрез число (4).
Създайте файл date.txt и го качете на сървъра.
Командите, с които можете да поставите SUID на файла са:
chmod u+s [път до файла date.txt]
с която SUID бита се поставя чрез +s;
или
chmod 4750 [път до файла date.txt]
с която SUID бита се поставя чрез цифрата на числото 4.
С командата ls -l можем да проверим дали сме поставили SUID бит.

Внимавайте с поставянето на SUID на скрипт, защото може да бъде използван от злонамерени потребители.
Kakво е SGID?
SGID (идва от Set Group ID) е специален тип право на достъп до файл или папка. Обикновено в Линукс, когато програмата стартира, тя наследява правата за достъп от логналия се в системата потребител. SGID дава временни права на потребителя, за да стартира програма или файл с правата на групата, на която принадлежи файла, за да стане член на тази група и да изпълни файла. С други думи, потребителят ще получи позволенията на групата, когато изпълнява файл, програма, команда или отваря папка.
Как да поставим SGID на файл?Начините са два: чрез символи или чрез число.
За да поставим SGID(+s) на групата, собственик на файла, в терминала въвеждаме:
chmod g+s date.txt
Другият начин е:
chmod 2750 date.txt
където
2- показва, че е поставен SGID бит;
7- пълни права над файла за собственика;
5- права за четене и изпълнение за групата;
0- всички останали са без права над този файл.
Как да проверим дали на файла е поставен SGID бит?
За да проверим дали е поставен SGID бит на файла date.txt, ползваме командата ls -l:

За да премахнем SGID бита, в терминала въвеждаме:
chmod g-s date.txt
find / -type f -perm /4000
или
find / -type f -perm /4000
или
find / -type f -perm /6000
Какво е Sticky бит?
За да поставим Sticky бит на файла date.txt:
- Влизаме в директорията, в която сме съхранили файла.
- Проверяваме правата за достъп до файла с помощта на командата ls -l.
- Задаваме Sticky бит на файла с командата chmod.
- Проверяваме правата за достъп до файла с ls -l.

Обърнете внимание на предпоследния ред, където са показани правата за достъп до файла date.txt. Sticky бита е главна буква Т. Защо главна, а не малка? Когато Sticky бита е главна буква Т, това означава, че обикновеният потребител (не суперпотребителя, нито член на групата, на която принадлежи файлът) не е имал права за изпълнение на файла (това се вижда от третия ред (-rwxr-x---)) преди да се назначи този бит. Ако желанието ни е всички останали потребители да притежават права за изпълнение на файла, тогава с помощта на командата chmod даваме съответните привилегии:

Sticky бита вече е малка буквичка t, което означава, че обикновеният потребител вече има права за изпълнение на файла. Отнемаме ги отново с командата chmod и Sticky бита отново е главна буква Т:

Премахването на Sticky бита става така:
chmod -t date.txt

|
Няма коментари:
Публикуване на коментар