php chmod 777 на папку и включая все
Права на папки и файлы (unix/chmod)
Примеры использования команды chmod в символьном режиме
Права:
Отмена записи в файл группой и остальными пользователями:
Разрешение выполнения файла владельцем:
Предоставление группе тех прав доступа, которыми владеет владелец файла:
Отмена чтения и запись в файл пользователям группы и другим пользователям:
Примеры использования команды chmod в абсолютном режиме
Разрешение чтения, записи, выполнения файла file всеми пользователями и группами (полный доступ):
Установка разрешений на чтение и запись для владельца, группы и остальных пользователей:
Установка полного доступа к файлу для владельца и лишь чтения для группы и остальных пользователей:
Установка полного доступа к файлу владельцу файла и запрет доступа группе и другим пользователям:
Установка разрешений на чтение и запись для владельца файла и лишь чтения для группы и остальных:
Установка разрешений на чтение и запись владельцу файлу и его группе и запрет доступа для других:
Установка доступа к файлу с разрешением чтения для всех пользователей и групп:
Права доступа к файлу для чтения, записи, выполнения владельцем и чтения, выполнения группе и другим:
Разрешение доступа к файлу на чтение и выполнение пользователю и остальным и запрет доступа для группы:
Если вы хотите назначить права доступа на все файлы в текущем каталоге, просто поставьте после назначаемых прав доступа знак * (звездочка):
Результатом выполнения вышеприведенной команды будет рекурсивный “обход” всех подкаталогов текущего каталога и назначение полного доступа для всех пользователей и групп. В этой статье рассмотрены лишь некоторые примеры применения команды chmod. Если вы хотите узнать подробнее о работе команды chmod и правах доступа в Linux, обратите внимание на эту статью.
Chmod (777, 755, 444) — настройка прав доступа к файлам и папкам сайта на сервере хостинга
Здравствуйте, уважаемые читатели блога Goldbusinessnet.com. Регулирование доступа к файлам и папкам, расположенным на веб-серверах под управлением UNIX-подобных операционных систем (а они установлены на подавляющем большинстве хостингов), происходит посредством указания прав chmod для пользователей, что позволяет по максимуму обезопасить сайт. Кстати, серверы Спринтхоста, где хостится несколько моих проектов, в этом смысле не исключение.
Алгоритм, установленный в операционках Unix, отличается от привычного для многих регламента работы с файлами и каталогами в OS Windows, где защита в этом аспекте не так сильна, что весьма нередко приводит к плачевным последствиям в виде заражения системы вирусами.
При управлении же ОС на базе Unix существует реальная возможность снизить до минимума риск несанкционированного доступа просто правильно настроив chmod (данное название программы для изменения прав доступа происходит от английского словосочетания «change mode»).
Тогда основной задачей будет указание минимально возможных для доступа к файлам и папкам прав, которые тем не менее не нарушат корректную работу сайта.
Согласитесь, грех не воспользоваться возможностью серьезно усилить степень защиты вашего веб-ресурса. Конечно, в этом случае редактирование некоторых файлов будет занимать немного больше времени, но тут уж приходится выбирать: либо оптимизация безопасности системы, либо. Ниже я постараюсь систематизировать информацию по chmod, потому что здесь есть несколько нюансов, которые необходимо знать вебмастеру. Итак, начнем.
Chmod для пользователей и права доступа
Для каждой группы пользователей определены свои права доступа. При попытке соединения веб-сервер определяет, к какой группе отнести того или иного юзера. Все они разделяются на:
Если вы подключаетесь к серверу по протоколу FTP и заходите под своим логином и паролем, то будете идентифицированы как «user», если кто-либо другой подключается по ФТП, то он будет отнесен к «group», ежели пользователь использует браузер, то попадет в категорию «others».
Теперь о правах доступа chmod к файлам и директориям. По сути они немного отличаются, хотя обозначения применяются одни и те же. Права доступа к файлам позволяют производить следующие операции с объектами:
Права доступа к папкам (директориям, или каталогам) дают совершать такие действия:
Все эти права указываются администратором, который получает эту возможность посредством ввода пароля. Если установить максимально возможные ограничения на доступ к тем или иным файлам сайта, то можно максимально обеспечить его защищенность.
Если обратить внимание на выше представленные права в отношении каталогов (папок), то атрибут «w» имеет практический смысл только в сочетании с «x».
Таким образом, мы имеем пользователей «u», «g», «o» и соответственно права «r», «w», «x», причем, порядок их отображения слева направо следующий:
Для наглядности рассмотрим пример, когда владелец файла («u») имеет все возможные права: на чтение, запись и исполнение (r, w и x). Пользователи, отнесенные к категориям «g» (group) и «o» (others) — только на чтение(r). Тогда полная запись chmod по порядку отображения прав выглядит таким образом (значком дефиса «-» отмечают отсутствие какой-либо категории прав):
Итак, в соответствии с выше представленной информацией существует три группы пользователей и три категории действий с объектами. Чтобы не запутаться, попробуем систематизировать эти данные в форме таблиц. Для начала отметим отличия между правами для файлов и каталогов:
Тип прав | Для файла | Для папки |
---|---|---|
r | Чтение (просмотр содержания) | Изучение имен файлов, входящих в директорию |
w | Запись (перезапись) | Добавление, переименование и удаление файлов в каталоге |
x | Выполнение файлика | Доступ к файлам каталога и чтение их атрибутов |
Далее рассмотрим разные сочетания прав (на файлы и папки):
Тип прав для пользователей (rwx) | Для файла | Для папки |
---|---|---|
— | Все запрещено | Все запрещено |
—x | Выполнение | Чтение атрибутов файлов |
-w- | Запись (перезапись) | Все запрещено |
-wx | Запись и выполнение | Разрешено все, кроме получения имен файлов, находящихся в папке |
r— | Чтение содержимого | Чтение имен файлов |
r-x | Чтение и выполнение | Чтение имен файлов и их атрибутов |
rw- | Чтение и запись | Чтение имен файлов |
rwx | Все возможные права | Все возможные права |
Информация о правах доступа из выше приведенной таблички позволяет сделать очевидные и во многом полезные для практического применения выводы.
Для каталогов чрезвычайно редко применяются следующие совокупности прав:
Для полного просмотра любой директории необходимы права на ее просмотр и доступ к файлам и их свойствам (атрибутам), иначе говоря, минимально разумные привилегии на каталог в этом случае должны быть «r-x».
На основании выше сказанного можно отметить, что на практике для каталога чаще всего используются сочетания «rwx», «r-x» и «—»
Например, возьмем вариант «-wx» и вкратце проанализируем его. В принципе, он разрешает абсолютно все действия (конечно, при условии, что и на файлики прописаны нужные права), но закрывает доступ к именам объектов в директории, что согласитесь, веет бессмыслицей, так как во многих случаях операции с объектами основываются на знании их наименований. В этом случае, наверное, лучше использовать режим «—», который запрещает всё.
Права доступа в цифрах: chmod (777, 755, 655, 444, 400)
Выше мы разобрали вариант записи чмод символами. Однако, во многих смыслах гораздо удобнее назначать те или иные права доступа в цифровом выражении:
Теперь вновь разберем вышеприведенный пример для назначения прав доступа «rwxr—r—». Для отображения прав каждого пользователя применяется сложение его прав: r (чтение) + w (запись) + x (исполнение). Таким образом, часть записи для владельца файла u (user) «rwx» превратится в 7 (4+2+1). Для членов групп g (group) и o (others) запись «r—» преобразуется в 4 (4+0+0). Тогда вся совокупность прав в цифровом выражении будет выглядеть как «744».
В качестве резюме представлю сводную таблицу с правами доступа 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.
Для примера возьмем файл с каким-нибудь скриптом. Чтобы он запускался при определенных действиях пользователя на сайте, вполне достаточно, чтобы на этот файлик были установлены права «4» («r—»). Можно и выше (5, 6, 7), но это не имеет смысла, так как при том же эффекте понизится уровень безопасности ресурса. На папку, в которой находится файлик со скриптом, уже требуются права «5» (доступ к директории и чтение содержимого), но опять же, не больше.
Ежели необходимо, чтобы скрипт не только предоставлял какую-то информацию, но и записывал данные (скажем, те, которые вводят посетители), то права в отношении каталога как минимум (он же и максимум, опять же, исходя из безопасности) потребуются «5», однако, для файла уже надо при этих обстоятельствах проставить «6» (что обеспечит чтение и запись).
Ежели у вас простенький сайт с использованием HTML-страниц, то на сервере, где расположены его файлики, достаточно на каталоги иметь права 755, а на файлы, входящие в их состав, 644:
Владелец (user) имеет право читать и записывать файлы (исполнять запрещено), члены группы (group) и остальные (others) могут лишь их читать (rw-r—r—)
Владелец (user) вправе выполнять все действия, а группа и другие пользователи имеют доступ к директории, могут просматривать названия и атрибуты файликов, однако, не имеют прав их записывать, изменять названия и удалять (rwxr-xr-x)
Однако фокус в том, что в современных условиях для построения вебсайтов в массовом масштабе используются CMS (системы управления контентом), к которым относится и WordPress. А здесь могут находиться объекты, в которые необходимо производить записи от группы пользователей «others», а также, к примеру, папки с кэшем (в том числе создаваемые плагином кеширования), в которые загружается контент, включая изображения.
Поэтому назначения прав Чмод на те или иные файлы необходимо дифференцировать. Если вы входите в управление вебсайтом по FTP, то можете производить любые действия, однако во многих случаях работаем со своим проектом происходит через браузер (веб-обозреватель).
А в этом случае могут возникнуть проблемы, если права слишком завышены, и, наоборот, если права доступа к тому или иному файлу (папке) занижены, то возрастает угроза безопасности. Посему на основании вышесказанного можно определить некоторые рекомендации по практическому применению chmod для современного сайта под управлением ЦМС:
Для каталогов, где постоянно происходит запись и стирание файлов (например, для папки кэширования)
Применительно к папкам, в которые постоянно записываются файлы, но не удаляются
Также рекомендую на папки, находящиеся в корне сайта, поставить код доступа Чмод 444.
Указание прав доступа для сайта с помощью ФТП клиента
Теперь подробнее о том, как проделать операцию установки нужного значения chmod с помощью специальной программы, позволяющей соединиться с сервером хостинга, на котором находятся файлы, распределенные по каталогам (папкам).
Со своей стороны порекомендую ФТП менеджер (клиент) Файлзилла, который уже давно доказал свою надежность и безотказность в работе на протяжении длительного времени.
Открываете программу и подсоединяетесь через FTP к веб-серверу. В правой части («Удаленный сайт») сначала отмечаете файлы или папки, атрибуты которых будут отредактированы:
И из контекстного меню, вызванного нажатием правой кнопки мыши, выбираем «Права доступа к файлу». После этого появится диалоговое окно «Изменить атрибуты файла» (на скриншоте ниже предоставлены примеры отдельно для файла и каталога):
Присваиваем необходимые значения Чмод для выбранного (или выбранных) файлов либо папок. Обращаю внимание на то, что при редактировании прав доступа на папку присутствует опция «Перенаправить во вложенные каталоги». Это значит, что заданные права доступа применяются ко вложенным в эту директорию каталогам (папкам) либо файлам.
При отмеченной галочке ниже расположенная группа настроек станет активной и потребуется еще выбрать, как их нужно применять: ко всем файлам и каталогам, только к файлам либо исключительно к каталогам. Теперь, думаю, процесс установки chmod на практике понятен.
Приветствую всех.
Начну с того что я к сожалению сделал это по иронии для упрощения администрирования своего сервера. Однажды мне дико надоело каждый раз прописывать папке/файлу права 777/755 при заливке по FTP, так как нужно было каждый раз лесть в SSH консоль. И тут я подумал что ведь должно быть решение, вместо того чтобы понять как грамотно разграничить права для FTP ( до сих пор не знаю как :c ), я решил вообще избавиться от системы прав Linux. Не долго думая, я решил дать сразу всем файлам и папкам в системе, права 777. Команда зависла. я её ресетнул. Попробовал задать права только для home и тут первый сюрприз, отказала команда sudo. Я понял, что если перезагружусь, рабочей системы мне не видать и выдал права 755 уже дождавшись завершения команды ( благо, в этот момент был под root ). Sudo стало работать, система перезагрузилась и web сервер стал работать некорректно. Я пофиксил ему права. всё заработало. На пару дней. Потом периодически что-то начало отваливаться, как будто система начала саморазрушаться. Я правил права, настолько, насколько хватало знаний и гугления. В последний момент отказала база Mysql, сайты упали. Теперь я даже не знаю как быть.
Я столько всего там настраивал, можно ли как-то переустановить образ но сохранить данные ( конфиги в etc, папку home и т.д )?
Может можно отключить систему прав в Linux, я не до конца понимаю, как мне, например, залить файлы в папку wget’ом а редактировать через ftp. Мне можно как-то юзера FTP добавить в root группу?
Chmod 777 в папку и все содержимое
внутри store несколько файлов и папок. Я хочу дать папку store и все файлы и папки внутри store папку все разрешения.
7 ответов
Если вам нужна дополнительная информация о chmod командной видим: разрешение файла
Если под всеми разрешениями вы подразумеваете 777
перейдите в папку и
но я бы предложил не давать разрешения 777 на все папки и все содержимое. Вы должны дать конкретное разрешение каждой подпапке в папках каталога www.
в идеале дать 755 разрешение по соображениям безопасности для веб-папки.
каждое число имеет значение в разрешении. Не отдавать полностью разрешения.
если ваша производственная веб-папка имеет несколько пользователей, то вы можете установить разрешения и группы пользователей соответственно.
вы также можете использовать chmod 777 *
Это даст разрешения на все файлы в настоящее время в папке и файлы, добавленные в будущем без предоставления разрешений на сам каталог.
Примечание: это должно быть сделано в папке, где расположены файлы. Для меня это были изображения, у которых была проблема, поэтому я пошел в свою папку изображений и сделал это.
для mac должен быть «суперпользователь»;
Да, очень правильно, что на chmod команда делает файлы / подкаталоги под данным каталогом получит 777 разрешения. Но, как правило, это не хорошая практика, чтобы дать 777 для всех файлов и dirs, как это может привести к незащищенности данных. Постарайтесь быть очень конкретными в предоставлении всех прав на все файлы и каталоги. И чтобы ответить на ваш вопрос:
chmod
(PHP 4, PHP 5, PHP 7, PHP 8)
chmod — Изменяет режим доступа к файлу
Описание
Список параметров
Возвращаемые значения
Возвращает true в случае успешного выполнения или false в случае возникновения ошибки.
Примечания
Текущим пользователем является пользователь, от имени которого выполняется PHP. Возможно, что это будет не тот пользователь, под именем которого вы получаете доступ к командной оболочке или учётной записи FTP. На большинстве систем режим доступа к файлу может быть изменён только его владельцем.
Замечание: Эта функция неприменима для работы с удалёнными файлами, поскольку файл должен быть доступен через файловую систему сервера.
Смотрите также
User Contributed Notes 17 notes
BEWARE, a couple of the examples in the comments suggest doing something like this:
chmod(file_or_dir_name, intval($mode, 8));
$mode = 644;
chmod(‘/tmp/test’, intval($mode, 8));
. produces permissions that look like this:
Instead, use octdec( ), like this:
BEWARE using quotes around the second parameter.
If you use quotes eg
php will not complain but will do an implicit conversion to an int before running chmod. Unfortunately the implicit conversion doesn’t take into account the octal string so you end up with an integer version 644, which is 1204 octal
Value Permission Level
400 Owner Read
200 Owner Write
100 Owner Execute
40 Group Read
20 Group Write
10 Group Execute
4 Global Read
2 Global Write
1 Global Execute
In the previous post, stickybit avenger writes:
Just a little hint. I was once adwised to set the ‘sticky bit’, i.e. use 1777 as chmod-value.
Note that in order to set the sticky bit on a file one must use ‘01777’ (oct) and not ‘1777’ (dec) as the parameter to chmod:
Note that info at rvgate dot nl’s chmodnum function produces INCORRECT results. The resutls are base-10 numbers that only LOOK like they are octal numbers. The function also ignores setuid, setgid and sticky bits, and will produce incorrect numbers if such a file is encountered. Instead, this brute-force code works. Maybe there is something more slick, but this isn’t too CPU-intensive (note that it assumes you’ve error-checked that you indeed have a 10-character string!):
= ‘drwxr-xr-x’ ; // or whatever
$mode = 0 ;
Windows has a very different file permission model to Unix and integrates them only minimally.
The executable flag cannot be set as Windows determines it based on file extension.
The write flag cannot be set as Windows determines write access based on ACLs, which are not integrated here.
an update to ‘neil at 11 out of 10’s code for changing mode using FTP.
changes: proper array added within the function (better for those of us who only need to connect to one ftp server) so only the mode and directory name need to be passed.
the octal added, for completeness and predictable stability.
?>
for those of you, like me, who were looking for a way to make an ‘un-hackable’ uploader, here’s the closest i got, now for a field test, good luck!
I was trying to change permissions of a folder with chmod command with FTP connection. (I needed a writable folder to upload pictures with php)
I got the following respond:
«SITE CHMOD 777 uploads: command not understood»
The reason: Server is running under Windows system that does not allow to set file permissions via FTP. Conversely, the UNIX-running servers allow that.
1. If your web hosting provider has a web-based control panel that lets you set file permissions, then you need to login there and make changes.
2. It is possible to contact the hosting provider and ask them about this issue; maybe they can make the changes.
3. It is possible to change the hosting provider that has servers run on UNIX, and keep the site there.
( E_ERROR | E_PARSE );
/* Makes is so Directories are not browseable to the public,
removing only the Public = Read permission, while leaving
the other chmod permissions for the file in tact.
# User Read = 0400 (256), Write = 0200 (128), Execute = 0100 (64)
# Group Read = 0040 (32), Write = 0020 (16), Execute = 0010 (8)
# Public Read = 0004 (4), Write = 0002 (2), Execute = 0001 (1)
‘ : ‘**Live Run Activated.**
\n» ;
echo «[. IN PROGRESS. ]
For recursive chmod’ing both files and directories in one step you can use the function below. Note that this function has one argument for directory permissions and one for file permissions.
In this way you can apply the ‘x’ permission on directories, and skip it on directories. This function also skips links.
chmod_R( ‘mydir’, 0666, 0777);
Makes all files and directories within mydir/ directory accessible for everyone, but doesn’t make the files executable.
I guess for very deeply nested directories the recursion with php can become problematic, but I can be wrong because I never investigated this.
if you want to chmod directories too, use this
Thanks for your code, «imoldgreg at o2 dot co dot uk». I am using it for an instalation script that has to CHMOD a bunch of files. I have found it faster to use the same connectino for each, as shown below.
// Thanks to «imoldgreg at o2 dot co dot uk» for the base ‘CHMOD via FTP’ script.
// CHMOD the required setup files
// Connect to the FTP
$conn_id = chmod_open ();
?>
Here, the same FTP connection is used for each CHMOD command, making the execute time lower. This is essential for me, since my script is also copying a bunch of files.
I use the code of haasje@welmers.net, but have a lite alteration. (linux symlink)
Just an update of the solution with octdec. You have to give octdec the string as a parameter.
$mode = ‘644’;
chmod(file_or_dir_name, octdec($mode));