Разрешения на типичном общем веб-хосте Linux

Я пытаюсь понять права доступа к файлам в типичной общедоступной учетной записи веб-хостинга Linux. Я знаю, как установить разрешения rwx для объектов OWNER GROUP и PUBLIC для файла или каталога. Что мне не очень понятно, как правило, куда будут отображаться разрешения доступа? Я предполагаю, что:

Разрешенияпользователя будут влиять на то, что... хм... не уверен, что здесь
РазрешенияGROUP влияют на то, что может делать PHP или другой скрипт, работающий на сервере.
ДРУГИЕ (иногда называемые PUBLIC или WORLD?) Разрешения будут влиять на действия UA посетителя веб-сайта.

Кто-нибудь может исправить, подтвердить или расширить мое понимание этого?

ПОЯСНЕНИЯ:

Если я хочу разрешить моему PHP-скрипту, который запускается на сервере, разрешение на запись в файл, будет ли это разрешение указано в USER, GROUP или OTHER? Если я хочу запретить браузеру посетителя веб-сайта просматривать содержимое каталога, будет ли это разрешение указано в разделе USER, GROUP или OTHER каталога dir?

3 ответа

Решение

Укажем несколько ключевых слов кулаками.

FTPUSER   = you with your ftp client
WWWDAEMON = program (servers) that's responsible for processing your web pages and scripts 
WWWUSER   = user as which the WWWDAEMON processes your pages
BROWSER   = Someone looking at your website with a browser
FILES     = files that reside in your www/ftp site
yourgroup = group that your FTPUSER belongs to and WWWUSER does not

Вы получаете доступ к своим файлам как FTPUSER с помощью программы FTP

-rwxr-xr-x  2 FTPUSER yourgroup   72 2012-01-18 13:56 somescript.php

Теперь... потому что пользователь WWWDAEMON WWWUSER - это не вы (FTPUSER), он уважает ДРУГИЕ разрешения, когда пытается read твой сценарий (Существуют хостинговые сайты, которые запускают ваши скрипты как ваш FTPUSER). Удаление другого разрешения на чтение и exec заблокирует использование somescript.php

# this scipt is unusable trough a browser
-rwxr-x---  2 FTPUSER yourgroup   72 2012-01-18 13:56 somescript.php

Создание каталога с правами на запись во всем мире позволит вашему сценарию писать в нем, но если вы не защитите этот каталог каким-либо образом (например, с помощью.htaccess или не поместите его за пределы каталога www), это также может означать, что БРАУЗЕР может получить доступ к этим файлам напрямую, потому что:

BROWSER contacts WWWDAEMON which runs as WWWUSER so 
BROWSER can see everything processed by WWWDAEMON that the WWWUSER can. 

Обработка также означает, что WWWDAEMON также учитывает.htaccess или аналогичен блокированию доступа.

Совет должен создать сказать phpwritedir и дать ему права +rwx. добавлять .htaccess файл там (если ваш хостинг это позволяет)

deny from all

При этом ваш скрипт, запускаемый как WWWUSER, все еще может использовать этот каталог, но WWWDAEMON заблокирует любой доступ к нему BROWSER.

Вы в значительной степени перепутали.

ugo Уго это user, group а также other - нет owner, Владелец - это пользователь, обычно владеющий большинством прав.

Разрешения GROUP влияют на то, что может делать PHP или другой скрипт, работающий на сервере.

Групповые разрешения не влияют на то, что может быть сделано (чтение, запись, выполнение), но кто может это сделать. То же самое для пользователя:

Полномочия USER (иногда называемые PUBLIC?) Влияют на действия UA посетителя веб-сайта.

Пользователь является владельцем, но o используется для other, который вы называете публичным. И снова - это то, кто может сделать, а не то, что можно сделать.

Вы можете использовать сокращения ugo когда используешь chmod, что проще, чем числовые коды:

  chmod ug+w sample1
  chmod go-r sample2 
  chmod g=w  sample3 
  • sample1: добавить разрешения на запись для пользователя и группы
  • sample2: удалить права на чтение из группы и других
  • sample3: установить права доступа группы для записи

Каждый файл принадлежит пользователю и группе. Увидеть их с ls -l, Пример:

ls -l /var
insgesamt 12
drwxr-xr-x  2 root root   592 2012-01-12 08:02 backups
drwxr-xr-x 28 root root   776 2011-08-18 05:12 cache
drwxrwxrwt  2 root root    48 2010-06-22 01:46 crash
drwxr-xr-x  2 root root  3704 2010-06-05 22:01 games
drwxr-xr-x 84 root root  2296 2011-10-16 13:25 lib
drwxrwsr-x  2 root staff   48 2007-10-08 12:47 local
drwxrwxrwt  3 root root    80 2012-01-19 08:03 lock
drwxr-xr-x 22 root root  5992 2012-01-19 08:01 log
drwxrwsrwt  2 root mail    72 2012-01-18 07:56 mail

Часть списка /var. Большинство каталогов (d...) принадлежат root.root, который является как пользователем, так и группой. Однако почта и прочее - это группы, которые не идентичны пользователю.

обновление (после обновления вопроса):

Если я хочу разрешить моему PHP-скрипту, который запускается на сервере, разрешение на запись в файл, будет ли это разрешение указано в USER, GROUP или OTHER? Если я хочу запретить браузеру посетителя веб-сайта просматривать содержимое каталога, будет ли это разрешение указано в разделе USER, GROUP или OTHER каталога dir?

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

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

Для записи в файл пользователь должен иметь разрешение на запись в каталог, а не в скрипт или программу.

Если программа, записывающая в каталог, является сервером, она обычно запускается не от анонимного пользователя в сети, а от специального пользователя, такого как "www".

Поскольку вы говорите о виртуальном хостинге, позвольте мне добавить некоторые забавные подробности о хостинге, с которым я часто работаю. Исходя из моего опыта, подобная установка не является редкостью в средах с общим хостингом.

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

Моя учетная запись пользователя может быть 123456-user1, Теперь, что сделано, моя основная группа настроена на nobody или же nogroupтак что все новые файлы и папки, к которым я порождаю, принадлежат 123456-user1:nobody,

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

Так что теперь я могу читать свои файлы, ни одна группа не может читать это (потому что группа nobody), как Apache вообще читает это?
Apache читает его, запустив экземпляр под своей учетной записью. Например, в PHP он будет работать в режиме CGI для запуска файлов под вашей учетной записью.

Итак, первый октет разрешений - это то, что относится ко всей системе. Он определяет, что и вы, и посетители сайта (так сказать) могут сделать с файлом. Группу можно игнорировать. И последний октет для других в некоторой степени эквивалентен части владельца.

Другие вопросы по тегам