Linux suid sgid sticky bit

Стандартные права (SUID, SGID, Sticky bit) в Unix/Linux

Стандартные права (SUID, SGID, Sticky bit) в Unix/Linux

Использование «sticky bit» прав в Unix/Linux

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

Установка Sticky Bit

Выставляем sticky bit на файл:

# chmod +t test_sticky_bit.txt
# ls -al test_sticky_bit.txt -rw-r--r-T 1 captain staff 0 Jul 28 12:04 test_sticky_bit.txt
  • — T — означает, что разрешения на выполнение отключены.
  • — t — означает, что права на выполнение включены.

Или можно еще использовать следующую команду:

# chmod 1777 test_sticky_bit.txt

Sticky bit, в основном используется в общих каталогах, таких как /var или /tmp, поскольку пользователи могут создавать файлы, читать и выполнять их, принадлежащие другим пользователям, но не могут удалять файлы, принадлежащие другим пользователям. Например, если пользователь (предположим bob) создает файл с именем /tmp/bob, то другой пользователь (допустим tom) не может удалить этот файл, даже если в каталоге /tmp есть разрешение 777. Если sticky bit не установлен, то tom юзер может удалить /tmp/bob, так как файл /tmp/bob наследует разрешения родительского каталога.

Использование SUID ( Set User ID) прав в Unix/Linux

setuid (сокращения от англ. set user ID upon execution — «установка ID пользователя во время выполнения) являются флагами прав доступа в Unix, которые разрешают пользователям запускать исполняемые файлы с правами владельца исполняемого файла. Иногда файлы требуют разрешения на выполнение для пользователей, которые не являются членами группы владельца, в этом случае вам потребуется предоставить специальные разрешения на выполнение. Когда SUID установлен, пользователь может запускать любую программу, такую как владелец программы.

Установка SUID бит на файл.

Если SUID бит установлен на файл и пользователь выполнил его. Процесс будет иметь те же права что и владелец файла.

Например: команда passwd имеет SUID bit. Когда обычный пользователь захочет изменит свой пароль в файле /etc/passwd или /etc/shadow, то у него ничего не получиться, т.к нужны права суперпользователя (процесс командны PASSWD всегда работает с правами суперюзера).

Читайте также:  Альт линукс 32 бит

Предположим, что я получил исполняемый файл «filename», и мне нужно установить SUID на этот файл, перейдите в командную строку и выпуск команду:

Теперь проверьте разрешения на файл с командой:

Наблюдайте за «s» буквой, которая была добавлена ​​для SUID бита:

-rwsr-xr-x 1 root root 8 Jun 8 10:10 filename

Чтобы выставить SUID для всех папок и файлов, используем:

# find /path_to_directory -type d -exec chmod u+s <> \;

Найти SUID файлы

Найти все SUID файлы для «root» пользователя:

# find / -user root -perm -4000 -print

Найти все SUID и SGID файлы:

# find / -perm -4000 -o -perm -2000 -print

Использование SGID ( Set Group ID ) прав в Unix/Linux

setgid (сокращения от англ. set group ID upon execution — «установка ID группы во время выполнения») являются флагами прав доступа в Unix, которые разрешают пользователям запускать исполняемые файлы с правами группы исполняемого файла.

Так же, как SUID , установив SGID бит для файла он устанавливает ваш идентификатор группы для группы файла в то время как файл выполняется. Это действительно полезно в случае когда у вас есть реальные установки в многопользовательском режиме где у пользователей есть доступ к файлом. В одной домашней категории я действительно не нашел использования для SGID. Но основная концепция является такой же, как и у SUID, файлы у которых SGID бит устанавливается, то они принадлежат к этой группе , а не к этому пользователю.

Установка бита SUID / SGID

Установка бита SUID / SGID

Если SGID бит установлен на любой каталог, все подкаталоги и файлы, созданные внутри получат те же пермишены что и группы в качестве основного каталога.

Устанавливаем SGID на директорию:

# chmod g+s /home/captain/test_dir
# chmod 2775 /home/captain/test_dir
# ls -ld /home/captain/test_dir drwxr-sr-x 2 captain staff 68 Jul 28 12:20 test_dir

Теперь, переключаемся на другого пользователя и создаем файл в папке /home/captain/test_dir:

# su - my_test_user $ cd /home/captain/test_dir $ touch test_file.txt

В приведенном выше примере test_file.txt создался с группой root.

Чтобы выставить SGID для всех папок и файлов, используем:

# find /path_to_directory -type d -exec chmod g+s <> \;

Найти SGID файлы

Найти все файлы с использованием SGID бита, для root пользователя:

# find / -group root -perm -2000 -print

Найти все SUID и SGID файлы:

# find / -perm -4000 -o -perm -2000 -print

Зачем нужены SUID и SGID?

Есть достаточно много программ и файлов, которые должны принадлежать пользователю root, и в то же время – простые пользователи должны иметь возможность выполнять его. Для примера – утилита passwd, которая находится в каталоге /usr/bin/passwd и которая имеет дело с файлом /etc/passwd, редактировать который может только пользователь root.

Читайте также:  Linux based android operating system

Команда chmod также может использоваться для установки или отмены следующих значений в качестве префикса для обычных трех числовых привилегий:

  • 0 — setuid, setgid, sticky bits не установлены.
  • 1 — Установить sticky bit.
  • 2 -Установить setgid bit.
  • 3 -Установить setgid и sticky bits.
  • 4 -Установить setuid bit.
  • 5 -Установить setuid и sticky bits.
  • 6 — Установить setuid и setgid bit-ы.
  • 7 — setuid, setgid, sticky bits активированы.

Тема «Стандартные права (SUID, SGID, Sticky bit) в Unix/Linux» завершена.

Источник

Использование SETUID, SETGID и Sticky bit для расширенной настройки прав доступа в операционных системах Linux

В этой статье мы расскажем, как использовать специальные биты разрешений в операционных системах Linux.
Речь пойдет о трех битах – Setuid, Setgid и Sticky Bit. Это специальные типы разрешений позволяют задавать расширенные права доступа на файлы или каталоги.
Статья будет полезна пользователям и администраторам, которые уже знакомы с настройкой базовых прав в операционных системах Linux. Итак, давайте преступим.

Коротко о правах доступа в Linux

В операционных системах Linux используются 3 базовых права доступа – на чтение (read), запись (write) и исполнение (execute). Соответственно, права назначаются пользователю (user), группе (group) и всем остальным (world). Рассмотрим их символьные обозначения:

В случае числового обозначения прав доступа используются цифры от 0 до 7, где каждая цифра соответствует определенному набору прав доступа:

Настройка Setuid

Setuid – это бит разрешения, который позволяет пользователю запускать исполняемый файл с правами владельца этого файла. Другими словами, использование этого бита позволяет нам поднять привилегии пользователя в случае, если это необходимо. Классический пример использования этого бита в операционной системе это команда sudo.

root@ruvds-hrc [~]# which sudo /usr/bin/sudo root@ruvds-hrc [~]# ls -l /usr/bin/sudo -rwsr-xr-x 1 root root 125308 Feb 20 14:15 /usr/bin/sudo

Как мы видим на месте, где обычно установлен классический бит x (на исполнение), у нас выставлен специальный бит s. Это позволяет обычному пользователю системы выполнять команды с повышенными привилегиями без необходимости входа в систему как root, разумеется зная пароль пользователя root.
Установка бита setuid не представляет сложности. Для этого используется команда:

Рассмотрим на примере. Создадим файл с именем myfile, а затем проверим его разрешения с помощью команды ls -l.

root@ruvds-hrc [~]# touch myfile root@ruvds-hrc [~]# ls -l myfile -rw-rw-r-- 1 test test 0 Mar 25 17:59 myfile

Как видим, файл не имеет разрешений на выполнение для пользователя, группы и остальных. Добавим бит setuid:

root@ruvds-hrc [~]# chmod u+s myfile root@ruvds-hrc [~]# ls -l myfile -rw-rw-r-- 1 test test 0 Mar 25 12:00 myfile

Обратим внимание, что вместо ожидаемой буквы «s», видим заглавную «S». Почему? Это случается, если setuid установлен, но сам владелец файла не имеет прав на его выполнение. Добавим это разрешение с помощью команды chmod u + x.

root@ruvds-hrc [~]# chmod u+x myfile root@ruvds-hrc [~]# ls -l total 0 -rwSrw-r-- 1 test test 0 Mar 25 12:59 myfile

Настройка Setgid

Принцип работы Setgid очень похож на setuid с отличием, что файл будет запускаться пользователем от имени группы, которая владеет файлом. Иллюстрирует работу этого бита команда crontab: .

root@ruvds-hrc [~]# which crontab /usr/bin/crontab root@ruvds-hrc [~]# ls -l /usr/bin/crontab -rwxr-sr-x 1 root crontab 34021 Feb 12 2017 /usr/bin/crontab

Теперь перейдем к настройке этого бита. Аналогично setuid, бит setgid выставляется с помощью команды chmod g + s .
Рассмотрим на примере создания нового файл с именем myfile2.

root@ruvds-hrc [~]# touch myfile2 root@ruvds-hrc [~]# ls -l myfile2 -rw-rw-r-- 1 test test 0 Mar 25 19:25 myfile2

Выполним команду chmod g + s и посмотрим результаты.

root@ruvds-hrc [~]# chmod g+s myfile2 root@ruvds-hrc [~]# ls -l myfile2 -rw-rwSr-- 1 test test 0 Mar 25 19:25 myfile2

Как разобрались выше, меняем заглавную « S » путем выдачи прав на исполнение группе-владельцу:

root@ruvds-hrc [~]# chmod g+x myfile2 root@ruvds-hrc [~]# ls -l total 0 -rwsrw-r-- 1 test test 0 Mar 25 19:25 myfile -rw-rwsr-- 1 test test 0 Mar 25 19:25 myfile2

Настройка Sticky Bit

Последний специальный бит разрешения – это Sticky Bit . В случае, если этот бит установлен для папки, то файлы в этой папке могут быть удалены только их владельцем. Пример использования этого бита в операционной системе это системная папка /tmp . Эта папка разрешена на запись любому пользователю, но удалять файлы в ней могут только пользователи, являющиеся владельцами этих файлов.

root@ruvds-hrc [~]# ls -ld /tmp drwxrwxrwt 8 root root 4096 Mar 25 10:22 /tmp

Символ «t» указывает, что на папку установлен Sticky Bit.

Читайте также:  Linux chmod 755 рекурсивно

Удаление специальных битов разрешений

Удаляем эти биты также командой chmod, только вместо « + » используем « – » .

root@ruvds-hrc[~]# chmod u-s myfile root@ruvds-hrc[~]# chmod g-s dir1 root@ruvds-hrc[~]# chmod -t dir2

Вывод

Мы разобрали что из себя представляют специальные биты разрешений Setuid, Setgid и Sticky bit в операционных системах Linux и как ими пользоваться на практике. Умение использовать эти биты позволит вам произвести более гибкую настройку прав доступа к ресурсам вашего сервера.

Источник

Оцените статью
Adblock
detector