- Стандартные права (SUID, SGID, Sticky bit) в Unix/Linux
- Стандартные права (SUID, SGID, Sticky bit) в Unix/Linux
- Использование «sticky bit» прав в Unix/Linux
- Использование SUID ( Set User ID) прав в Unix/Linux
- Использование SGID ( Set Group ID ) прав в Unix/Linux
- Использование SETUID, SETGID и Sticky bit для расширенной настройки прав доступа в операционных системах Linux
- Коротко о правах доступа в Linux
- Настройка Setuid
- Настройка Setgid
- Настройка 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 всегда работает с правами суперюзера).
Предположим, что я получил исполняемый файл «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
Если 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.
Команда 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.
Удаление специальных битов разрешений
Удаляем эти биты также командой 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 и как ими пользоваться на практике. Умение использовать эти биты позволит вам произвести более гибкую настройку прав доступа к ресурсам вашего сервера.