Php изменить права на файл

Обновлено: 04.07.2024

Для большинства хостов Unix типично следующее, но вы можете узнать у своего хоста, можно ли использовать более строгие разрешения, позволяющие PHP выполнять запись в файлы (666) и папки (777) . На серверах Windows следующее не будет применяться, но вам необходимо убедиться, что файлы и папки доступны для записи ExpressionEngine. Возможно, вам придется связаться с вашим хостом для этого.

Не уверен, что это значит. Я могу изменить определенные файлы и папки на 666 и 777 соответственно, где я - chown'er, но вышеупомянутое звучит так, как будто мне нужно разрешить PHP делать это тоже?

ОРИГИНАЛЬНЫЙ ВОПРОС:

Мне нужно убедиться, что PHP может писать в определенные файлы (666) и папки (777).

Как мне это сделать?

Я не уверен, какую проблему вы пытаетесь решить? Если вы можете получить доступ к каталогу, в котором находится файл, и у вас есть разрешение на выполнение, вы можете записывать в файлы и каталоги с этими разрешениями. Для большинства хостов Unix следующее типично, но вы можете узнать у своего хоста, можно ли использовать более ограничивающие разрешения, позволяющие PHP выполнять запись в файлы (666) и папки (777). Отсутствует ли кома? в противном случае эта фраза не имеет никакого смысла. Если каталог верхнего уровня не ограничен, у вас нет проблем с записью в доступные для записи файлы или каталоги. Я просто сделал копию и вставил из документации. Плюс, это причина, по которой я разместил вопрос, так как не понимаю, что означает эта цитата . Если вы видите документацию, в которой говорится, что вы используете 666 или 777 в отношении веб-файлов, вам, вероятно, следует игнорировать их, если для этого нет веских причин. Обычно это что-то, написанное кем-то, кто не мог понять, как установить правильные права доступа, и сдался и дал всем доступ для чтения или записи к файлам.

Я дополню ответы Рахму и М.В. техническим решением. Все, что следует, действительно только для UNIX-подобных систем.

Прокрутите раздел chmod / chown для примера, используя ACL - более мощный инструмент, чем режимы файлов UNIX.

Поиск имени пользователя вашего веб-сервера

Чтобы проверить это, попробуйте:

Убедитесь, что имя пользователя, которое возвращает эта команда, является логичным (например, я использую nginx 99% времени, но эта команда возвращает tomcat7 , веб-сервер Java, который я установил один раз) .

Предоставление разрешений веб-серверу: использование chmod и chown

Выполнение chmod 666 или 777 (решение для такого рода проблем в плохих документациях / руководствах) может волшебным образом заставить вещи работать, но небезопасно. Предоставление разрешений 666 или 777 даст доступ к «другим». Так что не только Apache, но также grandmother и nsa (при условии, что эти учетные записи пользователей существуют на вашем компьютере - но на самом деле нет, пожалуйста, избегайте этого, если это не только для тестирования / устранения неполадок).

Лучше быть более конкретным и дать разрешения только вам и Apache. Измените группу ваших файлов, чтобы предоставить полный контроль над вашими файлами веб-серверу. Для этого рекурсивно измените владельца:

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

Затем сделайте все возможное, chmod чтобы дать группе www-data те же права, что и у вас. Например, если текущий режим равен 640 (6 для вас, 4 для www-данных, 0 для других, переводя на -rw-r -----) , установите его на 660 (6 для вас, 6 для www- данные, 0 для других, перевод на -rw-rw ----) . Посмотрите ответ Рахму, чтобы узнать больше о файловых режимах, это старый, но элегантный механизм.

Чтобы избежать манипуляции с загадочными числами chmod , вы также можете использовать этот синтаксис:

Это означает, что «для группы ( g ), добавить + ( rw ) разрешения на чтение и запись ( ) для папки your/folder/ , рекурсивно ( -R )».

В 90% случаев этого должно быть достаточно.

Мой предпочтительный метод: использование ACL (Access Control List)

Иногда первого решения недостаточно. Я возьму пример Symfony Framework, который регистрирует и кэширует много данных. Так что для этого нужен доступ на запись в соответствующую папку.

И метод chmod / chown может оказаться недостаточным, если вы параллельно используете консоль Symfony в CLI (под моей учетной записью пользователя) и в Интернете (пользователь веб-сервера). Это вызывает много проблем, потому что Symfony постоянно изменяет разрешения.

В этом случае мы будем использовать ACL (Access Control List), который является более продвинутым способом управления разрешениями во многих системах UNIX.

Вот команды, приведенные в официальной документации Symfony ( пожалуйста, измените app/cache и app/logs под свои нужды ):

В системе, которая поддерживает chmod +a (т.е. не Debian / Ubuntu)

В системе, которая не поддерживает chmod +a (чаще всего)

Вам понадобится setfacl инструмент; возможно, он установлен в вашей системе по умолчанию, поэтому попробуйте setfacl -v проверить, доступна ли команда.

Если команда недоступна и вы используете Ubuntu 14.04+, вам просто нужно установить инструмент:

В противном случае следуйте документации по вашей ОС, потому что вам может потребоваться изменить способ монтирования вашего раздела ( документация по Ubuntu здесь ).

У меня никогда не было проблем с этим методом, доволен или ваши деньги обратно.

Работа с правами доступа к файлам через PHP

В прошлой статье я достаточно подробно рассказал о правах доступа к файлам. Разумеется, это только теория, которую необходимо знать, чтобы правильно использовать функции для работы с правами доступа к файлам через PHP. Эту тему мы разберём в данной статье.

Я уже говорил, что у файла всегда есть владелец, и у каждого файла имеется информация о его владельце. Каждый пользователь имеет свой UID (уникальный идентификатор), и именно этот идентификатор хранится в каждом файле. Чтобы узнать его, используется функция fileowner():

После этого будет получен UID владельца файла "myfile.txt". Чтобы сменить владельца файла, надо воспользоваться функцией chown():

В данном примере мы передали права владельца "myfile.txt" пользователю myuser. Также вместо имени пользователя можно указывать его UID.

Следующая пара PHP-функций - это filegroup() и chgrp(), которые работают аналогично функциям fileowner() и chown(), но отвечают за группу пользователей:

<?php
echo filegroup("myfile.txt");
chgrp("mygroup", "myfile.txt");
?>

И, наконец, последние, но самые важные функции для работы с правами доступа к файлам через PHP - это fileperms() и chmod():

<?php echo fileperms("myfile.txt");
chmod("myfile.txt", "0777");
?>

Как Вы уже догадались, функция fileperms() возвращает права доступа к файлу. А функция chmod() устанавливает новые права доступа к файлу. Также заметьте, что права задаются с обязательным указанием ведущего нуля!

Это самые основные и самые важные функции PHP для работы с правами доступа. Я бы даже сказал, что реально используются только последние две, поэтому с ними потренируйтесь в работе. И ещё раз напоминаю, что права доступа имеются только в Unix-системах, а в Windows их вообще нет, поэтому и данные функции там так же будут работать некорректно.


Если Вы не хотите пропустить новые материалы на сайте,
то Вы можете подписаться на обновления: Подписаться на обновления

Если у Вас остались какие-либо вопросы, либо у Вас есть желание высказаться по поводу этой статьи, то Вы можете оставить свой комментарий внизу страницы.

Порекомендуйте эту статью друзьям:

Если Вам понравился сайт, то разместите ссылку на него (у себя на сайте, на форуме, в контакте):

Она выглядит вот так:

Комментарии ( 8 ):

А можно это как-то сделать чтобы это не видели пользователи? То есть, если они смотрят исходный код страницы и чтобы они в нем не увидели этого PHP-кода?

Они его и не увидят. Этот код выполняется на сервере ещё до того, как пользователи увидят конечную HTML-страницу.

Здравствуйте! Извините за возможно глупый вопрос, но когда добавляешь файлы через Админ-панель в папку с правами, например 744, нужно сначала поменять права на 777, добавить файл и обратно поменять права.

По fileowner и filegroup выдаёт нули, а по fileperms выдаёт 33206. Такие дела.

Дочитал и понял, в Windows не работает, можешь не замарачиваться

Эта статья рассчитана на работу с хостингом (на Linux) через фтп-клиент к примеру. В Windows не много по-другому все устроено.

Алгоритм, установленный в операционках Unix, отличается от привычного для многих регламента работы с файлами и каталогами в OS Windows, где защита в этом аспекте не так сильна, что весьма нередко приводит к плачевным последствиям в виде заражения системы вирусами.

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

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

Согласитесь, грех не воспользоваться возможностью серьезно усилить степень защиты вашего веб-ресурса. Конечно, в этом случае редактирование некоторых файлов будет занимать немного больше времени, но тут уж приходится выбирать: либо оптимизация безопасности системы, либо. Ниже я постараюсь систематизировать информацию по chmod, потому что здесь есть несколько нюансов, которые необходимо знать вебмастеру. Итак, начнем.

Chmod для пользователей и права доступа

Для каждой группы пользователей определены свои права доступа. При попытке соединения веб-сервер определяет, к какой группе отнести того или иного юзера. Все они разделяются на:

Теперь о правах доступа chmod к файлам и директориям. По сути они немного отличаются, хотя обозначения применяются одни и те же. Права доступа к файлам позволяют производить следующие операции с объектами:

Права доступа к папкам (директориям, или каталогам) дают совершать такие действия:

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

Итак, в соответствии с выше представленной информацией существует три группы пользователей и три категории действий с объектами. Чтобы не запутаться, попробуем систематизировать эти данные в форме таблиц. Для начала отметим отличия между правами для файлов и каталогов:

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

Далее рассмотрим разные сочетания прав (на файлы и папки):

Тип прав для пользователей (rwx) Для файла Для папки
--- Все запрещено Все запрещено
--x Выполнение Чтение атрибутов файлов
-w- Запись (перезапись) Все запрещено
-wx Запись и выполнение Разрешено все, кроме получения имен файлов, находящихся в папке
r-- Чтение содержимого Чтение имен файлов
r-x Чтение и выполнение Чтение имен файлов и их атрибутов
rw- Чтение и запись Чтение имен файлов
rwx Все возможные права Все возможные права

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

Права доступа в цифрах: chmod (777, 755, 655, 444, 400)

Выше мы разобрали вариант записи чмод символами. Однако, во многих смыслах гораздо удобнее назначать те или иные права доступа в цифровом выражении:

В качестве резюме представлю сводную таблицу с правами доступа chmod в буквах и цифрах:

chmod Файлы Папки (директории)
Выражен. в цифрах Выражен. в символах
0 --- Запрещены все действия Запрещены все действия
1 --x Выполнение Чтение атрибутов файлов*
2 -w- Запись Запрещены все действия
3 (2 + 1) -wx Запись и выполнение Разрешено все, кроме доступа к именам файлов**
4 r-- Чтение содержимого Чтение имен файлов
5 (4 + 1) r-x Чтение и выполнение Чтение имен файлов и их атрибутов***
6 (4 + 2) rw- Чтение и запись Чтение имен файлов
7 (4 + 2 +1) rwx Все разрешено Все разрешено

Теперь представлю еще одну таблицу, которая отражает суммарные права chmod для абсолютно всех групп пользователей (user, group, others) в формате цифр:

chmod Владелец u (user) Член группы g (group) Другие пользователи 0 (others)
777 Чтение, запись, исполнение Чтение, запись, исполнение Чтение, запись, исполнение
776 Чтение, запись, исполнение Чтение, запись, исполнение Чтение, запись
775 Чтение, запись, исполнение Чтение, запись, исполнение Чтение, исполнение
774 Чтение, запись, исполнение Чтение, запись, исполнение Чтение
766 Чтение, запись, исполнение Чтение, запись Чтение, запись
755 Чтение, запись, исполнение Чтение, исполнение Чтение, исполнение
655 Чтение, запись Чтение, исполнение Чтение, исполнение
644 Чтение, запись Чтение Чтение
444 Чтение Чтение Чтение

Это основные комбинации, которые наиболее часто используются в работе вебмастера. Другие формируются по аналогии. Если вы являетесь администратором сайта, но работаете с проектом, не подсоединившись по FTP протоколу, вы также относитесь к группе "Остальные пользователи". В таком случае при работе с сайтом нужно учитывать последнюю цифру в значении chmod.

Ежели у вас простенький сайт с использованием HTML-страниц, то на сервере, где расположены его файлики, достаточно на каталоги иметь права 755, а на файлы, входящие в их состав, 644:

Владелец (user) имеет право читать и записывать файлы (исполнять запрещено), члены группы (group) и остальные (others) могут лишь их читать (rw-r--r--)

Владелец (user) вправе выполнять все действия, а группа и другие пользователи имеют доступ к директории, могут просматривать названия и атрибуты файликов, однако, не имеют прав их записывать, изменять названия и удалять (rwxr-xr-x)

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

А в этом случае могут возникнуть проблемы, если права слишком завышены, и, наоборот, если права доступа к тому или иному файлу (папке) занижены, то возрастает угроза безопасности. Посему на основании вышесказанного можно определить некоторые рекомендации по практическому применению chmod для современного сайта под управлением ЦМС:

Для каталогов, где постоянно происходит запись и стирание файлов (например, для папки кэширования)

Применительно к папкам, в которые постоянно записываются файлы, но не удаляются

Для файлов, используемых только для чтения (.php, .html и др.)

Также рекомендую на папки, находящиеся в корне сайта, поставить код доступа Чмод 444.

Указание прав доступа для сайта с помощью ФТП клиента

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

Со своей стороны порекомендую ФТП менеджер (клиент) Файлзилла, который уже давно доказал свою надежность и безотказность в работе на протяжении длительного времени.



При отмеченной галочке ниже расположенная группа настроек станет активной и потребуется еще выбрать, как их нужно применять: ко всем файлам и каталогам, только к файлам либо исключительно к каталогам. Теперь, думаю, процесс установки chmod на практике понятен.

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

Права доступа к файлам - это основа основ. Это выражение совсем непонятно для Вас, если Вы работали только под Windows. Какие ещё права, спросите Вы? И, далее скачав скрипты, которые представлены на этом сайте и, увидев, что от Вас постоянно требуют поставить на файлы права доступа 755 или 777, Вы будете находиться в замешательстве. Попробуем объяснить, что же такое ПРАВА ДОСТУПА.

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

То есть, все анти-вирусники создают вирус, затем распространяют его по всему миру, потом кричат, что только у них есть антивирус и только они смогут решить проблему с вирусами. То же самое касается конторы, которая сделала Windows, проблему с вирусами эта контора, если бы захотела, решила бы за два дня). Вы скажете, а что бывает по другому, что есть платформа, в которой вирусы не живут? Конечно, бывает. Это системы, которые базируются на платформе Unix. Большинство серверов в мире работают именно под этой системой, а дырявый Windows выброшен из интернета навсегда.

Что же отличает Unix от Windows? А тем, что права доступа в системах Unix раздаёт главный администратор компьютера, который владеет основным паролем, и он, и только он, может поставить, например, право в данный файл что-то записывать. А так, все остальные файлы и папки можно только читать. После этого становится понятно, что на компьютере, где в основном размещены файлы и папки с пометкой 'только для чтения', вирусам делать нечего, они не могут туда себя ни записать, ни исполниться.

Права доступа к файлам и каталогам - основные элементы защиты системы. Сами права доступа разделяются на три категории:

права владельца файла- u
права группы- g
права всех остальных пользователей- o

Права доступа указываются с помощью команды chmod ().

r -право на чтение
w -право на запись
x -право на исполнение

Комбинация r, w и x для трех категорий u, g и o и являются правами доступа к файлам. Если нет какой-то категории права, она указывается знаком дефис. Права доступа указываются последовательно:
владелец u, группа - g, все остальные o.

В следующем примере, владелец файла имеет право на чтение файла, запись в него и исполнение, а все остальные только на чтение: rwxr--r--
То есть: rwx (права владельца u), r-- (права группы g), r-- (права всех остальных o).

Права доступа обозначаются так же цифрами:
4 - читать (r),
2 - записывать (w),
1 - исполнять (x).
0 - ничего нельзя делать.
Сумма этих цифр и показывает права доступа. 7 = 4 + 2 + 1 + 0 (полные права), 5 = 4 + 1 (чтение и выполнение), 6 = 4 + 2 (чтение и запись), итд.

То есть, давайте поманипулируем этими цифрами.

Теперь перейдем к самому главному - для чего же надо менять права доступа? Вы завели себе хостинг, сделали сайт и потом всё это дело переписали в ту папку, которую Вам под это дело выделили. Вы использовали логин и пароль, который заранее обговорили со своим администратором хоста.

После этого, Вы являетесь владельцем всех папок и файлов, находящихся в той зоне, где действуют Ваши логин и пароль на сервере. У Вас, как у собственника, права доступа - rwx или в цифровом представлении - 7. Владельцем Вы станете только тогда, когда система попросит от Вас логин и пароль, и Вы авторизируйтесь в ней. Только после этого, для Вас будут те полные права, о которых мы говорили.

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

Далее, для простоты, первые два отсека в правах доступа мы обозначим 0, то есть будем смотреть только на последнюю цифру доступа, так как она обозначает доступ обычных пользователей интернет. То есть, будем ставить 005, 007, итд.

Ещё раз, что означает 'пользователи могут читать файлы' - это значит, запускается Ваш скрипт на сайте, который читает файл, система понимает, что скрипт запустил юзер и к нему просматривается последняя цифра доступа к данному файлу. Если она 4, 5, 6 или 7 (004, 005, 006, 007), ваш скрипт может прочитать файл и выдать результат в Вашу программу, запущенную юзером, и, в итоге вернуться к нему в виде распечатки. Кроме этого, система просматривает и права доступа к каталогу, где лежит файл. Они должны быть: 1, 5 или 7 (001, 005, 007), чтобы программа могла зайти в каталог и прочитать известный ей файл. То есть, необязательно ставить права доступа к папке, где лежит простой неизменяемый в размерах файл 007, и права доступа к самому этому файлу 005, 006, 007. Хватит поставить на папку 001, а на файл 004. Если права будут ниже этих цифр, процесс, запущенный пользователем ничего не прочитает из вашего файла. Кроме этого, если на папку Вы поставите права (005, 007), все юзеры интернета смогут прочитать содержимое такого каталога, что не совсем правильно.

Что означает 'пользователи могут изменять файлы' - это значит, запускается Ваш скрипт на сайте, который читает файл, а потом пытается его изменить (например, добавляет в файл статистики Ip адрес этого пользователя), система понимает, что скрипт запустил юзер и к нему просматривается последняя цифра доступа к данному файлу. Если она 6 или 7 (006, 007), ваш скрипт может прочитать, а потом и изменить файл, к которому было обращение и выдать результат в Вашу программу, запущенную юзером, и, в итоге вернуться к нему в виде распечатки. То есть, здесь не хватит прав доступа 002 (-w-), только запись, так как перед изменением файла, его обязательно надо сначала прочитать. Кроме этого, система просматривает и права доступа к каталогу, где лежит файл. Они должны быть: 1, 5 или 7 (001, 005, 007), чтобы программа могла зайти в каталог и прочитать известный ей файл. То есть, необязательно ставить права доступа к каталогу, где лежит изменяемый в размере файл 007 и права доступа к самому этому файлу 007, можно поставить на папку 001, а на файл 006. Если права будут ниже этих цифр, процесс, запущенный пользователем ничего не запишет в ваш файл. ничего не прочитает из вашего файла. Кроме этого, если на папку Вы поставите права (005, 007), все юзеры интернета смогут прочитать содержимое такого каталога, что не совсем правильно.

Что означает 'пользователи могут изменять каталог' - это значит, запускается Ваш скрипт на сайте, который пытается записать файл в каталог или стереть его оттуда, система понимает, что скрипт запустил юзер и к нему просматривается последняя цифра доступа к каталогу, она должна быть 3 или 7 (003, 007), только тогда ваш скрипт, запущенный юзером, может записать в данный каталог файл или стереть его оттуда. Если права к такому каталогу будут 006 (чтение и запись), прав не хватит, так как скрипт не сможет зайти в каталог, если будет 005 (чтение и заход в каталог), значит запись запрещена. То есть, на такие каталоги лучше ставить права 003. Если Вы поставите права 007, все юзеры интернета смогут прочитать содержимое такого каталога, что не совсем правильно.

Итак, обычно на сервере, куда Вы переписали Ваши файлы, стоят такие права доступа:

Папки 755 владелец может всё, группа и все остальные могут читать папки и заходить в них, записывать файлы, изменять названия файлов, стирать файлы в папках им запрещено. (rwxr-xr-x)
Файлы 644 владелец может читать и изменять файлы, исполнять ему их запрещено, все остальные могут только файлы читать, изменять и исполнять им запрещено. (rw-r--r--)

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

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

Тогда права доступа должны выглядеть так:

Папки, все (в том числе, с базами данных) 711
Папки, куда должны записываться, стираться файлы 733
Простые файлы для чтения (.html, .php) 744
Файлы с базами данных (.dat) 766

Если на всех Ваших папках стоят права 711 или 733, то все ваши скрипты будут спокойно заходить во все папки и читать оттуда файлы и преспокойно работать. А юзеры интернет не смогут броузером прочитать содержимое таких папок, если, конечно они не знают название файлов. Если название файла юзеру будет известно, то он сможет в броузере набрать папку/название_файла и получить его распечатку. Как создать папки, где информацию нельзя считать вообще, описано в другой статье здесь. На это есть специальные файлы .htaccess, но их использование сильно тормозит сервер, поэтому лучше их использовать на тех папках, где лежат пароли или настройки сайта. На все остальные папки поставьте права доступа 711 - этого вполне хватит. Кроме этого, на те папки куда будут записываться - стираться файла, ставьте права 733, не надо ставить 777 - нет смысла, так как, если стоят права 733 - значит пользователь не сможет отдельно от ваших скриптов читать содержимое каталогов.

На все файлы, которые не будут меняться права не выше 744 (файлы .html, .php, идр.). На файлы с базами данных (.dat) ставьте 766. Обратите внимание, что на файлы, мы вообще, не ставим самые большие права 777, так как это совсем не нужно, и даже, очень вредно.

Как определить текущие права доступа? Заведите в папке файл file.txt, и в саму папку запишите такой небольшой скрипт:

// права доступа к текущей папке
$file perms = substr ( decoct ( fileperms ( $path ) ), 2, 6 );
if ( strlen ( $file perms ) == '3' ) < $file perms = '0' . $file perms ; >
print "Права доступа к каталогу <b>". $path ."</b>: " . $file perms . "<br>\n";

Вот такими простыми функциями определяется текущее значение прав доступа к каталогу и к файлу.

Ну вот, кажется теперь Вы стали немного понимать, что такое права доступа и какие они должны быть. Но встает вопрос, как же их изменить? Суперпользователь root меняет их на сервере с помощью команды chmod, из командной строки:

$ chmod 777 filename

После этого, на файл filename распространятся самые большие права доступа, но Вы не имеете доступа к серверу, просить системного администратора изменить Вам права доступа на Ваши файлы не принято, а средствами Php, увы, права изменить нельзя, потому что система увидит, что Вы владелец ресурса, только после авторизации, то есть проверки пароля в базе данных Linux. Обычными средствами, через php сделать это трудно, поэтому Вы будете заходить на сайт броузером как обычный юзер:

<?php
chmod ( $file name , '0777' );
?>

То есть, этот скрипт не работает, потому что юзеру, которым Вы будете считаться запрещено менять права функцией chmod.

[ x ] [ x ] [ - ] [ x ] [ - ] [ - ] [ x ] [ - ] [ - ] для файлов, по умолчанию 644
[ x ] [ x ] [ x ] [ x ] [ - ] [ x ] [ x ] [ - ] [ x ] для папок, по умолчанию 755

Это и есть те самые три группы: первые три отсека - Владелец, вторые три отсека - Группа, третьи три отсека - Все остальные. В этих группах по порядку идут: доступ на чтение, на запись, на исполнение, где крест обозначает, что эта опция для данной группы задействована. То есть, меняйте права доступа по ftp через файловый менеджер, другого пути у Вас может не быть.

Права доступа через ftp и менджер Far должны будут выглядеть так:

Папки, где должны записываться файлы 733 [ x ] [ x ] [ x ] [ - ] [ x ] [ x ] [ - ] [ x ] [ x ]
Папки, абсолютно все остальные 711 [ x ] [ x ] [ x ] [ - ] [ - ] [ x ] [ - ] [ - ] [ x ]
Простые файлы 744 [ x ] [ x ] [ x ] [ x ] [ - ] [ - ] [ x ] [ - ] [ - ]
Файлы, с базами данных 766 [ x ] [ x ] [ x ] [ x ] [ x ] [ - ] [ x ] [ x ] [ - ]

Что получилось при таком подходе. Все папки читать запрещено. 733 - права для папок куда будут писаться новые и стираться старые файлы. 711 - права для всех остальных папок. 744 - права к обычным файлам, 766 - права к файлам с базами данных. Мы рассмотрели права доступа, если Php является модулем Апача.

Однако, если PHP работает, как CGI, а не как модуль Апача, то права будут другими. Дело в том, что тогда PHP включается на сервере от имени того, кто записал скрипты на сайт, от есть от имени собственника.

Тогда, чтобы файл записать в папку на папку надо ставить права 700 или 300. Но тогда не будет видно выводимые в броузер из этой папки файлы, например картинки. Значит, если в папку надо файлы просто записывать (например, папка с базами данных), то на неё ставим права 300. В этом случае, скрипт сможет записать или стереть файл в этой папке, если из папки будут выводиться файлы в броузер, то на неё надо ставить 355, то есть чтение и исполнение дополнительно. На все другие папки ставим 555.

На те файлы, в которые надо что-то записывать ставим права 600. На все остальные 400.

Мы с Вами рассмотрели, какие на самом деле должны быть права доступа, и как они должны работать. Если, всё же Ваши скрипты не работают, то есть сам сервер сконфигурирован как-то по-хитрому, то повышайте права доступа. Чтобы вообще не задумываться об этом, можете на всё установить самые большие права 777.

Если Вы не знаете, что такое менеджер Far, то можете воспользоваться нашим скриптом . здесь. , по поводу входа по Ftp и изменению прав доступа к файлам и папкам на Вашем ресурсе. В нашей программе, если рядом с файлом или папкой стоит слово no - значит нет прав доступа на запись, просто кликните на этом слове и права появятся.

Удачи в этом начинании.

P.S. Обратите внимание, что мы на .php файлы совсем не ставим права выше 766. Почему? Ведь, .php файлы исполняемые скрипты, почему же на них не ставить права на исполнение? Мы ставим на них права 744. Ставить права доступа к ним выше этих цифр не надо, так как сервер понимает, что это простые ТЕКСТОВЫЕ файлы, которые надо просто ПРОЧИТАТЬ, а на сервере есть Php интерпретатор, который, в итоге, и исполняет данный текстовый файл. Вот на тот файл, исполняемый файл php.exe (Php модуля для Апаче) и ставятся права 777 (это очень грубое в первом приближении объяснение). Но, это дело уже админов сервера, а не как, не наше с Вами, это выходит за рамки данной статьи.

Пытался задать права с ресурсами виндоус выходит сообшение, мол сервер не поддерживает изменения разрешения прав.

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

Мне сказали, что форма моя, которую я скачал рабочая и они проверили ее у себя, и сказали, что мол я не выставил права 777.

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

Спасибо за внимание.

Ответ: на картинке показано, какие галочки надо поставить, чтобы получить права 777, прикол в том, что это точно так же как и в Unix, но мы предлагаем вам скачать FAR-менеджер и менять права в нём.

Права доступа в Far менеджер. На следующих картинках показаны права.

На первой картинке - показан как выглядит Far, и на ней мы встали (остановились) на файл 777.pl

На второй - показаны права этого файла ТОЛЬКО на чтение.

А на третьей показаны права и на ЗАПИСЬ. Чтобы права изменить, встаньте на файл и нажмите ctrl+A , тогда выплывет та картинка, что покажет права.

Эти картинки и показаны ниже. Не забывайте, что так же менять надо и права к папкам, встаньте на папку и нажмите ctrl+A .

Читайте также: