Каков риск, связанный при установке разрешения файла / каталога на 0777?

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

нашел вопрос здесь, но не совсем получила ответ, что я искал.

Я совершенно не осведомлен в этой теме. Каковы связанные с этим риски?

20
задан Community
18.11.2022 18:03 Количество просмотров материала 3307
Распечатать страницу

4 ответа

установка 0777 на folder (и я говорю о папке здесь, а не о файле) не связано с каким-либо риском безопасности выполнения, как некоторые из них могли бы заявить.

Execute is needed on a directory to access the inode information of the files within. You need this to search a directory to read the inodes of the files within. For this reason the execute permission on a directory is often called search permission instead.

посмотреть http://content.hccfl.edu/pollock/aunix1/filepermissions.htm

риски:

  • кто-нибудь может читать файлы в этой папке (при условии, что сам файл имеет r разрешение на пользователя / группу, пытающуюся прочитать его, или для others)
  • любой может создавать файлы в этой папке (и при необходимости выполнять их, но только те, которые созданы этим конкретным пользователем)
  • кто-нибудь может удалить файлы, принадлежащие другим людям в этой папке (файлы не защищены, независимо от владельца/разрешения)

если вы хотите защитить некоторые файлы, вам нужно создать другую папку с" нормальными " разрешениями (rw только для вас или rw для вас и вашей группы) и поместить ваши файлы в она.

С другой стороны, никто не может превратить неисполняемый файл в исполняемый (chmod не разрешается, если вы не являетесь владельцем файла).

что риски нет?

некоторые считают, что 0777 наследуется каждым файлом в папке. Это неправильно. Вы не можете редактировать файл, если у вас нет w разрешение только потому, что его родительская папка 0777. Вы не можете прочитать файл, если в нем нет r разрешение.

как обеспечить его?

если у вас есть доступ к какой-либо оболочки или если ваш FTP-клиент позволяет изменить владельца файлов, и вы знаете, какой владелец вам нужно, то вы могли бы создать папку и установить его владельца процесса apache (как правило, nobody,daemon или apache) и просто установите разрешения 0700. Проблема в том, что другие пользователи, как и вы при просмотре с помощью FTP-клиента, не смогут прочитать файлы, созданные позже PHP, который это не обязательно проблема.

хорошо, но как насчет файлов?

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

если какое-то веб-приложение нужно записать в существующий файл, достаточно установить значение 0666 (или 0600, если владелец-пользователь apache).

7
отвечен Capsule 2022-11-20 01:51

каждый, кто имеет доступ к папке (т. е. x разрешение на каждую папку в пути) может читать, изменять и выполнять файл.

Если это то, что на самом деле исполняемый есть высокий риск злонамеренных пользователей, добавляющих плохой код, а затем ждет вас, чтобы выполнить его, чтобы заставить вас выполнить какой-то злой код (например, создание копии bash, который установлен в setuid и исполняемый злоумышленником).

Если вы находитесь на общем хостинге, проверьте, если 0770 нет достаточно - если ваш FTP пользователь находится в той же группе, что и веб-сервер, этого будет достаточно. В этом случае вышеупомянутые риски обычно не применяются, так как вы никогда не собираетесь выполнять вещи в целевой папке загрузки, а PHP имеет open_basedir, чтобы ограничить доступ других пользователей к вашим файлам. Однако, если хост также поддерживает сценарии CGI (например, используя Perl), которые можно легко обойти.

2
отвечен ThiefMaster 2022-11-20 04:08

Я, вероятно, не отвечаю на ваш вопрос о рисках, но я могу догадаться, почему вы не можете писать.

вероятно, у родительской папки нет прав на запись для этого пользователя...

используйте что-нибудь в строке chmod ugo+w whateverfile в родительскую папку рекурсивно, пока вы не сможете создавать в ней файлы:)

0
отвечен Shrinath 2022-11-20 06:25

предполагая, что вы уже исключили некоторые базовые настройки безопасности PHP (ограничения open_basedir и др.) - debugging и error_reporting(E_ALL); (убедитесь, что вы регистрируете ошибки, а не отображаете их в производственных системах), очень полезно проверить это :p.

Если вы установите права доступа к папке 777 (world-writable) и процесс все еще не может писать в эту папку, то может быть запущена реализация MAC, которая предотвращает только такие вещи (SELinux или AppArmor, вероятно, кандидаты если вы используете Linux). Если это так, то изменение политики, которую они навязывают поможет решить эту проблему. Установка папки с возможностью записи является возможной проблемой безопасности (особенно, когда рассматриваемая папка подвергается внешнему миру), а также, скорее всего, можно избежать.

0
отвечен wimvds 2022-11-20 08:42

Постоянная ссылка на данную страницу: [ Скопировать ссылку | Сгенерировать QR-код ]

Ваш ответ

Опубликуйте как Гость или авторизуйтесь

Имя
Вверх