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

В прошлом материале я упоминал права доступа к файлу, указывая 777, но не останавливался на том, что это такое. Давайте рассмотрим подробнее, как в Unix-подобных системах задаётся доступ к файлам.

эксклюзивные полные права доступа есть только у владельца (4+2+1)

А теперь приведём конкретный пример. Допустим, у вас есть папка.

  • Если у вас есть только права на запись, вы сможете её только переименовать, но никак не заглянуть внутрь
  • Если у вас есть права только на исполнение, то вы сможете открыть папку, но не увидите в ней никакого содержимого. Но если вы знаете имена лежащих там файлов, то сможете с ними работать.
  • Если у вас есть права на чтение и исполнение, то вы сможете пользоваться всем содержимым папки, но не сможете её переименовать или изменить атрибуты

Буквенный способ всегда состоит из 10 символов и имеет следующий вид:

drwxrw-r-x

Первый символ показывает, с чем вы имеете дело:

  • прочерк означает обычный файл
  • d — папку
  • l — ссылку на другой файл

Оставшиеся девять символов делятся на три группы по три знака. Первые три показывают права доступа владельца, вторые три — группы, третьи — всех остальных:

  • r — право на чтение (read)
  • w — право на запись (write)
  • x — право на запуск (execute)

Если права нет, то на соответствующем месте ставится прочерк.

Есть ещё два специальных обозначения, обычно встречающиеся у папок:

  • t — не позволяет пользователю удалять в данном каталоге чужие файлы, если у него нет права на запись в эти файлы
  • s — означает, что файлы, создаваемые в каталоге, наследуют группу от каталога, а не от создателя файла

Таким образом, приведённый выше пример означает то же самое, что и 765.

Кстати, файл вполне может иметь и права доступа 000. Тогда единственный, кто может что-то с ним сделать будет root-администратор. Стоит помнить о такой возможности хотя бы потому, что стоит быть аккуратным с этим. Кстати, в этом случае и сменить права назад сможет тоже только администратор. Будьте аккуратнее.

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

Читайте также:  Как сохранить вывод команды терминала (Bash) в текстовый файл

Теперь о том, как менять права доступа и владельцев файлов. Правом изменения прав доступа обладают владелец файла и пользователь root. Отсюда вывод — если у вас не получается поменять права, используйте команду sudo.

Для смены прав доступа используется команда

Уровни прав на файлы и папки

  1. Право на чтение файла (обозначается буквой r — read). Для папки это значит, что пользователь может увидеть список файлов и папок, находящихся в этой папке.
  2. Право на редактирование и удаление файла (обозначается буквой w — write). Для папки это разрешение на создание файлов в этой папке.
  3. Право на исполнение (обозначается буквой x — eXecute). Разрешен доступ к файлу для запуска программ или скриптов, записанных в этом файле. Для папок право на исполнение разрешает перейти в эту директорию.
Уровни прав на файлы и папки
Уровни прав на файлы и папки

Владелец файла

Для начала обращу ваше внимание, что если в Windows владельцем файла является либо пользователь, либо операционная система, то в Unix-подобных ОС дело немного сложнее. Каждому файлу назначается не только пользователь владелец, но и группа. Для каждого пользователя группа создаётся по умолчанию, её название идентификатор совпадают с именем и ID пользователя. Номера идентификаторов начинаются с 1000.

Суперпользователь (root) также имеет свой идентификатор, который равен нулю. Идентификаторы от 1 до 999 используются в служебных целях (или получают различные приложения и системные службы).

Если вас заинтересовал этот момент, посмотрите содержимое файлов /etc/passwd и /etc/group в своей системе:

cat /etc/passwd

cat /etc/group

Вывод списка файлов также можно сделать подробным, указав в параметрах команды ключ «-l»:

ls -l

В первом столбике будут отображаться права доступа, затем число, а вот дальше как раз будет владелец и группа.

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

Обращаю ваше внимание, что владелец и группа могут не совпадать, например, владельцем может быть «user1», а группа − «user2». Это нормальное явление, когда нужно более гибко настроить права доступа.

Права доступа в цифрах: chmod (777, 755, 655, 444,

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

  • r (чтение) — 4
  • w (запись) — 2
  • x (исполнение) — 1
  • — (нет прав) — 0

Теперь вновь разберем вышеприведенный пример для назначения прав доступа «rwxr—r—». Для отображения прав каждого пользователя применяется сложение его прав: r (чтение) + w (запись) + x (исполнение). Таким образом, часть записи для владельца файла u (user) «rwx» превратится в 7 (4+2+1). Для членов групп g (group) и o (others) запись «r—» преобразуется в 4 (4+0+0). Тогда вся совокупность прав в цифровом выражении будет выглядеть как «744».

Читайте также:  6 лучших графических оболочек для рабочего стола Linux

В качестве резюме представлю сводную таблицу с правами доступа chmod в буквах и цифрах:

chmod Файлы Папки (директории)
Выражен. в цифрах Выражен. в символах
Запрещены все действия Запрещены все действия
1 —x Выполнение Чтение атрибутов файлов*
2 -w- Запись Запрещены все действия
3 (2 + 1) -wx Запись и выполнение Разрешено все, кроме доступа к именам файлов**
4 r— Чтение содержимого Чтение имен файлов
5 (4 + 1) r-x Чтение и выполнение Чтение имен файлов и их атрибутов***
6 (4 + 2) rw- Чтение и запись Чтение имен файлов
7 (4 + 2 +1) rwx Все разрешено Все разрешено

* — нет возможности получения имен файлов, а также их создания/переименования/удаления.

*** — нельзя создавать/переименовывать/удалять файлы в директории.

Теперь представлю еще одну таблицу, которая отражает суммарные права chmod для абсолютно всех групп пользователей (user, group, others) в формате цифр:

chmod Владелец u (user) Член группы g (group) Другие пользователи 0 (others)
777 Чтение, запись, исполнение Чтение, запись, исполнение Чтение, запись, исполнение
776 Чтение, запись, исполнение Чтение, запись, исполнение Чтение, запись
775 Чтение, запись, исполнение Чтение, запись, исполнение Чтение, исполнение
774 Чтение, запись, исполнение Чтение, запись, исполнение Чтение
766 Чтение, запись, исполнение Чтение, запись Чтение, запись
755 Чтение, запись, исполнение Чтение, исполнение Чтение, исполнение
655 Чтение, запись Чтение, исполнение Чтение, исполнение
644 Чтение, запись Чтение Чтение
444 Чтение Чтение Чтение

Это основные комбинации, которые наиболее часто используются в работе вебмастера. Другие формируются по аналогии. Если вы являетесь администратором сайта, но работаете с проектом, не подсоединившись по FTP протоколу, вы также относитесь к группе «Остальные пользователи». В таком случае при работе с сайтом нужно учитывать последнюю цифру в значении chmod.

Для примера возьмем файл с каким-нибудь скриптом. Чтобы он запускался при определенных действиях пользователя на сайте, вполне достаточно, чтобы на этот файлик были установлены права «4» («r—»). Можно и выше (5, 6, 7), но это не имеет смысла, так как при том же эффекте понизится уровень безопасности ресурса. На папку, в которой находится файлик со скриптом, уже требуются права «5» (доступ к директории и чтение содержимого), но опять же, не больше.

Ежели необходимо, чтобы скрипт не только предоставлял какую-то информацию, но и записывал данные (скажем, те, которые вводят посетители), то права в отношении каталога как минимум (он же и максимум, опять же, исходя из безопасности) потребуются «5», однако, для файла уже надо при этих обстоятельствах проставить «6» (что обеспечит чтение и запись).

Читайте также:  Скачать русскую версию

Ежели у вас простенький сайт с использованием HTML-страниц, то на сервере, где расположены его файлики, достаточно на каталоги иметь права 755, а на файлы, входящие в их состав, 644:

Файлы

644

Владелец (user) имеет право читать и записывать файлы (исполнять запрещено), члены группы (group) и остальные (others) могут лишь их читать (rw-r—r—)

Папки

755

Владелец (user) вправе выполнять все действия, а группа и другие пользователи имеют доступ к директории, могут просматривать названия и атрибуты файликов, однако, не имеют прав их записывать, изменять названия и удалять (rwxr-xr-x)

Однако фокус в том, что в современных условиях для построения вебсайтов в массовом масштабе используются CMS (системы управления контентом), к которым относится и WordPress. А здесь могут находиться объекты, в которые необходимо производить записи от группы пользователей «others», а также, к примеру, папки с кэшем (в том числе создаваемые плагином кеширования), в которые загружается контент, включая изображения.

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

А в этом случае могут возникнуть проблемы, если права слишком завышены, и, наоборот, если права доступа к тому или иному файлу (папке) занижены, то возрастает угроза безопасности. Посему на основании вышесказанного можно определить некоторые рекомендации по практическому применению chmod для современного сайта под управлением ЦМС:

777

Для каталогов, где постоянно происходит запись и стирание файлов (например, для папки кэширования)

755

Применительно к папкам, в которые постоянно записываются файлы, но не удаляются

666

Для файлов, куда необходимо время от времени добавлять запись (пример — файл .htaccess)

644

Для файлов, используемых только для чтения (.php, .html и др.)

Также рекомендую на папки, находящиеся в корне сайта, поставить код доступа Чмод 444.

Права доступа

Права доступа указывают какие полномочия следует предоставить или забрать у указанного класса. Существуют три основных вида прав доступа, которые соответствуют базовым полномочиям:

[X ] сам по себе не является правом доступа, но тем не менее, может использоваться вместо x . Он на самом деле полезен только в случае использования оператора ‘+’ в сочетании с опцией -R, для того чтобы предоставить группе или остальным пользователям права доступа к дереву каталога, не давая прав на исполнение обычных файлов (например текстовых), что случится при применении команды ‘chmod -R a+rx’. Таким образом вместо нее можно использовать ‘X’, и соответственно выполнить ‘chmod -R a+rX’.