Как установить права доступа 777 на файл или папку в Linux

Разработанный ещё в 70-е годы прошлого века механизм распределения прав в операционных системах оказался настолько успешным, что используется в UNIX-системах до сих пор, то есть уже больше сорока лет.

Настройка пользовательских и групповых прав доступа с помощью chmod

Павел Соловьёв Full Stack Developer #администрирование 29 августа, 2014 343 Основы

Вообще, когда мы говорим о каталогах или файлах, нас интересует три набора прав:

  • Пользовательские — касающиеся владельца файла
  • Групповые — права, касающиеся участников одной группы
  • Все остальные — разрешения для тех, кто не подходит к первым двум группам

Соответственно, каждый пользователь имеет своё уникальное имя и, как правило, принадлежит к одной или нескольким группам. Более того в одну группу может входить несколько пользователей.

Заметка: команда chmod в качестве одного из параметров принимает целочисленное значение, которое отвечает за набор прав. По ссылке вы найдете более подробную информацию по теме.

Я расскажу, как использовать chmod — команда, предназначенная для управления разрешениями (правами доступа) для работы с директориями и файлами.

Использование

chmod -ключи права путь/к/директории/файлу Ключи

Команда chmod -R будет рекурсивно применена ко всем вложенным файлам и каталогам.

Изменение разрешений

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

  • u — пользователь
  • g — группа
  • o — все остальные

Добавлять и удалять права можно следующим образом:

  • + — добавит права (знак плюс)
  • — — удалит права (знак минус)

Сами же права задаются вот так:

  • r — чтение
  • w — запись
  • x — выполнение

Применим все это, чтобы настроить права доступа для Apache.

Основные моменты

  • Apache запущен под пользователем и группой www-data
  • Корень сервера располагается по адресу /var/www

Первое

Изменим владельца корневого каталога сервера:

sudo chown -R www-data:www-data /var/www

Добавить пользователя к группе www-data можно следующей командой:

sudo usermod -a -G www-data username

Читайте также:  Настройка фаервола в Ubuntu с помощью утилиты UFW

Удалить пользователя из группы www-data можно командой:

sudo gpasswd -d username www-data Второе

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

Для начала закроем доступ к корневому каталогу для всех кроме его владельца, а именно — www-data. Мы используем ключ -go, чтобы изменения затронули группу и всех остальных пользователей, — означает удаление прав, а rwx означает, что мы запрещаем им читать, писать и запускать файлы из этого каталога.

sudo chmod go-rwx /var/www

Чтобы проверить какие права установлены на директорию выполните в командной строке: ls -la /var/www

Затем разрешим пользователям группы www-data и всем остальным просматривать корневой каталог. Команда работает не рекурсивно. Опять таки мы используем +, чтобы добавить права, а х отвечает за право выполнять файлы.

sudo chmod go+x /var/www

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

sudo chgrp -R www-data /var/www

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

sudo chmod -R go-rwx /var/www

Теперь разрешим всем пользователям, входящим в одну группу, чтение и запись в каталоги:

sudo chmod -R g+rw /var/www

На самом деле я выдаю права записи пользователям, входящим в одну группу, которую потом использую для всех, кто может изменять код на веб сервере. Делаю я это следующим образом:

chmod -R g+rwx /var/www

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

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

Об авторе Павел Соловьёв Комментарии Пока что нет комментариев, вы можете быть первым. Войти или Регистрация , чтобы оставлять комментарии.

Мнемонические обозначения прав доступа

Доступ к файлам в системе прав имеет такие вариации:

  • r — доступ к чтению файла;
  • w — право редактирование данных (но не удаление);
  • x — возможость запускать файл к исполнению.
Читайте также:  Что делать, если с флешки пропали файлы, но место занято

По отношению к каталогам действует такия система прав:

  • r — пользователь может читать любые файлы директории;
  • w — с этими правами можно создавать и удалять файлы в папке, даже если некоторые из них в каталоге принадлежат другому юзеру;
  • x — обозначает право входа в директорию. Если вы имеете права w к вложеной папке но не имеете прав на папку уровнем выше, то и к своей папке никак не пробьетесь.

Всего возможно 8 различных комбинаций, которые приведены на рисунке ниже.

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

  1. find

    Осуществляет поиск в файловой системе, файлах и папках. Для результатов поиска можно выполнять дополнительные команды.

  2. pwd

    Отображает на экране текущий каталог.

  3. clear

    Команда полной очистки окна терминала удаляет все ранее выведенные сообщения.

  4. history

    Показывает ранее введённые пользователем команды. Перемещаться по списку введённых команд можно, нажимая на клавиатуре «Вверх» и «Вниз».

  5. locate

    Быстрый поиск файлов по базе данных updatedb для шаблонов имён файлов. Эта БД работает со снимком файловой системы, что многократно ускоряет процесс поиска. Но тут есть и существенный минус. Точность поиска зависит от того, насколько актуальны данные о файловой системе в текущей версии снимка.

  6. zcat / zless / zmore

    Утилиты для просмотра сжатых файлов. С помощью zcat можно найти увидеть список сжатых файлов, zless выводит их списком постранично с возможностью листать вперёд и назад, а zmore — только вперёд.

  7. ;

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

    (команда_№1 &); (команда_№2 &); (команда_№3 &)

Специальные права доступа к файлам в Linux

Для того, чтобы позволить обычным пользователям выполнять программы от имени суперпользователя без знания его пароля была придумана такая вещь, как SUID и SGID биты. Рассмотрим эти полномочия подробнее.

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

Теперь давайте рассмотрим как посмотреть и изменить права на файлы в linux.

Sudo и su

Зная чей-либо пароль, можно непосредственно зарегистрироваться в системе под его именем, введя команду su имя_пользователя.

Программа su служит для выполнения от имени указанного пользователя (по умолчанию — root) указанной команды/программы (по умолчанию — той программы, что определена в качестве оболочки (shell) для указанного пользователя) и запрашивает она пароль указанного пользователя.

О программе sudo можно сказать почти то же самое, за двумя исключениями:

  • Нет «программы по умолчанию». для запуска оболочки, определённой для указанного пользователя, надо передать программе опцию -i.
  • По умолчанию запрашивается не пароль указанного пользователя, а пароль пользователя, выполняющего программу sudo. какому пользователю, какие программы и от чьего имени можно запускать, определяется содержимым конфигурационного файла /etc/sudoers (редактируется с помощью программы visudo).