Вы пытаетесь исправить проблему с правами доступа к своему веб-серверу и нашли информацию в Интернете, где говорят, что вам нужно рекурсивно установить chmod 777 на веб-каталог. Перед этим убедитесь, что вы понимаете, что делает chmod -R 777 и почему никогда не следует устанавливать разрешения на 777.
В этой статье объясняется базовая модель разрешений Linux и что означают числа, соответствующие разрешениям.
В Linux доступ к файлам контролируется операционной системой, используя права доступа к файлам, атрибуты и права собственности. Понимание модели разрешений файловой системы Linux позволяет ограничить доступ к файлам и каталогам только авторизованным пользователям и процессам и сделать вашу систему более безопасной.
Каждый файл принадлежит конкретному пользователю и группе и ему назначены права доступа для трех разных классов пользователей:
Существует три типа прав доступа к файлам, которые применяются к каждому классу пользователей и позволяют указать, каким пользователям разрешено читать файл, записывать в файл или выполнять файл. Одинаковые атрибуты разрешений применяются как к файлам, так и к каталогам с различным значением:
Права доступа к файлам можно просмотреть с помощью команды ls. Вот пример:
ls -l filename.txt
-rw-r--r-- 12 andreyex users 12.0K Apr 8 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.
Когда используется 3-значное число, первая цифра представляет права владельца файла, вторая – группу файла, а последняя – всех остальных пользователей.
Разрешения на запись, чтение и выполнение имеют следующее числовое значение:
Цифра разрешений определенного пользовательского класса является суммой значений разрешений для этого класса.
Каждая цифра номера разрешений может быть суммой 4, 2, 1 и 0:
Например, если номер разрешения установлен равным 750, это означает, что владелец файла имеет права на чтение, запись и выполнение, группа файла имеет разрешения на чтение и выполнение, а другие пользователи не имеют разрешений:
Когда используется 4-значный номер, первая цифра имеет следующее значение:
Следующие три цифры имеют то же значение, что и при использовании трехзначного числа. Если первая цифра равна 0, ее можно опустить, а режим можно представить тремя цифрами. Числовой режим 0755 такой же, как 755.
Чтобы просмотреть разрешения для файла в числовой (восьмеричной) записи, используйте команду stat:
stat -c "%a" filename
644
Установка 777 разрешений для файла или каталога означает, что он будет доступен для чтения, записи и выполнения всеми пользователями и может представлять огромную угрозу безопасности.
Например, если вы рекурсивно измените разрешения всех файлов и подкаталогов в каталоге /var/www на 777, любой пользователь в системе сможет создавать, удалять или изменять файлы в этом каталоге.
Если у вас возникают проблемы с правами доступа к веб-серверу, вместо рекурсивной установки разрешения 777, измените владельца файла на пользователя, запустившего приложение, и установите права доступа к файлу и разрешения для каталога с 644 на 755.
Владелец файла может быть изменен с помощью chownкоманды и разрешений с командой chmod.
Допустим, на вашем сервере есть приложение PHP, работающее от имени пользователя «andreyex». Чтобы установить правильные разрешения, вы должны запустить:
chown -R andreyex: /var/wwwfind /var/www -type d -exec chmod 755 {} \;find /var/www -type f -exec chmod 644 {} \;
Только root, владелец файла или пользователь с правами sudo могут изменять права доступа к файлу. Будьте особенно осторожны при использовании chmod, особенно при рекурсивном изменении разрешений.
Если вы управляете системой Linux, важно знать, как работают разрешения Linux.
Вы никогда не должны устанавливать права доступа 777 (rwxrwxrwx), для файлов и каталогов. 777 означает, что любой может сделать что угодно с этими файлами.
Не стесняйтесь оставлять комментарии, если у вас есть какие-либо вопросы.