- Как просматривать и изменять права доступа в Linux
- Смотрим права доступа
- Как в Linux определить и заменить пользователя и группу
- Меняем права в Линукс для объектов ФС
- Введение в разрешения Linux
- Вступление
- Предпосылки
- О пользователе
- Суперпользователь
- О группах
- Просмотр прав собственности и разрешений
- Общие сведения
- Тип файла
- Классы разрешений
- Чтение символических разрешений
- Понимание чтения, записи, выполнения
- Читать
- Написать
- казнить
- Примеры режимов (и разрешений)
- Изменение прав собственности и разрешений
- Заключение
Как просматривать и изменять права доступа в Linux
Если вы имеете за плечами хотя бы небольшой опыт работы в Windows, то наверняка вам уже приходилось сталкиваться с такой штукой как права доступа. Последние являются одной из ключевых функций безопасности, отсутствие прав доступа означало бы полную беззащитность системы перед внешними атаками и вирусами, которые с легкостью смогли бы перезаписать любой системный файл. Полагаем, вы уже разобрались, как их задавать, впрочем, иначе не могло и быть, ведь устроены они довольно просто, а самое главное, логично.
Владельцем файла в Windows может быть либо операционная система, либо пользователь, который в свою очередь может иметь права гостя, обычного юзера и администратора, при этом возможности пользователя зависят от его статуса. Например, обычный пользователь не может изменять конкретный файл, тогда как администратор волен делать с файлом всё что ему заблагорассудится. Но когда пользователь Windows пытается применить ту же логику к Linux, то непременно сталкивается с трудностями понимания организации прав доступа.
Удивляться тут особо не приходится, ибо она основательно отличается от того, с чем приходится сталкиваться пользователю в Windows. Так, одним из ключевых отличий распределения прав доступа в Linux является назначение каждому файлу не только хозяина, но и группы. Кроме того, в линукс-системах имеются особые права доступа, позволяющие юзерам запускать приложения от имени суперпользователя без ввода его пароля, но обо всём по порядку.
На базовом уровне в Linux используются три параметра доступа к файлам. К ним относятся:
- Чтение — этот параметр позволяет просматривать содержимое файлов и директорий, но не вносить в них изменения.
- Запись — наличие этого параметра позволяет вносить в файл изменения и создавать/удалять файлы и папки в каталогах.
- Выполнение — особый параметр, предоставляющий разрешение на запуск исполняемых файлов — приложений и скриптов. Без этого ключа файлы приложений не будут идентифицированы как исполняемые.
Кроме того, в Linux имеется три категории пользователей, для которых могут быть изменены права доступа.
Таковыми категориями являются:
- Владелец — входящие в эту группу пользователи обычно имеют полный набор прав на созданные ими файлы, а также на файлы, для которых пользователь назначен владельцем.
- Группа — категория пользователей, связанная с файлом. По умолчанию группа создается для каждого юзера, при этом она имеет то же имя и ID , что и пользователь.
- Все остальные — эту категорию составляют все остальные пользователи, кроме владельца и не привязанных к файлу пользователей групп. Исключением является только суперпользователь (root) , который имеет полный доступ ко всем файлам независимо от их атрибутов.
Стоит также упомянуть о специальных правах доступа, так называемых битах, расширяющих полномочия обычных пользователей.
- SUID — заменяет ID запускающего программу пользователя на ID другого юзера, того же Root .
- SGID — работает так же, как и SUID , только при этом запускающий файл пользователь будет считаться членом группы, с которой этот файл связан.
- Sticky-bit — в настоящее время флаг утратил актуальность, раньше он применялся при создании общих папок. Файлы, для которых он установлен, можно читать и исполнять, но нельзя удалять, если только желающий удалить файл не является его владельцем.
Смотрим права доступа
Но довольно теории, давайте теперь посмотрим, как просматривать и изменять права доступа в Linux. Узнать права доступа для файла или папки можно в свойствах объекта на вкладке «Права», но для получения полной картины лучше использовать терминал.
Откройте его в каталоге с файлами и выполните такую команду:
ls -l
Если нужно просмотреть права конкретного файла, к команде через пробел нужно добавить имя файла, например, ls -l NTUSER.DAT , если речь идет о папке, то указывается ее имя. В результате вы получите в терминале такую картинку.
Обратите внимание на набор из десяти символов в начале каждой строки, это символьное обозначение прав доступа в Линукс.
Первый символ обозначает тип данных, например, дефис означает, что вы имеете дело с обычным файлом, смотрите скриншоты ниже.
В следующих девяти символах «закодированы» права доступа. На самом деле, права указаны в каждой тройке символов, то есть полученную строку rwxrwxrwx можно представить как rwx—rwx—rwx. Первая группа — это права доступа хозяина объекта, вторая группа — это права системной группы, третья тройка символов означает права на файл для всех прочих пользователей.
А вот что означают сами символы:
Зная обозначения, можно легко разобрать любую комбинацию. Например, rwx означает, что пользователь или группа имеет права на чтение, запись и исполнение, r-x — права на доступ и исполнение, но с запретом на изменение или удаление, rw- станет означать наличие прав на чтение и запись, но не право запускать файл как исполняемый.
Как в Linux определить и заменить пользователя и группу
Как вы уже знаете, права в Linux могут иметь не только пользователи, но и группы, в связи с чем может возникнуть вопрос: а как определить имя владельца и название группы? Элементарно, их выводит та же команда ls -l . В третьей колонке слева указано имя владельца объекта, название же связанной с объектом группы указано в четвертой колонке.
При желании вы можете заменить хозяина и группу для файла или папки, воспользовавшись такой командой:
sudo chown u:g file
chown — это сама команда замены, u — имя пользователя, которому желаем делегировать права, g — название группы, а file — название самого файла. В данном случае мы передаем права суперпользователю — root .
Меняем права в Линукс для объектов ФС
Если за замену пользователя и группы в Линукс отвечает команда chown , то для изменения прав доступа в системе предусмотрена команда chmod .
Она имеет следующий синтаксис:
chmod категория действие права объект
Что такое категории вы уже знаете, это владельцы файлов, группы и все остальные пользователи. Обозначаются категории как u, g и o соответственно. Для сразу всех категорий используется обозначение a. Категории можно группировать, например, ug станет означать, что мы хотим изменить права на объект для владельца и группы.
Действие — это изменение прав. Для присвоения прав используется ключ «=», для добавления указывается флаг «+», чтобы забрать права, нужно использовать ключ «-». С обозначениями прав вы также уже знакомы. Всё, можно формировать команды.
Сделаем для примера файл ntuser.ini недоступным для редактирования и исполнения:
chmod ug-wx ntuser.ini
В результате символьное представление прав стало таким: r—r—rwx. Как видите, права на файл были изменены для текущих владельца и группы, но не для категории «Все остальные» , если же бы мы вместо ug указали ugo или a, право на чтение и исполнение потеряли бы все категории. Обратите внимание, что в данном случае мы не использовали sudo в начале команды, поскольку и так являемся владельцем. Если же бы изменяли права root или другого пользователя, использование sudo было бы обязательным.
Ну вот, теперь в самых общих чертах вы знаете, чем отличаются организация прав доступа в Линукс от организации прав доступа в Windows, а самое главное, умеете просматривать и изменять права. Уверены, эти знания очень вам пригодятся, позволяя максимально эффективно управлять доступом к пользовательским и системным файлам.
Источник
Введение в разрешения Linux
Вступление
Linux — это многопользовательская ОС, основанная на концепциях Unix для владения файлами и разрешений для обеспечения безопасности на уровне файловой системы. Если вы планируете улучшить свои навыки работы с Linux, важно, чтобы вы хорошо понимали, как работают права собственности и разрешения. Есть много тонкостей, когда вы занимаетесь владением файлами и разрешениями, но мы постараемся сделать все возможное, чтобы довести эти понятия до деталей, необходимых для фундаментального понимания того, как они работают.
В этом учебном пособии мы рассмотрим, как просматривать и понимать права собственности на Linux и разрешения. Если вы ищете учебное пособие по изменению разрешений, ознакомьтесь с этим руководством: Основы прав доступа Linux и использование Umask в VPS
Предпосылки
Убедитесь, что вы поняли понятия, описанные в предыдущих руководствах этой серии:
- Введение в терминал Linux
- Основные возможности Linux и управления файлами
Доступ к Linux-серверу не является обязательным, чтобы следовать этому руководству, но наличие одного из них позволит вам получить некоторые из первых рук. Если вы хотите установить его, ознакомьтесь с этой ссылкой для получения справки.
О пользователе
Как упоминалось во введении, Linux — многопользовательская система. Мы должны понять основы пользователей и групп Linux, прежде чем мы поговорим о правах собственности и разрешениях, поскольку они являются сущностями, к которым относятся права собственности и разрешения. Давайте начнем с основ, что есть у пользователей.
В Linux существует два типа пользователей: системные пользователи и обычные пользователи . Традиционно системные пользователи используются для запуска неинтерактивных или фоновых процессов в системе, в то время как обычные пользователи используют для входа в систему и запускают процессы в интерактивном режиме. Когда вы впервые входите в систему Linux, вы можете заметить, что она начинается со многих пользователей системы, которые запускают службы, от которых зависит ОС — это абсолютно нормально.
Легкий способ просмотра всех пользователей в системе — посмотреть содержимое /etc/passwd файла. Каждая строка в этом файле содержит информацию об одном пользователе, начиная с его имени пользователя (имя перед первым : ). Распечатайте passwd файл с помощью этой команды:
Суперпользователь
В дополнение к двум типам пользователей существует суперпользователь или пользователь root , который имеет возможность переопределять права на файлы и ограничения на доступ. На практике это означает, что суперпользователь имеет права доступа к чему-либо на своем собственном сервере. Этот пользователь используется для общесистемных изменений и должен быть защищен.
Также возможно настроить другие учетные записи пользователей с возможностью принимать «права суперпользователя». Фактически, создание нормального пользователя, обладающего sudo привилегиями для задач системного администрирования, считается лучшей практикой.
О группах
Группы представляют собой коллекции нулевого или большего числа пользователей. Пользователь принадлежит к группе по умолчанию и также может быть членом любой из других групп на сервере.
Простой способ просмотра всех групп и их членов — это посмотреть в /etc/group файл на сервере. Мы не будем рассматривать управление группами в этой статье, но вы можете запустить эту команду, если вам интересны ваши группы:
Теперь, когда вы знаете, что такое пользователи и группы, давайте поговорим о владении файлами и разрешениях!
Просмотр прав собственности и разрешений
В Linux каждый файл принадлежит одному пользователю и отдельной группе и имеет свои права доступа. Давайте посмотрим, как просмотреть права собственности и разрешения файла.
Наиболее распространенным способом просмотра разрешений файла является использование ls с длинной листинговой опцией, например ls -l myfile . Если вы хотите просмотреть разрешения всех файлов в вашем текущем каталоге, выполните команду без аргумента, например:
Подсказка. Если вы находитесь в пустом домашнем каталоге и еще не создали файлы для просмотра, вы можете следить за ним, указав содержимое /etc каталога, выполнив следующую команду: ls -l /etc
Вот пример скриншота о том, как может выглядеть вывод, с метками каждого столбца вывода:
Обратите внимание, что перечислены режимы каждого файла (который содержит разрешения), владелец, группа и имя. Помимо столбца « Режим» этот список довольно легко понять. Чтобы объяснить, что означают все эти буквы и дефисы, давайте разделим столбец Mode на его компоненты.
Общие сведения
Чтобы объяснить, что означают все группы и буквы, взгляните на это крупным планом режимапервого файла в приведенном выше примере:
Тип файла
В Linux существует два основных типа файлов: обычный и специальный . Тип файла указывается первым символом режима файла — в этом руководстве мы называем это полем типа файла .
Обычные файлы могут быть идентифицированы файлами с дефисами ( — ) в полях типа файла. Обычные файлы — это просто файлы, которые могут содержать данные. Они называются нормальными или регулярными файлами, чтобы отличать их от специальных файлов.
Специальные файлы могут быть идентифицированы файлами с символом, отличным от дефиса, например буквой, в своих типах файлов и обрабатываются операционной системой иначе, чем обычные файлы. Символ, который появляется в поле типа файла, указывает тип специального файла, в котором находится конкретный файл. Например, каталог, который является наиболее распространенным видом специального файла, идентифицируется d символом, который появляется в его поле типа файла (как на предыдущем снимке экрана). Есть несколько других видов специальных файлов, но они не являются существенными, что мы изучаем здесь.
Классы разрешений
Из диаграммы мы знаем, что столбец Mode указывает тип файла, за которым следуют три триады или классы разрешений: пользователь (владелец), группа и другие. Порядок классов согласован во всех дистрибутивах Linux.
Давайте посмотрим, какие пользователи принадлежат каждому классу разрешений:
- Пользователь : владелец файла принадлежит к этому классу
- Группа : члены группы файлов относятся к этому классу
- Другое . Любые пользователи, не входящие в классы пользователя или группы, относятся к этому классу.
Чтение символических разрешений
Следующее, на что нужно обратить внимание, это наборы из трех символов или триады, поскольку они обозначают разрешения в символической форме, которые каждый класс имеет для данного файла.
В каждой триаде права на чтение, запись и выполнение представлены следующим образом:
- Чтение : указано r в первой позиции
- Запись : обозначается буквой a w во втором положении
- Выполнить : указывается x в третьей позиции. В некоторых особых случаях здесь может быть и другой характер
Дефис ( — ) вместо одного из этих символов указывает, что соответствующее разрешение недоступно для соответствующего класса. Например, если групповая триада для файла r— , файл является «только для чтения» для группы, связанной с файлом.
Понимание чтения, записи, выполнения
Теперь, когда вы знаете, как читать права доступа к файлу, вы, вероятно, хотите знать, что разрешает пользователям разрешать все права. Мы объясним каждое разрешение индивидуально, но имейте в виду, что они часто используются в сочетании друг с другом, чтобы обеспечить значимый доступ к файлам и каталогам.
Ниже приведена краткая разбивка доступа, которую предоставляют три основных типа разрешений пользователю.
Читать
Для обычного файла разрешение чтения позволяет пользователю просматривать содержимое файла.
Для каталога разрешение чтения позволяет пользователю просматривать имена файла в каталоге.
Написать
Для обычного файла разрешение записи позволяет пользователю изменять и удалять файл.
Для каталога разрешение записи позволяет пользователю удалять каталог, изменять его содержимое (создавать, удалять и переименовывать в нем файлы) и изменять содержимое файлов, которые пользователь может прочитать.
казнить
Для обычного файла разрешение на выполнение позволяет пользователю выполнить файл (пользователь должен также иметь разрешение на чтение). Таким образом, разрешения выполнения должны быть установлены для исполняемых программ и сценариев оболочки, прежде чем пользователь сможет их запустить.
Для каталога разрешение на выполнение позволяет пользователю получать доступ или перемещаться в (т. Е. cd ) И получать доступ к метаданным о файлах в каталоге (информация, указанная в a ls -l ).
Примеры режимов (и разрешений)
Теперь, когда вы знаете, как читать режим файла, и понимать смысл каждого разрешения, мы представим несколько примеров общих режимов с краткими пояснениями, чтобы объединить концепции.
- -rw——- : Файл, доступ к которому принадлежит только его владельцу
- -rwxr-xr-x : Файл, исполняемый каждым пользователем в системе. Файл «world-executable»
- -rw-rw-rw- : Файл, открытый для изменения всеми пользователями системы. Файл «world-writable»
- drwxr-xr-x : Каталог, который каждый пользователь в системе может читать и получать доступ
- drwxrwx— : Каталог, который может быть изменен (включая его содержимое) его владельцем и группой
- drwxr-x— : Каталог, доступный его группе
Как вы, возможно, заметили, владелец файла обычно пользуется большинством разрешений по сравнению с другими двумя классами. Как правило, вы увидите, что группа и другие классы имеют только подмножество прав владельца (эквивалентно или меньше). Это имеет смысл, потому что файлы должны быть доступны только пользователям, которым необходим доступ к ним по определенной причине.
Другое замечание состоит в том, что, несмотря на то, что возможны многие комбинации разрешений, только некоторые из них имеют смысл в большинстве ситуаций. Например, запись или выполнение доступа почти всегда сопровождается доступом для чтения , поскольку его трудно модифицировать и невозможно выполнить, что вы не можете прочитать.
Изменение прав собственности и разрешений
Чтобы этот учебник был прост, мы не будем описывать, как изменить права собственности на файлы и разрешения здесь. Чтобы узнать , как использовать chown , chgrp и chmod для выполнения этих задач, обратитесь к этому руководству: Linux разрешений Основы и как использовать UMASK на VPS .
Заключение
Теперь у вас должно быть хорошее представление о том, как права собственности и разрешения работают в Linux.
Источник