Как работают разрешения для файлов Linux?
Если вы уже некоторое время используете Linux (и даже OS X), вы, вероятно, столкнетесь с ошибкой «permissions». Но что именно они, и почему они необходимы или полезны? Давайте взглянем изнутри.
Пользовательские разрешения
В свое время компьютеры были огромными машинами, которые были невероятно дорогими. Чтобы максимально использовать их, были подключены несколько компьютерных терминалов, что позволило многим пользователям одновременно заниматься своими делами. Обработка и хранение данных осуществлялась на машине, а сами терминалы были не более чем средством просмотра и ввода данных. Если вы думаете об этом, то в значительной степени мы получаем доступ к данным в «облаке»; посмотрите на Amazon Cloud Mp3-систему, Gmail и Dropbox, и вы заметите, что, хотя изменения можно вносить локально, все хранится удаленно.
(Изображение: «тупой» терминал Zenith Z-19; кредит: ajmexico)
Чтобы это работало, отдельные пользователи должны иметь учетные записи. У них должен быть выделенный участок области хранения, и им нужно разрешать запускать команды и программы. Каждый получает определенные «пользовательские разрешения», которые определяют, что они могут и не могут делать, где в системе они имеют и не имеют доступа, а чьи файлы они могут и не могут изменять. Каждый пользователь также помещается в различные группы, которые предоставляют или ограничивают дальнейший доступ.
Доступ к файлам
В этом дурацком многопользовательском мире мы уже установили границы того, что могут делать пользователи. Но как насчет того, что они получают доступ? Ну, у каждого файла есть набор разрешений и владелец. Обозначение владельца, обычно связываемое при создании файла, объявляет, к какому пользователю он принадлежит, и только этот пользователь может изменять свои права доступа..
В мире Linux разрешения делятся на три категории: чтение, запись и выполнение. Доступ «чтение» позволяет просматривать содержимое файла, доступ «запись» позволяет изменять содержимое файла, а «выполнять» позволяет запускать набор инструкций, таких как сценарий или программа. Каждая из этих категорий применяется к разным классам: пользователю, группе и миру. «Пользователь» означает владельца, «группа» означает любого пользователя, который находится в той же группе, что и владелец, а «мир» означает кого-либо и всех..
Папки также могут быть ограничены с этими разрешениями. Например, вы можете разрешить другим людям в вашей группе просматривать каталоги и файлы в вашей домашней папке, но не кому-либо за пределами вашей группы. Возможно, вы захотите ограничить доступ «на запись» только для себя, если только вы не работаете над каким-либо общим проектом. Вы также можете создать общий каталог, который позволяет любому просматривать и изменять файлы в этой папке..
Изменение разрешений в Ubuntu
графический интерфейс пользователя
Чтобы изменить права доступа к файлу, которым вы владеете в Ubuntu, просто щелкните файл правой кнопкой мыши и выберите «Свойства».
Вы можете изменить, может ли Владелец, Группа или Другие читать и писать, только для чтения или ничего не делать. Вы также можете установить флажок, чтобы разрешить выполнение файла, и это включит его для владельца, группы и других одновременно..
Командная строка
Вы также можете сделать это через командную строку. Перейдите в каталог, в котором есть файлы, и введите следующую команду, чтобы просмотреть все файлы в списке:
ls -al
Рядом с каждым файлом и каталогом вы увидите специальный раздел, в котором изложены имеющиеся у него разрешения. Это выглядит так:
-rwxrw-р-
р означает «читать», вес означает «написать», а Икс означает «выполнить». Каталоги будут начинаться с «d» вместо «-». Вы также заметите, что есть 10 пробелов, которые содержат значение. Вы можете проигнорировать первый, а затем есть 3 набора по 3. Первый набор для владельца, второй набор для группы, и последний набор для мира.
Чтобы изменить права доступа к файлу или каталогу, давайте рассмотрим базовую форму команды chmod.
chmod [класс] [оператор] [права доступа] файл
Файл chmod [ugoa] [+ or -] [rwx]
Сначала это может показаться сложным, но, поверьте мне, это довольно легко. Сначала давайте посмотрим на классы:
- U: Это для владельца.
- г: это для группы.
- о: это для всех остальных.
- а: это изменит разрешения для всего вышеперечисленного.
Далее операторы:
- +: Знак плюс добавит следующие разрешения.
- -: Знак минус удалит разрешения, которые следуют.
Все еще со мной? И последний раздел такой же, как когда мы проверяли права доступа к файлу:
- r: разрешает чтение.
- w: разрешает запись.
- x: разрешает выполнение.
Теперь давайте вместе. Допустим, у нас есть файл с именем «todo.txt», который имеет следующие разрешения:
-RW-RW-г-
То есть владелец и группа могут читать и писать, а мир может только читать. Мы хотим изменить разрешения на эти:
-rwxr-
То есть владелец имеет полные права, и группа может читать. Мы можем сделать это в 3 этапа. Сначала мы добавим разрешение на выполнение для пользователя..
chmod u + x todo.txt
Затем мы удалим разрешение на запись для группы.
chmod g-w todo.txt
Наконец, мы удалим разрешения на чтение для всех остальных пользователей..
chmod o-r todo.txt
Мы также можем объединить их в одну команду, например так:
chmod u + x, g-w, o-r todo.txt
Вы можете видеть, что каждый раздел разделен запятыми и нет пробелов.
Вот некоторые полезные разрешения:
- -rwxr-xr-x: владелец имеет полные права, группа и другие пользователи могут читать содержимое файла и выполнять.
- -rwxr-r-: владелец имеет полные права, группа и другие пользователи могут только читать файл (полезно, если вы не возражаете против просмотра ваших файлов другими пользователями)..
- -rwx-: владелец имеет полные разрешения, остальные - нет (полезно для личных скриптов).
- -rw-rw--: владелец и группа могут читать и писать (полезно для совместной работы с членами группы).
- -rw-r-r-: владелец может читать и писать, групповые и другие пользователи могут только читать файлы (полезно для хранения личных файлов в общей сети).
- -rw--: владелец может читать и писать, все остальные не имеют (полезно для хранения личных файлов).
Есть несколько других вещей, которые вы можете сделать с помощью chmod - например, setuid и setgid - но они немного глубоки, и большинству пользователей в действительности не нужно их использовать..
Корневые или суперпользовательские и системные файлы
В настоящее время мы не всегда запускаем системы с несколькими пользователями. Почему мы все еще должны беспокоиться о разрешениях?
Ну, Unix и его производные - Linux, OS X и другие - также различают вещи, управляемые пользователем, действия, выполняемые администратором или с правами администратора, и действиями, выполняемыми самой системой. Таким образом, вещи, которые являются неотъемлемой частью системы, требуют изменения прав администратора или доступа к ним. Таким образом, вы ничего не напутаете случайно.
В Ubuntu для внесения изменений в системные файлы вы используете «sudo» или «gksudo», чтобы получить эквивалент привилегий администратора. В других дистрибутивах вы переключаетесь на «root» или «super-user», который фактически делает то же самое, пока вы не выйдете из системы..
Помните, что в обоих случаях изменение прав доступа к файлам может привести к неработоспособности программ, непреднамеренному изменению владельца файла на пользователя root (вместо владельца) и снижению безопасности системы (предоставляя больше разрешений). Поэтому рекомендуется не изменять разрешения для файлов - особенно системных файлов - если это не требуется или вы не знаете, что делаете.
Имеются разрешения на доступ к файлам для обеспечения базовой системы безопасности среди пользователей. Изучение того, как они работают, может помочь вам настроить базовый общий доступ в многопользовательской среде, защитить «общедоступные» файлы и дать вам представление о том, когда что-то не так с владением системным файлом.
Думаешь, ты можешь объяснить вещи проще? Есть исправление? Хотите вспомнить старые времена? Сделайте перерыв и изложите свои мысли в комментариях.