Найти тему
Игорь Сотников

ВЛАДЕЛЬЦЫ ФАЙЛОВ И ПАПОК В LINUX. Часть 4.

SUID, SGID, STICKY

Рассмотрим оставшийся вопрос. Зачем нужны suid, sgid и sticky, биты и их установка.

  • Suid – устанавливается для файлов.
  • Sgid – устанавливается для файлов и для папок
  • Sticky – устанавливается для папок.

У них у всех есть цифровые значения. Их можно назначать точно так же, как и права, можно назначать через rwx или цифирные сочетания, а также т.к есть цифирные обозначения их можно комбинировать. Если мы установили 6 то мы установили suid и sgid. Этот бит через цифры ставится, точно так же, как и права, только ставим дополнительную цифру перед цифрами, означающими права.

Так же эти биты можно ставить, через буквы:

  • Chmod u+s script - установка suid
  • Chmod g+s script - установка sgid
  • Chmod o+t script - установка sticky

Как мы видим suid добавляется к правам владельца, sguid прибавляется к правам группы владельца. Sticky добавляется к правам всем остальным.

-2

-3

Как мы видим создан файл script.run с правами 755 и папка TestFolder 755. Установим suid бит на файл script.run. В настоящее время данный файл может выполнить любой человек. Изменим права на 770 - sudo chmod 770 script.run. Переключимся под пользователя, который не входит в группу siadmin. Например, пользователь su petya. Можно конечно добавить права пользователю petya, но иногда нужно, чтобы файлик запустился из-под Владельца файла. Даже если будут стоять разрешение на запуск данного файла и будет стоять suid, то файл запуститься из под Владельца.

Устанавливаем sudo chmod u+s script.run и видим, во-первых, теперь у нас файлик подкрашен красным, данное выделение делает оболочка. Во-вторых, когда мы смотрим права, то видим x заменился на s. И теперь, кто бы не запускал файл, он всегда будет запускать от имени Владельца.

-4

Можно подробнее посмотреть через команду stat script.run, которая показывает полную статистику по файлу.

-5

Мы можем увидеть, что права стали теперь 4770. Вот эта самая цифра 4 впереди и говорит, что установлен suid бит. Мы аналогично можем убрать suid бит sudo chmod u-s script.run. Все вернулось на свои места.

Для чего это нужно, есть некоторые программы которым необходим доступ к аппаратной части. Например ping, который проверяет связь, ему нужен доступ к сетевой карте. По умолчанию права на ping есть только у root, но если мы хотим чтобы все пользователи могли использовать данную утилиту, то мы должны разрешить ее запуск от имени root. Фактически та же самая функция, как и в операционной системе Windows запустить от пользователя. Аналогичным образом работает и sgid, если нам необходимо запускать от группы владельца, то устанавливаем этот бит и можем пользоваться - sudo chmod g+s script.run.

-6

Результат наших действий подсвечен желтым.

Можно одновременно оба бита установить, следовательно, при выполнении будет и владелец заменен и группа заменена. Это имеет смысл делать, только для исполняемых файлов. Устанавливать на обычный текстовый файл данные биты, смысла конечно же нет.

Очень редко, когда применяю оба бита сразу, такое сочетание необходимо если уж сильно кто-то заморачивается с безопасностью или требуется ювелирная настройка прав доступа и запуска.

Теперь посмотрим, что с папкой происходит. На папку можно устанавливать sgid и sticky биты. Если мы устанавливаем групповой бит, то он для папок будет менять владельцев всех вложенных файлов на группу владельцев этой папки, т.е это один из вариантов наследования.

Создадим файл от пользователя siadmin. Touch file.txt в текущей папки он создается со стандартными правами. Установим sgid на папку TestFolder - Sudo chmod g+s TestFolder.

Создадим в ней такой же файл sudo touch TestFolder/file.txt

-7

Как мы видим группа осталась прежней. Если пользователю root сказать создать файл в текущем каталоге, то владелец и группа будут root.

Теперь про sticky бит. Если установлен sticky бит на папку, то только Владелец данной папки или суперпользователь может удалить из нее файлы.

Создадим папку Folder, поставим на нее максимальные права 777. И внутри создадим файл file.txt.

-8

Файлик с правами по умолчанию. Поменяем права на данный фал 666. Права на чтение и запись появились теперь у всех. Переключимся на другого пользователя, например, petya. Перейдем в домашний каталог пользователя siadmin - cd /home/siadmin/Folder. Внутри файл txt, который мы создавали. И удаляем rm file.txt. Файл удалился без проблем. Допустим мы хотим защитить от удаления, следовательно, необходимо установить sticky бит - sudo chmod o+t Folder

-9

Как видим появилась буква t на месте прав для всех остальных. Создадим еще раз файл touch file1.txt. Даем на данный файл всем права 666. А далее перелогиниваемся под petya. Заходим в папку /home/siadmin/Folder и командой rm file1.txt пытаемся удалить, на что получаем отказ от системы. Несмотря на права 666, система не дает удалить файл. Следовательно, удалить все вложенные объекты может либо root или Владелец папки.

-10

Если у кого появится желание пообщаться или для сотрудничества, мой ТГ канал https://t.me/ITharchevnya

Если у кого есть желание сказать спасибо за канал или статьи :

Сбер : 4274 3200 2419 9740

Paypal: is.sotnikov@gmail.com

QIWI: KNEYE561

Юmoney ( ЯД ) 410016062893453