Права доступа к файлам

Введение

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

Для чего может понадобится изменение прав доступа

Изменение прав доступа может понадобится во многих случаях. Не удаляясь от темы создания сайта, оно может понадобиться при установке какой-либо CMS, при установке плагинов, модулей или для улучшения защиты вашего сайта. Правильно выставленные права к файлам движка вашего сайта являются залогом того, что ваш сайт будет гораздо устойчивее к вредоносным программам или попыткам взлома. Однако необходимо учесть, что стоит внимательно отнестись к изменению прав доступа, так как неправильно выставленные значения могут серьезно повлиять на работу вашего сайта.

Какие существуют права доступа

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

Для файлов:

  • r — права на чтение данных файла.
  • w — права на изменение содержимого файла.
  • x — права на исполнение файла.

Для папок:

  • r — права на просмотр содержимого папки.
  • w — права на изменение содержимого папки.
  • x — права на вход в папку.

Однако в случае с изменением прав доступа через FTP-клиент, вам необходимо знать об их числовом значении.

  • Права на чтение — 4
  • Права на запись — 2
  • Права на выполнение — 1

К примеру, чтобы установить все права доступа к файлу необходимо указать числовое значение 7. То есть 4 (чтение) + 2 (запись) + 1 (выполнение) = 7 (все права доступа).

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

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

К примеру, чтобы установить все права доступа для всех пользователей необходимо выставить такое значение 777. Первое число все права для владельца, второе для группы, третье для всех остальных.

В данном руководстве мы затронем изменение прав только с помощью Файлового Менеджера и FTP-клиента.

Для получения информации об изменении прав доступа на Linux посетите данное руководство.

Description

On Unix-like operating systems, a set of flags associated with each file determines who can access that file, and how they can access it. These flags are called file permissions or modes, as in «mode of access.» The command name chmod stands for «change mode.» It restricts the way a file can be accessed.

For more information about file modes, see in our documentation of the umask command. It contains a comprehensive description of how to define and specify file permissions.

In general, chmod commands take the form:

chmod options permissions file name

If no options are specified, chmod modifies the permissions of the file specified by file name to the permissions specified by permissions.

permissions defines the permissions for the owner of the file (the «user»), members of the group who owns the file (the «group»), and anyone else («others»). There are two ways to represent these permissions: with symbols (alphanumeric characters), or with octal numbers (the digits through 7).

Let’s say you are the owner of a file named myfile, and you want to set its permissions so that:

  1. the user can read, write, and execute it;
  2. members of your group can read and execute it; and
  3. others may only read it.

This command will do the trick:

chmod u=rwx,g=rx,o=r myfile

This example uses symbolic permissions notation. The letters u, g, and o stand for «user«, «group«, and «other«. The equals sign («=«) means «set the permissions exactly like this,» and the letters «r«, «w«, and «x» stand for «read», «write», and «execute», respectively. The commas separate the different classes of permissions, and there are no spaces in between them.

Here is the equivalent command using octal permissions notation:

chmod 754 myfile

Here the digits 7, 5, and 4 each individually represent the permissions for the user, group, and others, in that order. Each digit is a combination of the numbers 4, 2, 1, and :

  • 4 stands for «read»,
  • 2 stands for «write»,
  • 1 stands for «execute», and
  • stands for «no permission.»

So 7 is the combination of permissions 4+2+1 (read, write, and execute), 5 is 4++1 (read, no write, and execute), and 4 is 4++ (read, no write, and no execute).

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

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

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

Основные права доступа к файлам в Linux

Изначально каждый файл имел три параметра доступа. Вот они:

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

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

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

Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий.

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

Основные права доступа к файлам в Linux

Изначально каждый файл имел три параметра доступа. Вот они:

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

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

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

Именно с помощью этих наборов полномочий устанавливаются права файлов в linux. Каждый пользователь может получить полный доступ только к файлам, владельцем которых он является или к тем, доступ к которым ему разрешен. Только пользователь Root может работать со всеми файлами независимо от их набора их полномочий.

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

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

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

Право на чтение (r – read) означает, что файл можно просматривать. Например, открыть файл и, если он текстовый, прочитать содержащийся в нем текст. Если это файл изображения, то можно посмотреть изображение. Наличие права только на чтение не позволяет изменять файл. То есть нельзя будет исправить текст или подрисовать что-то к картинке.

Право на запись (w – write) позволяет изменять файл, то есть дописывать в него информацию или заменять ее другой.

Право на исполнение (x – execution) имеет смысл не для всех файлов, хотя может быть установлено для любого. Это право позволяет исполнять файл как программу, при этом в файле должны быть записаны инструкции для процессора, то есть файл должен быть исполняемой программой.

Examples

chmod 644 file.htm

Set the permissions of file.htm to «owner can read and write; group can read only; others can read only».

chmod -R 755 myfiles

Recursively (-R) Change the permissions of the directory myfiles, and all folders and files it contains, to mode 755: User can read, write, and execute; group members and other users can read and execute, but cannot write.

chmod u=rw example.jpg

Change the permissions for the owner of example.jpg so that the owner may read and write the file. Do not change the permissions for the group, or for others.

chmod u+s comphope.txt

Set the «Set-User-ID» bit of comphope.txt, so that anyone who attempts to access that file does so as if they are the owner of the file.

chmod u-s comphope.txt

The opposite of the above command; un-sets the SUID bit.

chmod 755 file.cgi

Set the permissions of file.cgi to «read, write, and execute by owner» and «read and execute by the group and everyone else».

chmod 666 file.txt

Set the permission of file.txt to «read and write by everyone.».

chmod a=rw file.txt

Accomplishes the same thing as the above command, using symbolic notation.

Как посмотреть права доступа к файлам в Linux

Конечно, вы можете посмотреть права доступа к файлам в Linux с помощью файлового менеджера. Все они поддерживают эту функцию, но так вы получите неполную информацию. Для максимально подробной информации обо всех флагах, в том числе специальных, нужно использовать команду ls с параметром -l. Все файлы из каталога будут выведены в виде списка, и там будут показаны все атрибуты и биты.

Чтобы узнать права на файл linux выполните такую команду, в папке где находится этот файл:

$ ls -l

За права файлов в linux тут отвечают черточки. Первая это тип файла, который рассмотрен в отдельной статье. Дальше же идут группы прав сначала для владельца, для группы и для всех остальных. Всего девять черточек на права и одна на тип.

Рассмотрим подробнее, что значат условные значения флагов прав:

  • — — нет прав, совсем;
  • —x — разрешено только выполнение файла, как программы но не изменение и не чтение;
  • -w- — разрешена только запись и изменение файла;
  • -wx — разрешено изменение и выполнение, но в случае с каталогом, вы не можете посмотреть его содержимое;
  • r— — права только на чтение;
  • r-x — только чтение и выполнение, без права на запись;
  • rw- — права на чтение и запись, но без выполнения;
  • rwx — все права;
  • —s — установлен SUID или SGID бит, первый отображается в поле для владельца, второй для группы;
  • —t — установлен sticky-bit, а значит пользователи не могут удалить этот файл.

В нашем примере, файл test1 имеет типичные разрешения для программ, владелец может все, группа только чтение и выполнение, а все остальные — только выполнение. Для test2 дополнительно установлен флаг SUID и SGID. А для папки test3 установлен Sticky-bit. Файл test4 доступный всем. Теперь вы знаете как посмотреть права на файл linux.

Viewing Permissions of files

A quick and easy way to list a file’s permissions are with the long listing (-l) option of the ls command. For example, to view the permissions of file.txt, you could use the command:

ls -l file.txt

…which displays output that looks like the following:

-rwxrw-r-- 1   hope   hopestaff  123   Feb 03 15:36   file.txt

Here’s what each part of this information means:

The first character represents the file type: «» for a regular file, «d» for a directory, «l» for a symbolic link.

rwx

The next three characters represent the permissions for the file’s owner: in this case, the owner may read from, write to, ore xecute the file.

rw-

The next three characters represent the permissions for members of the file group. In this case, any member of the file’s owning group may read from or write to the file. The final dash is a placeholder; group members do not have permission to execute this file.

r—

The permissions for «others» (everyone else). Others may only read this file.

1

The number of hard links to this file.

hope

The file’s owner.

hopestaff

The group to whom the file belongs.

123

The size of the file in blocks.

Feb 03 15:36

The file’s mtime (date and time when the file was last modified).

file.txt

The name of the file.

Добавить комментарий

Ваш адрес email не будет опубликован. Обязательные поля помечены *

Adblock
detector