- Команда Chmod в Linux (права доступа к файлам)
- Разрешения для файлов Linux
- Использование chmod
- Символьный (текстовый) метод
- Числовой метод
- Использование справочного файла
- Рекурсивно изменить права доступа к файлу
- Работа с символическими ссылками
- Массовое изменение прав доступа к файлам
- Выводы
- ИТ База знаний
- Полезно
- Навигация
- Серверные решения
- Телефония
- Корпоративные сети
- Владельцы файлов и папок в Linux
- Права доступа
- Маска создания файлов и папок
- Suid, sgid, sticky
Команда Chmod в Linux (права доступа к файлам)
В Linux управление доступом к файлам осуществляется с помощью разрешений, атрибутов и владельцев файлов. Это гарантирует, что только авторизованные пользователи и процессы могут получить доступ к файлам и каталогам.
В этом руководстве рассказывается, как использовать команду chmod для изменения прав доступа к файлам и каталогам.
Разрешения для файлов Linux
Прежде чем идти дальше, давайте объясним базовую модель разрешений Linux.
В Linux каждый файл связан с владельцем и группой и имеет права доступа для трех разных классов пользователей:
- Владелец файла.
- Члены группы.
- Остальные (все остальные).
Владение файлом можно изменить с помощью команд chown и chgrp .
К каждому классу применяются три типа прав доступа к файлам:
- Разрешение на чтение.
- Разрешение на запись.
- Разрешение на выполнение.
Эта концепция позволяет указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл.
Права доступа к файлам можно просмотреть с помощью команды ls :
Первый символ показывает тип файла. Это может быть обычный файл ( — ), каталог ( d ), символическая ссылка ( l ) или любой другой специальный тип файла.
Следующие девять символов представляют права доступа к файлу, три тройки по три символа каждая. Первый триплет показывает разрешения владельца, второй — разрешения группы, а последний триплет — разрешения для всех остальных. Разрешения могут иметь разное значение в зависимости от типа файла.
В приведенном выше примере ( rw-r—r— ) означает, что владелец файла имеет разрешения на чтение и запись ( rw- ), а группа и другие пользователи имеют разрешения только на чтение ( r— ).
Каждый из трех троек разрешений может состоять из следующих символов и иметь различные эффекты, в зависимости от того, установлены ли они для файла или для каталога:
Влияние разрешений на файлы
Разрешение | символ | Значение в файле |
---|---|---|
Читать | — | Файл не читается. Вы не можете просмотреть содержимое файла. |
r | Файл доступен для чтения. | |
Написать | — | Файл нельзя изменить или модифицировать. |
w | Файл можно изменить или модифицировать. | |
Выполнить | — | Файл не может быть выполнен. |
x | Файл можно запустить. | |
s | Если он найден в user триплете, он устанавливает бит setuid . Если он находится в тройке group , он устанавливает бит setgid . Это также означает, что установлен флаг x . Когда для исполняемого файла setgid флаги setuid или setgid , файл выполняется с правами владельца и / или группы. | |
S | То же, что и s но флаг x не установлен. Этот флаг редко используется для файлов. | |
t | Если он обнаружен в others триплетах, он устанавливает бит sticky . Это также означает, что установлен флаг x . Этот флаг бесполезен для файлов. | |
T | То же, что и t но флаг x не установлен. Этот флаг бесполезен для файлов. |
Влияние разрешений на каталоги (папки)
В Linux каталоги — это особые типы файлов, которые содержат другие файлы и каталоги.
Разрешение | символ | Значение в каталоге |
---|---|---|
Читать | — | Содержимое каталога не отображается. |
r | Можно показать содержимое каталога. (например, вы можете перечислить файлы внутри каталога с помощью ls .) | |
Написать | — | Содержимое каталога нельзя изменить. |
w | Содержимое каталога может быть изменено. (например, вы можете создавать новые файлы , удалять файлы и т. д.) | |
Выполнить | — | Каталог не может быть изменен на. |
x | По каталогу можно перемещаться с помощью cd . | |
s | Если он находится в тройке user , он устанавливает бит setuid . Если он находится в group триплете, он устанавливает бит setgid . Это также означает, что установлен флаг x . Когда для каталога setgid флаг setgid новые файлы, созданные в нем, наследуют идентификатор группы каталогов (GID) вместо идентификатора основной группы пользователя, создавшего файл. setuid не влияет на каталоги. | |
S | То же, что и s но флаг x не установлен. Этот флаг бесполезен для каталогов. | |
t | Если он обнаружен в others триплетах, он устанавливает бит sticky . Это также означает, что установлен флаг x . Когда для каталога установлен бит закрепления, только владелец файла, владелец каталога или административный пользователь может удалять или переименовывать файлы в каталоге. | |
T | То же, что и t но флаг x не установлен. Этот флаг бесполезен для каталогов. |
Использование chmod
Команда chmod имеет следующую общую форму:
Команда chmod позволяет вам изменять права доступа к файлу, используя символьный или числовой режим или справочный файл. Мы объясним режимы более подробно позже в этой статье. Команда может принимать в качестве аргументов один или несколько файлов и / или каталогов, разделенных пробелом.
Только root, владелец файла или пользователь с привилегиями sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod , особенно при рекурсивном изменении разрешений.
Символьный (текстовый) метод
Синтаксис команды chmod при использовании символьного режима имеет следующий формат:
Первый набор флагов ( [ugoa…] ), флаги пользователей, определяет, какие классы пользователей изменяют права доступа к файлу.
- u — владелец файла.
- g — Пользователи, входящие в группу.
- o — Все остальные пользователи.
- a — Все пользователи, идентичные ugo .
Если флаг пользователей опущен, по умолчанию используется значение a и разрешения, установленные с помощью umask , не затрагиваются.
Второй набор флагов ( [-+=] ), флаги операции, определяет, следует ли удалить, добавить или установить разрешения:
- — Удаляет указанные разрешения.
- + Добавляет указанные разрешения.
- = Изменяет текущие разрешения на указанные разрешения. Если после символа = не указаны разрешения, все разрешения из указанного класса пользователей удаляются.
Разрешения ( perms. ) могут быть явно установлены с использованием нуля или одной или нескольких следующих букв: r , w , x , X , s и t . Используйте одну букву из набора u , g и o при копировании разрешений из одного класса пользователей в другой.
При настройке разрешений для более чем одного пользовательского класса ( [,…] ) используйте запятые (без пробелов) для разделения символьных режимов.
Ниже приведены несколько примеров использования команды chmod в символьном режиме:
Дайте членам группы разрешение на чтение файла, но не на его запись и выполнение:
Удалите разрешение на выполнение для всех пользователей:
Отвратительно удалите разрешение на запись для других пользователей:
Удалите права на чтение, запись и выполнение для всех пользователей, кроме владельца файла:
То же самое можно сделать, используя следующую форму:
Предоставьте права на чтение, запись и выполнение владельцу файла, права на чтение для группы файла и никаких разрешений для всех остальных пользователей:
Добавьте разрешения владельца файла к разрешениям, которые есть у членов группы файла:
Добавьте липкий бит в заданный каталог:
Числовой метод
Синтаксис команды chmod при использовании числового метода имеет следующий формат:
При использовании числового режима вы можете установить разрешения для всех трех классов пользователей (владельца, группы и всех остальных) одновременно.
NUMBER может быть 3- или 4-значным числом.
Когда используется трехзначный номер, первая цифра представляет права владельца файла, вторая — группу файла, а последняя — всех остальных пользователей.
Каждое разрешение на запись, чтение и выполнение имеет следующее числовое значение:
- r (читать) = 4
- w (написать) = 2
- x (выполнить) = 1
- нет разрешений = 0
Число разрешений для определенного класса пользователей представлено суммой значений разрешений для этой группы.
Чтобы узнать права доступа к файлу в числовом режиме, просто подсчитайте итоговые значения для всех классов пользователей. Например, чтобы предоставить права на чтение, запись и выполнение владельцу файла, права на чтение и выполнение для группы файла и только на чтение для всех остальных пользователей, вы должны сделать следующее:
- Владелец: rwx = 4 + 2 + 1 = 7
- Группа: rx = 4 + 0 + 1 = 5
- Другое: rx = 4 + 0 + 0 = 4
Используя метод выше, мы подходим к числу 754 , которое представляет желаемые разрешения.
Для установки флагов setuid , setgid и sticky bit используйте четырехзначный номер.
Когда используется четырехзначный номер, первая цифра имеет следующее значение:
- setuid = 4
- setgid = 2
- липкий = 1
- без изменений = 0
Следующие три цифры имеют то же значение, что и при использовании трехзначного номера.
Если первая цифра равна 0, ее можно опустить, а режим можно представить тремя цифрами. Числовой режим 0755 совпадает с 755 .
Для вычисления числового режима вы также можете использовать другой метод (двоичный метод), но он немного сложнее. Знания, как вычислить числовой режим с использованием 4, 2 и 1, достаточно для большинства пользователей.
Вы можете проверить права доступа к файлу в числовом формате с помощью команды stat :
Вот несколько примеров того, как использовать команду chmod в числовом режиме:
Предоставьте владельцу файла разрешения на чтение и запись и только на чтение членам группы и всем другим пользователям:
Предоставьте владельцу файла права на чтение, запись и выполнение, права на чтение и выполнение для членов группы и никаких разрешений для всех остальных пользователей:
Предоставьте разрешения на чтение, запись и выполнение, а также закрепите бит для данного каталога:
Рекурсивно установить разрешения на чтение, запись и выполнение для владельца файла и отсутствие разрешений для всех других пользователей в данном каталоге:
Использование справочного файла
Параметр —reference=ref_file позволяет вам установить права доступа к файлу такими же, как у указанного справочного файла ( ref_file ).
Например, следующая команда назначит права доступа file1 к file2
Рекурсивно изменить права доступа к файлу
Чтобы рекурсивно работать со всеми файлами и каталогами в данном каталоге, используйте параметр -R ( —recursive ):
Например, чтобы изменить права доступа для всех файлов и подкаталогов в каталоге /var/www на 755 вы должны использовать:
Работа с символическими ссылками
Символические ссылки всегда имеют 777 разрешений.
По умолчанию, при изменении разрешений символической ссылки, chmod изменяет права доступа к файлу, на который указывает ссылка.
Скорее всего, вместо смены целевого владельца вы получите ошибку «Нет доступа к ‘символической ссылке’: в разрешении отказано».
Ошибка возникает из-за того, что по умолчанию в большинстве дистрибутивов Linux символические ссылки защищены, и вы не можете работать с целевыми файлами. Этот параметр указан в /proc/sys/fs/protected_symlinks . 1 означает включен, а 0 отключен. Рекомендуется не отключать защиту символических ссылок.
Массовое изменение прав доступа к файлам
Иногда возникают ситуации, когда вам нужно массово изменить права доступа к файлам и каталогам.
Наиболее распространенный сценарий — рекурсивное изменение разрешений файла веб-сайта на 644 и разрешений каталога на 755 .
Команда find будет искать файлы и каталоги в /var/www/my_website и передавать каждый найденный файл и каталог команде chmod для установки разрешений.
Выводы
Команда chmod изменяет права доступа к файлу. Разрешения можно установить с помощью символьного или числового режима.
Чтобы узнать больше о chmod посетите страницу руководства chmod .
Если у вас есть какие-либо вопросы или отзывы, не стесняйтесь оставлять комментарии.
Источник
ИТ База знаний
Курс по Asterisk
Полезно
— Узнать IP — адрес компьютера в интернете
— Онлайн генератор устойчивых паролей
— Онлайн калькулятор подсетей
— Калькулятор инсталляции IP — АТС Asterisk
— Руководство администратора FreePBX на русском языке
— Руководство администратора Cisco UCM/CME на русском языке
— Руководство администратора по Linux/Unix
Навигация
Серверные решения
Телефония
FreePBX и Asterisk
Настройка программных телефонов
Корпоративные сети
Протоколы и стандарты
Владельцы файлов и папок в Linux
14 минут чтения
Данная статья посвящена, наверное, самой сложной части начальной части изучения Linux — правам доступа. В данной статье будет рассказано о правах доступа, владельцах файлов, папок.
- Просматривать и изменять владельцев объектов.
- Устанавливать правила доступа к объектам.
- Понимать право “Execute”
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Основные команды для работы с правами доступа:
- chown – установка владельца
- chgrp – установка группы владельца
- chmod – установка прав доступа
В Windows у нас есть только один владелец файла или папки. Это можно посмотреть в свойствах объекта на вкладке безопасность, дополнительно и там же мы можем сменить владельца. Владелец в Windows по умолчанию обладает полными правами на объект. В Linux все происходит немного по-другому: Любой объект моет иметь своего владельца и группу владельцев, и кроме этого для объекта существуют все остальные пользователи в системе. Это самое существенное различие, что может быть владелец и группа владельцев.
И так у меня есть пользователь petya и пользователь siadmin . Теперь посмотрим информацию по этим двум пользователям. Чтобы посмотреть воспользуемся командой id siadmin и id petya .
У моего пользователя есть uid, который говорит, что я siadmin и вхожу в группу siadmin . Когда мы создаем нового пользователя группа по умолчанию совпадает с именем пользователя. Т.е каждый пользователь по умолчанию входит в свою собственную группу. Для пользователя petya я создал группу не по его имени. Я создал группу testusers и включил данного пользователя в данную группу и установил данную группу по умолчанию для данного пользователя.
Я нахожусь в домашней папке. Набрав команду ls –l мы можем посмотреть список каталогов и файлов, у каждого из них есть владелец и группа владельцев. Эти данные указаны в колонках. Для файла test1.txt владельцем является root и группа владельцев root .
Я создал папку Folder и файл test2.txt и назначил владельца и группу владельцев, согласно картинке. Для изменения данных параметров используется команда chown . Данную команду необходимо применять с повышением в привилегиях, через команду sudo . Например, изменим владельца для файла test1.txt . команда будет выглядеть так sudo chown petya test1.txt . Пароль не запросило, т.к я уже его вводил.
Как мы видим все успешно отработало. Если раньше был владелец root , то теперь мы видим petya . Для изменения группы мы так же можем воспользоваться командой sudo chgrp testusers test1.txt .
Данная команда chgrp используется редко, т.к вполне достаточно знать команду chown . Данная команда умеет менять в том числе и группу. Простой пример изменим группу используя команду chown :testusers file.txt . Просто перед группой ставим знак : который и говорит, что надо заменить группу на указанную. А можно сделать сразу 2 действия chown petya:testusers file1.txt
Немного сумбура вносит, что у пользователя группа по умолчанию совпадает с именем пользователя. Но это стандартное поведение Linux, который так заводит группу. Даже суперпользователь root имеет свою группу root . При создании пользователя petya был принудительно включен в группу testusers и она была выставлена по умолчанию для данного пользователя.
Еще есть важный момент, который необходимо упомянуть. Это рекурсивное выставление владельцем или группы владельцев на папки или файлы. Т.е если у нас есть папка родительская и в ней дочерние папки и файлы, а то и несколько вложений, а мы хотим изменить владельца или группу владельцев рекурсивно вниз, то команду chown необходимо использовать с ключем –R .
Пример: sudo chown –R siadmin:testusers Folder
Права доступа
Далее вернемся к самой первой картинке. На картинке добавлены подписи на английском языке. Это сделано, для большей наглядности. Потому, что сейчас будем раздавать права на объекты файловой системы файлы, папки и другие объект. Следовательно, права будут присваиваться владельцам, группе владельцев и все остальные. Права для владельцев – это user — (u), права для группы владельцев group — (g), Права для всех остальных other — (o).
Для того, чтобы далее разбираться с темой прав, надо запомнить вот такую табличку.
В классическом Linux, есть 3 вида доступа к объекту, это право на чтение, право на запись и право на выполнение и различные комбинации из этих прав. Заглавные буквы на верху таблицы отвечают за какое-либо право. Цифрами обозначены значения данных прав. Если мы даем право на чтение, то оно обозначается r— , если чтение и запись то rw- , если даем все права то rwx . Мы можем объединять данные права, как видите в табличке различные комбинации указаны. Всего 8 комбинаций от «нет прав», до «полных прав». Так же данная комбинация может назначаться в виде цифр. Т.е на какой то файл у такого товарища доступ 5 , это значить что данный товарищ имеет право читать файл и запускать на выполнение. Посчитать очень просто чтение это — 4 , а выполнение – это 1 , а в сумме будет 5 или по другому r-x . Следовательно мы можем назначать, как в цифровом, так и в символьном варианте права.
Еще один не маловажный момент мы назначаем права на файл, сразу для всех видов пользователей. Следовательно, указывая права, мы их сразу задаем для владельца, для группы владельца и всех остальных. Права мы можем назначать. Точно так же как на картинке символами rwx или цифрами, согласно табличке. Для лучшего понимания пример:
Chmod 750 script — полные права владельцу, чтение и выполнение группе владельца и ничего всем остальным.
Когда мы просматриваем права на объекты мы видим символьные обозначения, а там, где нет символа ставится прочерк, который означает, что данное право отсутствует.
Право > script — полные права владельцу, чтение и запись группе владельца, чтение остальным.
Чтобы легче было определять права на объект надо мысленно разделить на блоки по 3 символа. Первый блок — это Владелец, 2-й Блок — это группа владельца и 3-й блок — это другие пользователи.
Сhmod u+w script — дать право записи владельцу.
Chmod ugo-x script — отобрать у всех право исполнения файла.
Посмотреть, какие объекты находятся в директории и их права можно командой ls –la . Так же мы видим владельца и группу владельца. Теперь мы можем понимать первую строчку.
Вывод из всего этого, напрашивается следующий. Владелец у объекта файловой системы может быть только один. В группу testusers или другую мы можем добавить кого угодно и они будут следовательно иметь права, как группа владельцев. И, следовательно, все остальные пользователи, т.е не владелец и не входящие в группу, будут относится к категории всех остальных пользователей. Получается Linux нам дает разбить всех на три группы и в соответствии с этим назначить различные права, а Windows ведет себя по-другому и там можно более гибко задавать права. Мы можем создать 100 пользователей и каждому из них дать какие-то свои уникальные права. В Linux тоже это возможно с помощью разных ACL (Access Control List — лист доступа), но это не входит в базовые понятия, которые мы разбираем в рамках данной статьи.
Можно заметить ,что для папки спереди появляется символ d . Это d – directory каталог. Может появляться l – link – ссылка и.т.д.
Следовательно, можно убирать права указывая у кого, например, забрать выполнение chmod ugo-x test1.txt или мы можем добавить владельцу chmod u+x test1.txt . И третий вариант изменения прав на файл — это полностью перезаписать права на объект chmod 640 test1.txt .
Разберемся с правом на execute – выполнение.
Понятно становится это права, когда мы имеет дело с каким-то скриптом или бинарником или программой исполняемой. Так же у нас данное право может назначаться на каталог, а каталог мы исполнить не можем. Но тут есть интересный момент, если у вас будет на папку разрешение только на чтение и запись, прочитать папку, переименовать ее т.е поработать с наименованием папки, но в глубь папки вы не сможете зайти. Чтобы зайти во внутрь папки необходимо право execute – т.е выполнение ее.
Маска создания файлов и папок
В данной части статьи рассмотрим следующий вопрос:
Понимание принципов работы и управления масками создания файлов и папок.
- umask – маска создания файлов и папок
- suid – бит запуска от имени владельца
- sgid – бит запуска от имени группы владельцев
- sticky – бит защиты содержимого
Первое понятие umask — user creation mask — т.е маска с которой создается новая папка или файл, это то с какими правами по умолчанию будут создаваться папки и файлы для данного пользователя. В том случае если не создано каких-то особенных настроек наследования папки.
suid – set user id, который позволяет, если установлен на исполняемый файл, то любой пользователь, который запускает, получает права определенные для владельца данного файла. По-другому, позволяет использовать права владельца данного файла, происходит некая подмена вас на владельца этого файла.
sgid – set user id, который позволяет, если установлен на исполняемый файл, то любой пользователь, который запускает, получает права определенные для группы владельца данного файла. По-другому, позволяет использовать права группы владельца данного файла, происходит некая подмена вас на пользователя входящего в группу владельца этого файла.
Маска это такая интересная штука, которая указывает права по–умолчанию. Она рассчитывается с помощью вычитания из максимальных прав. Примеры вычисления показаны на картинке.
Посмотрим, как выглядит это в консоли.
Создадим текстовый файл от имени стандартного пользователя touch test10.txt .
Мы видим права, которые были выданы по умолчанию 664 , соответственно я являюсь владельцем и моя группа.
Создадим папку mkdir TestFolder .
Выданы права по умолчанию 775 . Теперь посмотрим правило действующее. Почему создаются объекты именно с такими правами. Этот параметр находится в профиле в старых версиях, сейчас он перенесен и за данный параметр отвечает утилита pam_umask . Если мы откроем мануал по данной утилите, то мы увидим, что данный параметр находится в /etc/login.defs
Видим, что значение umask = 022 . – это значение, которое идет по умолчанию во всех дебиан подобных операционных системах.
Введем новое значение umask 075 . Создадим новый файл touch test20.txt .
Получаем права 602 .
После перезагрузки маска изменится на маску по умолчанию, чтобы маску нужную зафиксировать, необходимо отредактировать файл /etc/login.defs . Следовательно, для нашего пользователя значить маска изменится с 022 на ту маску, которую там пропишем.
Нужно обратить внимание, что при создании папки права на выполнение по умолчанию выдаются, а на файл нет. Это связанно с тем, что без данных прав в данную папку невозможно будет зайти, а с файла убираются в целях защиты. Например, если вдруг окажется, что файл – это вредоносный код.
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 добавляется к правам всем остальным.
Как мы видим создан файл 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 . И теперь, кто бы не запускал файл, он всегда будет запускать от имени Владельца.
Можно подробнее посмотреть через команду stat script.run , которая показывает полную статистику по файлу.
Мы можем увидеть, что права стали теперь 4770 . Вот эта самая цифра 4 впереди и говорит, что установлен suid бит. Мы аналогично можем убрать suid бит sudo chmod u-s script.run . Все вернулось на свои места.
Для чего это нужно, есть некоторые программы которым необходим доступ к аппаратной части. Например ping , который проверяет связь, ему нужен доступ к сетевой карте. По умолчанию права на ping есть только у root , но если мы хотим чтобы все пользователи могли использовать данную утилиту, то мы должны разрешить ее запуск от имени root . Фактически та же самая функция, как и в операционной системе Windows запустить от пользователя. Аналогичным образом работает и sgid , если нам необходимо запускать от группы владельца, то устанавливаем этот бит и можем пользоваться — sudo chmod g+s script.run .
Результат наших действий подсвечен желтым.
Можно одновременно оба бита установить, следовательно, при выполнении будет и владелец заменен и группа заменена. Это имеет смысл делать, только для исполняемых файлов. Устанавливать на обычный текстовый файл данные биты, смысла конечно же нет.
Очень редко, когда применяю оба бита сразу, такое сочетание необходимо если уж сильно кто-то заморачивается с безопасностью или требуется ювелирная настройка прав доступа и запуска.
Теперь посмотрим, что с папкой происходит. На папку можно устанавливать sgid и sticky биты. Если мы устанавливаем групповой бит, то он для папок будет менять владельцев всех вложенных файлов на группу владельцев этой папки, т.е это один из вариантов наследования.
Создадим файл от пользователя siadmin . Touch file.txt в текущей папки он создается со стандартными правами. Установим sgid на папку TestFolder — Sudo chmod g+s TestFolder .
Создадим в ней такой же файл sudo touch TestFolder/file.txt
Как мы видим группа осталась прежней. Если пользователю root сказать создать файл в текущем каталоге, то владелец и группа будут root .
Теперь про sticky бит. Если установлен sticky бит на папку, то только Владелец данной папки или суперпользователь может удалить из нее файлы.
Создадим папку Folder , поставим на нее максимальные права 777 . И внутри создадим файл file.txt .
Файлик с правами по умолчанию. Поменяем права на данный фал 666 . Права на чтение и запись появились теперь у всех. Переключимся на другого пользователя, например, petya . Перейдем в домашний каталог пользователя siadmin — cd /home/siadmin/Folder . Внутри файл txt , который мы создавали. И удаляем rm file.txt . Файл удалился без проблем. Допустим мы хотим защитить от удаления, следовательно, необходимо установить sticky бит — sudo chmod o+t Folder
Как видим появилась буква t на месте прав для всех остальных. Создадим еще раз файл touch file1.txt . Даем на данный файл всем права 666 . А далее перелогиниваемся под petya . Заходим в папку /home/siadmin/Folder и командой rm file1.txt пытаемся удалить, на что получаем отказ от системы. Несмотря на права 666 , система не дает удалить файл. Следовательно, удалить все вложенные объекты может либо root или Владелец папки.
Мини — курс по виртуализации
Знакомство с VMware vSphere 7 и технологией виртуализации в авторском мини — курсе от Михаила Якобсена
Источник