Page tree

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

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

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

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

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

ПраваДля файловДля каталогов
r, чтениеПросмотр содержимогоПросмотр содержимого, то есть списка объектов в каталоге (например, командами cat, ls)
w, записьИзменение содержимогоИзменение содержимого каталога, то есть можно добавлять и удалять файлы (даже принадлежащие другим пользователям), переименовывать их
x, исполнениеЗапуск файла на исполнениеВход в каталог (например, командой сd), просмотр атрибутов файлов, находящихся в каталоге

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

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

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

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

Цифровая записьБуквенная записьПрава
0---Отсутствие прав
1--xИсполнение
2-w-Запись
3-wxЗапись и исполнение
4r--Чтение
5r-xЧтение и исполнение
6rw-Чтение и запись
7rwxЧтение, запись и исполнение

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

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

ЦифрыБуквыПрава
600

rw------

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

644rw-r--r--Владелец может просматривать и изменять содержимое, остальные могут только просматривать
700rwx-- --Владелец может просматривать, изменять содержимое, запускать исполнение объекта, у остальных нет доступа к объекту
755rwxr-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)

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

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

Права указываются как rw и 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. Сохраните изменения.

Наверх

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

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

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

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

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

chown user1 test.php

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

chown user1:customers test.php

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

chown :customers test.php

Наверх

  • No labels