Linux права файл windows

Права доступа к файлам и директориям в Linux, часть 1

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

Система разграничения прав доступа основывается на пользователях и группах пользователей. Пользователь принадлежит к какой-то основной для себя группе и может принадлежать к дополнительным. Система не допускает вхождения групп в группы (в этом отличие от Windows). Разные права и группы могут иметь разный доступ к файлу. Система доступа к файлам и директориям в Linux имеет несколько составляющих, и в этой статье мы уделим внимание лишь основной из них.

Посмотреть информацию о доступу к файлу или папке можно как через графический интерфейс операционной системы, так и через терминал.

Посмотреть права на файлы и каталоги в терминале поможет команда ls с параметром -l . Для примера введем

Это выведет список файлов и папок, входящих в каталог /home, с правами доступа к ним и некоторой другой информацией.

Редактировать права доступа можно и через графический интерфейс, и через терминал.

Для начала расшифруем то, как отображаются права доступа на каталоги и файлы в терминале. Попутно разберем, что именно даёт каждое из прав. На скриншоте выше видно следующую строку:

В начале строки видим последовательность из 10 символов. Разберем эту последовательность посимвольно.

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

Файл
d Директория
b Файл блочного устройства
c Файл символьного устройства
s Доменное гнездо (socket)
p Именованный канал (pipe)
l Символическая ссылка (link)

Как видим, в нашем примере мы имеем дело с директорией.

Следующие 9 символов описывают непосредственно права доступа и представляют из себя 3 группы по 3 символа. Первая группа символов описывает права для владельца файла или каталога (первоначально им назначается пользователь, создавший его). Вторая группа символов содержит описание прав доступа для группы, которая сопоставлена файлу (каталогу). Изначально это основная группа для создателя файла. Третья группа символов описывает права для всех остальных пользователей системы.

Надо отметить, что определение прав пользователя осуществляется последовательно. Первым делом проверяется, не является ли пользователь суперадминистратором (root). По умолчанию root имеет все права. Если пользователь не является суперадминистратором, то проверяется, не является ли он владельцем. Следом проверяется, входит ли он в нужную группу. Если на любом из шагов ответ утвердительный, проверка прерывается. Таким образом, если у владельца нет, например, прав на запись, а у группы эти права есть (и владелец в эту группу входит), это всё равно не позволит ему редактировать содержимое файла или каталога.

Теперь перейдем к тому, что означают символы в этих трёх тройках.

Файл Директория
Отсутствие прав Отсутствие прав
r Чтение содержимого файла Чтение содержимого директории
w Редактирование содержимого файла Редактирование содержимого директории
x Выполнение файла Доступ к файлам внутри директории

В примере с директорией test мы видим, что владелец каталога может читать ( r ) и записывать ( w ) информацию, а также имеет доступ к файлам внутри каталога ( x ). Сопоставимая с каталогом группа имеет права на чтение и права на доступ к файлам внутри каталога, но не может редактировать содержимое. Такими правами обладают и остальные пользователи системы.

Право на чтение означает возможность просмотреть содержимое файла или список файлов в папке. Право на запись даёт возможность редактировать содержимое файла или каталога (добавлять и удалять файлы). Чуть более сложным для понимание может показаться право на выполнение файла или право на доступ, в случае с каталогом. Если мы говорим о файлах, то это право даёт запустить исполняемый файл. Если же файл не является исполняемым, то он, естественно, не запустится и при наличии такого права. У каталогов это право даёт возможность открыть данный каталог. При этом есть нюанс, который состоит в том, что для доступа к какому-то файлу (даже хотя бы на чтение) требуется и право на доступ ко всем каталогам, которые составляют путь к этому файлу.

Читайте также:  Подключение жесткого диска mac os

Владелец файла (каталога) и сопоставимая группа также указаны в выводе команды ls -l . Слева направо сначала прописан владелец, затем группа. В нашем примере названия владельца и группы совпадают. Кроме того, рядом указываются дата и время последнего редактирования файла (папки).

Менять права доступа к файлам и папкам может либо владелец, либо root. Если владелец хочет сменить ассоциированную группу, он должен быть её членом. Для редактирования прав доступа используется команда chmod . Редактировать через неё права можно двумя способами. В первом способе редактирование прав производится через их буквенное отображение.

В примере на скриншоте мы видим команду

Расшифровать её можно так: убрать владельцу права на запись ( u-w ), добавить группе права на запись ( g+w ), всех остальных пользователей лишить всех прав ( o= ). Из этого примера уже можно представить синтаксис команды chmod , который выглядит следующим образом:

u Владелец + Добавить право r Чтение
g Группа Убрать право w Запись
o Остальные пользователи = Установить указанные права вместо имеющихся x Выполнение
a Все Отсутствие прав

На скриншоте выше права были возвращены в исходное состояние командой

Вот еще несколько примеров команды chmod :

добавляет всем право на чтение каталога /home/test.

Дать права на чтение и запись группе и всем остальным можно командой:

Второй способ основывается на цифровом представлении прав. Право на чтение в данном способе кодируется цифрой 4, на запись — цифрой 2, а на выполнение — цифрой 1. Совокупность прав является суммой чисел. Так, например, полный доступ будет равен 7 (4+2+1), а права на чтение и запуск 5 (4+1). Отсутствие прав в такой системе обозначается цифрой 0. Продолжим пример с каталогом /home/test.

На примере выше мы снова порезали права пользователям командой

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

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

Права доступа к файлам в Linux


Подробное руководство по правам доступа к файлам в Linux.

Видео про права доступа к файлам в Linux

Начнем с примера

Рассмотрим пример. Если выполнить в какой-либо директории с файлами команду ls -l, то вывод будет примерно следующий:

В этом выводе в начале каждой строки для каждого файла перечислены права доступа к данному файлу (-rw-rw-r— yuriy yuriy).

Или, например, если вы щелкните правой кнопкой по файлу и нажмете Свойства, то в открывшемся окне можно будет просмотреть и изменить права доступа к файлу (внешний вид окна может быть другой):

Из чего состоят права доступа

Каждый файл в операционной системе Linux имеет права доступа. Права доступа определяются тремя атрибутами:

Набор разрешений

Для каждого файла в Linux задается набор разрешений. Разрешения могут быть следующими:

  • r — read — возможность открытия и чтения файла. Для директории это возможность просматривать содержимое директории.
  • w — write — возможность изменения файла. Для директории это возможность добавлять, удалять или переименовывать файлы в директории.
  • x — execute — возможность выполнения файла (запуска файла). Если проводить аналогию с Windows, то это что-то вроде .exe-файлов. Если право доступа на запуск файла отключено, то вы по прежнему можете читать или изменять файл (если включены права на чтение и запись), но не можете запускать файл. Для директории запуск означает возможность войти в директорию и получить доступ к файлам и поддиректориям в ней.

Набор разрешений состоит из 3 блоков r w x :

  • Первый блок rwx определяет права доступа для владельца-пользователя.
  • Второй блок rwx определяет права доступа для владельца-группы.
  • Третий блок rwx определяет права доступа для всех остальных.

Владелец-пользователь

У каждого файла в Linux есть владелец-пользователь (также обозначается как user или owner). По умолчанию, тот, кто создал файл, становится его владельцем.

Первый блок r w x в наборе разрешений файла задет разрешения именно для данного пользователя.

Владелец-группа

У каждого файла в Linux есть владелец-группа (group). Звучит немного странно, но сейчас объясню. Каждая группа в Linux может содержать несколько пользователей. Все пользователи, принадлежащие группе, будут иметь одинаковые права доступа к данному файлу.

Например, у вас есть проект, в котором задействовано несколько работников. Вы можете создать для них группу, например — projectx. Для файлов этого проекта вы устанавливаете группу projectx и запрещаете доступ для всех остальных. Таким образом, только работники проекта (которые входят в группу projectx) смогут иметь доступ к этим файлам, а все остальные нет.

Читайте также:  Запуск всех служб linux

Второй блок r w x в наборе разрешений файла задает разрешения именно для данной группы.

Все остальные

К этой категории относятся все остальные пользователи, имеющие доступ к файлу. Но эти пользователи не относятся к владельцу-пользователю и они не входят в группу, которая владеет файлом (владелец-группа).

Третий блок r w x в наборе разрешений файла задает разрешения для этих пользователей.

Для изменения прав доступа у файлов и директорий служит команда chmod.

Подытожим

Для каждого файла или директории в Linux задаются права доступа. Они задаются тремя атрибутами: набором разрешений, именем владельца, именем группы.

Набор разрешений — это три блока прав доступа: права доступа для владельца файла, права доступа для группы, права доступа для всех остальных.

Разрешения записываются символами r, w, x.

Набор разрешений состоит из трех блоков и записывается в виде трех rwx, записанных друг за другом в виде одного «слова».

Если какая-либо возможность отключена (запрещена), то вместо соответствующего символа в наборе разрешений ставится прочерк (символ минус).

Обозначение прав доступа

Теперь можно еще раз рассмотреть пример вывода команды ls -l . Данная команда выводит список файлов в директории и показывает права доступа к файлам.

Как вы можете видеть, для файла myfile.sh установлены права доступа -rw-rw-r— , владельцем файла является пользователь yuriy и владелец-группа yuriy. Здесь нужно пояснить, что большинство Linux дистрибутивов для каждого пользователя создают группу с таким же названием, как и имя пользователя. В нашем примере как раз такой случай — пользователь yuriy добавлен в группу yuriy.

Первый символ в правах доступа это флаг. В примерах выше, он также использовался. В нашем случае это прочерк (символ минус). Технически он не задает права доступа, но используется, как первый символ в обозначении прав доступа. Для файлов он принимает значение «», для директорий значение «d», а для ссылок значение «l».

Как просматривать и изменять права доступа в Linux

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

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

Удивляться тут особо не приходится, ибо она основательно отличается от того, с чем приходится сталкиваться пользователю в Windows. Так, одним из ключевых отличий распределения прав доступа в Linux является назначение каждому файлу не только хозяина, но и группы. Кроме того, в линукс-системах имеются особые права доступа, позволяющие юзерам запускать приложения от имени суперпользователя без ввода его пароля, но обо всём по порядку.

На базовом уровне в Linux используются три параметра доступа к файлам. К ним относятся:

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

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

Таковыми категориями являются:

  • Владелец — входящие в эту группу пользователи обычно имеют полный набор прав на созданные ими файлы, а также на файлы, для которых пользователь назначен владельцем.
  • Группа — категория пользователей, связанная с файлом. По умолчанию группа создается для каждого юзера, при этом она имеет то же имя и ID , что и пользователь.
  • Все остальные — эту категорию составляют все остальные пользователи, кроме владельца и не привязанных к файлу пользователей групп. Исключением является только суперпользователь (root) , который имеет полный доступ ко всем файлам независимо от их атрибутов.
Читайте также:  Windows over the web

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

  • SUID — заменяет ID запускающего программу пользователя на ID другого юзера, того же Root .
  • SGID — работает так же, как и SUID , только при этом запускающий файл пользователь будет считаться членом группы, с которой этот файл связан.
  • Sticky-bit — в настоящее время флаг утратил актуальность, раньше он применялся при создании общих папок. Файлы, для которых он установлен, можно читать и исполнять, но нельзя удалять, если только желающий удалить файл не является его владельцем.

Смотрим права доступа

Но довольно теории, давайте теперь посмотрим, как просматривать и изменять права доступа в Linux. Узнать права доступа для файла или папки можно в свойствах объекта на вкладке «Права», но для получения полной картины лучше использовать терминал.

Откройте его в каталоге с файлами и выполните такую команду:

ls -l

Если нужно просмотреть права конкретного файла, к команде через пробел нужно добавить имя файла, например, ls -l NTUSER.DAT , если речь идет о папке, то указывается ее имя. В результате вы получите в терминале такую картинку.

Обратите внимание на набор из десяти символов в начале каждой строки, это символьное обозначение прав доступа в Линукс.

Первый символ обозначает тип данных, например, дефис означает, что вы имеете дело с обычным файлом, смотрите скриншоты ниже.

В следующих девяти символах «закодированы» права доступа. На самом деле, права указаны в каждой тройке символов, то есть полученную строку rwxrwxrwx можно представить как rwxrwxrwx. Первая группа — это права доступа хозяина объекта, вторая группа — это права системной группы, третья тройка символов означает права на файл для всех прочих пользователей.

А вот что означают сами символы:

Зная обозначения, можно легко разобрать любую комбинацию. Например, 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, а самое главное, умеете просматривать и изменять права. Уверены, эти знания очень вам пригодятся, позволяя максимально эффективно управлять доступом к пользовательским и системным файлам.

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