Бесплатная миграция IT-инфраструктуры в облако
На главную
61c46507-12c7-4300-a301-bd8bc30c7c19
Инструкции для серверов

Управление правами доступа

Рассказываем, как настроить права доступа к файлам на сервере через SSH или с помощью FileZilla.

Общая информация о правах доступа

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

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

Права доступа включают в себя право на чтение (r), запись (w) и исполнение (x).

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

Права

Для файлов

Для каталогов

r, чтение

Просмотр содержимого

Просмотр содержимого, то есть списка объектов в каталоге (например, командами cat, ls)

w, запись

Изменение содержимого

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

x, исполнение

Запуск файла на исполнение

Вход в каталог (например, командой сd), просмотр атрибутов файлов, находящихся в каталоге

Существует три категории пользователей для каждого файла:

  • Владелец файла — пользователь, который создал файл (или который сейчас указан в качестве владельца). По умолчанию владелец имеет полные права.
  • Группа — созданная в системе группа пользователей, которой выдан определенный набор прав к файлу. Может состоять из одного пользователя (владельца) или из нескольких. Если группа состоит из нескольких пользователей, то все они имеют права к файлу, выданные группе.
  • Остальные — все прочие пользователи, которые не являются владельцем файла и не входят в группу, назначенную для файла.

Для каждой категории может быть установлен свой набор прав к конкретному файлу.

Права могут обозначаться двумя способами: буквами или цифрами:

Цифровая запись

Буквенная запись

Права

0

---

Отсутствие прав

1

--x

Исполнение

2

-w-

Запись

3

-wx

Запись и исполнение

4

r--

Чтение

5

r-x

Чтение и исполнение

6

rw-

Чтение и запись

7

rwx

Чтение, запись и исполнение

Права записываются последовательно: сначала для владельца, затем для группы, затем для остальных пользователей. Например, запись 755 (или rwx r-x r-x) означает, что владельцу даны права на чтение, запись и исполнение (7 / rwx), всем остальным — на чтение и исполнение (5 / r-x).

Примеры наиболее распространенных комбинаций для прав доступа:

Цифры

Буквы

Права

600

rw------

Владелец может просматривать и изменять содержимое, у остальных нет доступа к объекту

644

rw-r--r--

Владелец может просматривать и изменять содержимое, остальные могут только просматривать

700

rwx-- --

Владелец может просматривать, изменять содержимое, запускать исполнение объекта, у остальных нет доступа к объекту

755

rwxr-xr-x

У владельца полный набор прав, остальным доступны просмотр и исполнение

Предоставляя доступ к каталогам, необходимо учитывать, что для полноценной работы с ними нужны, как минимум, права на чтение и исполнение (5 / r-x). Право на чтение (4 / r) будет означать только возможность просмотра имен файлов, без их атрибутов (размер, владелец и пр.).

Просмотр установленных прав

Просмотреть назначенные права для файлов в текущем каталоге можно командой ls -l

Права для файлов в выводе будут отмечены флагом -, для директории — флагом d в начале строки, например:

username@server:~/new_directory$ ls -l
total 4
drwx------ 2 username customers 4096 Mar 10 14:39 dir1
-rw-r--r-- 1 username customers  128 Mar 10 14:39 test.php

Параметры в выводе:

Права    Владелец  Группа  Размер файла  Последнее изменение  Имя файла

rw-r--r--   username  customers  0             Mar 10 14:39         test.php

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

ls -l test.php
ls -l dir5

Чтобы просмотреть права на файлы во всех вложенных подкаталогах в текущей директории, можно использовать флаг -R:

ls -Rl

Либо можно указать имя директории, права на файлы и подкаталоги в которой нужно просмотреть:

ls -Rl dir1

Настройка прав доступа

Изменять права доступа для файла может только его владелец или администратор системы (т.е. root или пользователь с привилегиями sudo).

Настройку прав доступа можно выполнять:

  • при SSH-подключении;
  • через FTP-клиент.

По SSH

Настраивать права доступа можно командой chmod. Существует два способа ее использования.

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

Синтаксис команды:

chmod xxx имя_файла

Например, следующей командой можно установить для файла test.php права 755, т.е. полные права для владельца, права на чтение и исполнение для всех остальных.

chmod 755 test.php

Чтобы установить права 644 файлу test.php, необходимо выполнить:

chmod 644 test.php

Установить права 755 на каталог dir:

chmod 755 dir

В отдельных случаях может быть полезна опция -R, она позволяет назначать права рекурсивно. Будьте внимательны при ее использовании, так как она изменит права доступа для всех файлов во всех подкаталогах в текущем каталоге.

Указать права 755 всем объектам в текущем каталоге (включая подкаталоги):

chmod -R 755 *

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

Синтаксис команды:

chmod Категория Действие Права имя_файла

Категории пользователей имеют следующие обозначения:

  • u — владелец (от user)
  • g — группа (от group)
  • o — остальные (от other)
  • a — все категории (от all)

Действия с правами включают в себя:

  • + — добавить указанные права
  • - — удалить указанные права
  • = — заменить права на указанные

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

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

chmod g+rx test.php

Удалить для группы права на запись в файл test.php:

chmod g-w test.php

Удалить права на чтение и запись для остальных пользователей:

chmod o-rw test.php

Дать группе и остальным пользователям доступ к каталогу dir1 (права на чтение и исполнение):

chmod go+rx dir1

Дать группе и остальным пользователям право на чтение всех файлов и каталогов в директории new_directory (используется ключ -R):

chmod -R go+r new_directory

По FTP/SFTP (FileZilla)

Задавать и изменять права в FTP-клиенте очень просто.

  1. Подключитесь к серверу с помощью FileZilla.
  2. Найдите нужный файл или каталог.
  3. Кликните по нему правой кнопкой мыши и выберите «Права доступа к файлу».
  4. Задайте нужные права. При редактировании прав на каталог также есть возможность применить настройки к вложенным каталогам.    
  5. Сохраните изменения.

    Rwxfz2

Изменение владельца или группы файла

Чтобы изменить для файла или каталога группу или владельца, используется команда chown.

Синтаксис команды:

chown владелец:группа имя_файла

Например, чтобы установить user1 владельцем файла test.php, необходимо выполнить:

chown user1 test.php

Если одновременно надо изменить группу на customers, используем:

chown user1:customers test.php

Чтобы изменить только группу:

chown :customers test.php
Была ли статья полезна?
Ваша оценка очень важна
Пока нет комментариев