Разрешения на типичном общем веб-хосте 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 для запуска файлов под вашей учетной записью.
Итак, первый октет разрешений - это то, что относится ко всей системе. Он определяет, что и вы, и посетители сайта (так сказать) могут сделать с файлом. Группу можно игнорировать. И последний октет для других в некоторой степени эквивалентен части владельца.