ИТ Блог. Администрирование серверов на основе Linux (Ubuntu, Debian, CentOS, openSUSE)

Специальные разрешения для файлов в Linux. SUID, GUID и Sticky Bit

Права доступа к файлам и владение ими – основная и все же важная концепция безопасности в Linux. Вы, наверное, уже знакомы с этими условиями. Обычно это выглядит так:

Обычные права доступа к файлам

Обычные права доступа к файлам

 

Помимо этих обычных разрешений, есть несколько специальных разрешений для файлов, и не многие пользователи Linux знают об этом.

Специальные разрешения Linux: SUID, GUID и Sticky Bit

 

Чтобы начать говорить о специальных разрешениях, мы собираемся предположить, что у вас есть некоторые знания об основных правах доступа к файлам. Если нет, пожалуйста, прочитайте наше превосходное руководство, объясняющее разрешение файла Linux.

Теперь мы покажем вам некоторые специальные разрешения с новыми буквами в файловой системе Linux.

В этом примере команда passwd, отвечающая за изменение пароля пользователя, имеет букву s в том же месте, которое мы ожидаем увидеть, x или – для прав пользователя. Важно отметить, что этот файл принадлежит пользователю root и корневой группе.

 

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

 

Что такое SUID?

Когда бит SUID установлен для исполняемого файла, это означает, что файл будет выполняться с теми же разрешениями, что и владелец исполняемого файла.

Специальные разрешения для файлов в Linux. SUID, GUID и Sticky Bit

 

Давайте возьмем практический пример. Если вы посмотрите на двоичный исполняемый файл команды passwd, у него установлен бит SUID.

andreyex:~$ ls -l /usr/bin/passwd
-rwsr-xr-x 1 root root 59640 Mar 22  2019 /usr/bin/passwd

 

Это означает, что любой пользователь, выполняющий команду passwd, будет запускать ее с теми же правами, что и root.

В чем выгода? Команде passwd необходимо отредактировать файлы, такие как /etc/passwd, /etc/shadow, чтобы изменить пароль. Эти файлы принадлежат пользователю root и могут быть изменены только пользователем root. Но благодаря флагу setuid (бит SUID) обычный пользователь также сможет изменять эти файлы (принадлежащие пользователю root) и менять свой пароль.

По этой причине вы можете использовать команду passwd для изменения собственного пароля, несмотря на тот факт, что файлы, которые изменяет эта команда, принадлежат пользователю root.

 

Теперь, когда вы понимаете концепцию SUID, давайте посмотрим, как установить бит SUID.

Как установить бит SUID?

Я нахожу символический способ проще при установке бита SUID. Вы можете использовать команду chmod следующим образом:

chmod u+s file_name

 

Вот пример:

andreyex:~$ ls -l test.txt
-rwxrw-rw- 1 andreyex andreyex 0 Apr 12 17:51 test.txt
andreyex:~$ chmod u+s test.txt
andreyex:~$ ls -l test.txt
-rwsrw-rw- 1 andreyex andreyex 0 Apr 12 17:52 test.txt

 

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

andreyex:~$ ls -l test2.txt
-rwxrw-rw- 1 andreyex andreyex 0 Apr 12 17:53 test2.txt
andreyex:~$ chmod 4766 test2.txt
andreyex:~$ ls -l test2.txt
-rwsrw-rw- 1 andreyex andreyex 0 Apr 12 17:54 test2.txt

Как удалить SUID?

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

chmod u-s test.txt

 

Или используйте числовой способ с 0 вместо 4 с разрешениями, которые вы хотите установить:

chmod 0766 test2.txt

Как найти все файлы с установленным SUID?

Если вы хотите искать файлы с этим разрешением, используйте команду find в терминале с параметром -perm.

find / -perm /4000
Специальные разрешения для файлов в Linux. SUID, GUID и Sticky Bit_1

 

Структура каталогов Linux объяснена для начинающих

Это руководство объясняет структуру каталогов Linux. Вы изучите иерархию файловой системы Linux вместе с назначением различных каталогов в системе Linux.

 

Что такое SGID?

SGID похож на SUID. С установленным битом SGID любой пользователь, выполняющий файл, будет иметь те же права, что и владелец группы файла.

Это преимущество в обращении с каталогом. Когда разрешение SGID применяется к каталогу, все подкаталоги и файлы, созданные в этом каталоге, получат то же владение группой, что и основной каталог (а не владение группой пользователя, создавшего файлы и каталоги).

Специальные разрешения для файлов в Linux. SUID, GUID и Sticky Bit_2

 

Откройте свой терминал и проверьте разрешение на файл /var/local:

andreyex:~$ ls -ld /var/local
drwxrwsr-x 1 root staff 512 Apr 24  2018 /var/local

 

Эта папка /var/local содержит букву ‘s’ в том же месте, где вы ожидаете увидеть ‘x’ или ‘-‘ для групповых разрешений.

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

 

Как установить SGID?

Вы можете установить бит SGID в символическом режиме следующим образом:

chmod g+s directory_name

 

Вот пример:

andreyex:~$ ls -ld folder/
drwxrwxr-x 2 andreyex andreyex 4096 Apr 15 13:21 folder/
andreyex:~$ chmod g+s folder
andreyex:~$ ls -ld folder/
drwxrwsr-x 2 andreyex andreyex 4096 Apr 15 13:21 folder/

 

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

andreyex:~$ ls -ld folder2/
drwxrwxr-x 2 andreyex andreyex 4096 Apr 15 13:22 folder2/
andreyex:~$ chmod 2775 folder2
andreyex:~$ ls -ld folder2/
drwxrwsr-x 2 andreyex andreyex 4096 Apr 15 13:22 folder2/

 

Как убрать бит SGID?

Просто используйте -s вместо + s следующим образом:

chmod g-s folder

 

Удаление SGID – это то же самое, что удаление SGID. Используйте дополнительные 0 перед разрешениями, которые вы хотите установить:

chmod 0755 folder

 

Как найти файлы с установленным SGID в Linux

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

find . -perm /2000

 

Что такое Sticky Bit?

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

Что такое Sticky Bit

 

Обычно это используется в каталоге /tmp, который работает как корзина временных файлов.

andreyex:~$ ls -ld /tmp
drwxrwxrwt 1 root root 512 Apr 12 13:24 /tmp

 

Как видите, папка /tmp имеет букву t в том же месте, где мы ожидаем увидеть x или – для других разрешений. Это означает, что пользователь (кроме root) не может удалить временные файлы, созданные другими пользователями в каталоге /tmp.

 

Как установить липкий бит?

Как всегда, вы можете использовать как символьный, так и числовой режим, чтобы установить бит закрепления в Linux.

chmod +t my_dir

 

Вот пример:

andreyex:~$ ls -ld my_dir/
drwxrwxr-x 2 andreyex andreyex 4096 Apr 15 13:54 my_dir/
andreyex:~$ chmod +t my_dir/
andreyex:~$ ls -ld my_dir/
drwxrwxr-t 2 andreyex andreyex 4096 Apr 15 13:54 my_dir/

 

Числовой способ – добавить четвертую цифру к обычным разрешениям. Восьмеричное число, используемое для закрепленного бита, всегда равно 1.

andreyex:~$ ls -ld my_dir/
drwxrwxr-x 2 andreyex andreyex 4096 Apr 15 13:55 my_dir/
andreyex:~$ chmod 1775 tmp2/
andreyex:~$ ls -ld tmp2/
drwxrwxr-t 2 andreyex andreyex 4096 Apr 15 13:55 my_dir/

 

Как удалить липкий бит:

Вы можете использовать символический режим:

chmod -t my_dir

 

Или числовой режим с 0 до обычных разрешений:

chmod 0775 tmp2

 

Как найти файлы с установленным битом в Linux

Эта команда вернет все файлы / каталоги с установленным битом:

andreyex:~$ find . -perm /1000

 

Если каталог не имеет разрешения на выполнение для всех, установка залипшего бита приведет к отображению T вместо t. Указание на то, что с липким битом все не совсем правильно.

 

Вывод

Мы добавили сюда эту картинку, чтобы вспомнить, что вы только что узнали:

Как найти файлы с установленным битом в Linux

 

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

Мы надеемся, что эта статья дала вам хорошее понимание SUID, GUID и Sticky Bit в Linux. Если у вас есть вопросы или предложения, пожалуйста, оставьте комментарий ниже.

Exit mobile version