Введение
Если вы пытаетесь решить проблему с разрешениями на своем веб-сервере, перед рекурсивным изменением разрешений на chmod 777
веб-каталога убедитесь, что вы понимаете, что делает chmod -R 777
и почему вам никогда не следует устанавливать разрешения на 777.
В этой статье объясняется базовая модель разрешений Linux и значение чисел, соответствующих разрешениям.
Понимание прав доступа к файлам в Linux
В Linux доступ к файлам контролируется операционной системой через права доступа к файлам, атрибуты и права собственности. Понимание модели разрешений файловой системы Linux позволяет ограничить доступ к файлам и каталогам только авторизованным пользователям и процессам и сделать вашу систему более безопасной.
Каждый файл принадлежит определенному пользователю и группе, и ему назначаются авторизационные права доступа для трех разных классов пользователей:
- Владелец файла.
- Члены группы.
- Другие (все остальные).
Существует три типа прав доступа к файлам, которые применяются к каждому классу пользователей и позволяют указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл. Одни и те же атрибуты разрешений применяются как к файлам, так и к каталогам с разными значениями:
- Разрешение на чтение.
- Файл доступен для чтения. Например, если установлено разрешение на чтение, пользователь может открыть файл в текстовом редакторе.
- Содержимое каталога можно просмотреть. Пользователь может просмотреть список файлов в каталоге с помощью команды
ls
. - Разрешите писать.
- Файл можно изменить или отредактировать.
- Содержимое каталога можно изменить. Пользователь может создавать новые файлы, удалять существующие файлы, перемещать файлы, переименовывать файлы и т. д.
- Разрешение на выполнение.
- Файл можно запускать.
- В каталог можно войти с помощью команды
cd
.
Права доступа к файлам можно просмотреть с помощью команды ls
. Вот пример:
ls -l filename.txt
-rw-r--r-- 12 noviello users 11.0K Apr 7 20:51 filename.txt
|[-][-][-]- [------] [---]
| | | | | | |
| | | | | | +-----------> 7. Group
| | | | | +-------------------> 6. Owner
| | | | +--------------------------> 5. Alternate Access Method
| | | +----------------------------> 4. Others Permissions
| | +-------------------------------> 3. Group Permissions
| +----------------------------------> 2. Owner Permissions
+------------------------------------> 1. File Type
Первый символ показывает тип файла. Это может быть обычный файл ( -
), каталог ( d
), символическая ссылка ( l
) или файл любого другого специального типа.
Следующие девять символов представляют права доступа к файлу, три триплета по три символа в каждом. В первой тройке показаны разрешения владельца, во второй — разрешения одной группы, а в последней тройке — разрешения всех остальных.
Номер авторизации
Авторизация файла может быть представлена в числовом или символьном формате. В этой статье мы сосредоточимся на числовом формате.
Номер авторизации может состоять из трех или четырех цифр от 0 до 7.
При использовании трехзначного числа первая цифра представляет права владельца файла, вторая — группу файла, а последняя — всех остальных пользователей.
Разрешения на запись, чтение и выполнение имеют следующее числовое значение:
r
(чтение) = 4w
(запись) = 2x
(пробег) = 1- нет авторизации = 0
Показатель разрешений определенного класса пользователей представляет собой сумму значений разрешений для этого класса.
Каждая цифра количества авторизаций может быть суммой 4, 2, 1 и 0:
- 0 (0+0+0) - Нет авторизации.
- 1 (0+0+1) - Выполняет только авторизацию.
- 2 (0 + 2 + 0) — разрешение только на запись.
- 3 (0 + 2 + 1) — Записывает и выполняет разрешения.
- 4 (4 + 0 + 0) — Только чтение.
- 5 (4+0+1) - Прочитать и выполнить авторизацию.
- 6 (4 + 2 + 0) — права на чтение и запись.
- 7 (4+2+1) - Чтение, запись и выполнение авторизации.
Например, если номер авторизации установлен на 750, это означает, что у владельца файла есть права на чтение, запись и выполнение, у файловой группы есть права на чтение и выполнение, а у других пользователей нет разрешений:
- Владелец:
rwx
= 4 + 2 + 1 = 7 - Группа:
rx
= 4 + 0 + 1 = 5 - Другие:
rx
= 0 + 0 + 0 = 0
Когда используется 4-значный номер, первая цифра имеет следующее значение:
- сетуид = 4
- setgid = 2
- липкий = 1
- без изменений = 0
Следующие три цифры имеют то же значение, что и при использовании трехзначного числа. Если первая цифра равна 0
, ее можно опустить, а режим можно представить тремя цифрами. Числовой режим 0755
аналогичен 755
.
Чтобы просмотреть права доступа к файлам в числовом (восьмеричном) представлении, используйте команду stat
:
stat -c "%a" filename
644
Никогда не используйте chmod 777
Установка разрешений 777 для файла или каталога означает, что он будет доступен для чтения, записи и выполнения всеми пользователями и может представлять огромную угрозу безопасности.
Например, если вы рекурсивно измените права доступа ко всем файлам и подкаталогам каталога /var/www
в 777
, любой пользователь в системе сможет создавать, удалять или изменять файлы в этом каталоге.
Если у вас возникли проблемы с правами доступа к веб-серверу, вместо рекурсивной установки разрешения 777
измените владельца файла для пользователя, запускающего приложение, и установите права доступа к файлу на 644
, а права доступа к каталогу — на 755
.
Владельца файла можно изменить с помощью команды chown
, а разрешения — с помощью команды chmod
.
Допустим, у вас есть приложение PHP на вашем сервере, работающее как пользователь "noviello". Чтобы установить правильные разрешения, вы должны запустить:
chown -R noviello: /var/www
Только root, владелец файла или пользователь с привилегиями sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod
, особенно при рекурсивном изменении разрешений.
Вывод
Если вы используете систему Linux, очень важно знать, как работают разрешения Linux.
Вы никогда не должны устанавливать rwxrwxrwx
( 777
) для файлов и каталогов. 777 означает, что любой может делать с этими файлами что угодно.