5

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

Права пользователя будут влиять на то, что ... хм ... не уверен, что здесь
Разрешения GROUP влияют на то, что может делать PHP или другой скрипт, работающий на сервере.
ДРУГОЙ (иногда называемый ОБЩЕСТВЕННЫЙ или МИР?) разрешения будут влиять на то, что может сделать UA посетителя веб-сайта

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

ПОЯСНЕНИЯ:

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

3 ответа3

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.

3

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

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

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

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

ПОЛЬЗОВАТЕЛЬ (иногда называемый ПУБЛИЧНЫМ?) разрешения будут влиять на то, что может сделать 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».

2

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

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

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

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

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

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

Всё ещё ищете ответ? Посмотрите другие вопросы с метками .