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

4196
JannieT

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

Полномочия ПОЛЬЗОВАТЕЛЯ влияют на то, что ... хм ... не уверен, что здесь полномочия
ГРУППЫ повлияют на то, что PHP или другой скрипт, выполняемый на сервере, может делать
ДРУГИЕ (иногда называемые PUBLIC или WORLD?) Разрешения, которые будут влиять на работу UA веб-сайта. посетитель может сделать

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

ПОЯСНЕНИЯ:

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

5

3 ответа на вопрос

3
user unknown

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

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».

Спасибо за разъяснение путаницы с именем. Моя FTP-программа (Filezilla не менее) использует OWNER, GROUP и PUBLIC, и я не знал, что это не правильные имена Linux. Я отредактирую свой вопрос, чтобы избежать путаницы. Я думаю, что другая информация в вашем ответе не имеет значения, или я все еще скучаю по чему-то большому здесь. JannieT 12 лет назад 0
Итак, вы говорите (довольно кратко), что обычно в настройке общего хостинга разрешение USER влияет на то, что может делать скрипт PHP, запущенный на сервере, верно? И поэтому в этом случае, если нет особого сценария, разрешение GROUP не должно быть более ограничивающим, чем настройка USER, верно? А как насчет разрешений браузера посетителя? Это равно ДРУГОЙ? JannieT 12 лет назад 0
Последний вопрос: браузер пользователей работает на другом компьютере и не оказывает никакого влияния. Сервер даже не знает, какое разрешение имеет пользователь на удаленной машине и какое имя пользователя там используется. user unknown 12 лет назад 0
Нет общего разрешения пользователя. Первый вопрос: кто пользователь, запускающий PHP-скрипт? Это будет зависеть от сервера, который используется, и его конфигурации. Серверы в основном запускаются при запуске через init-скрипты, то есть с правами root, но root может запускать их от имени третьего пользователя, например, www или www-admin или что-то еще. В обычных случаях установка позаботится об этом, и вы не будете изменять разрешения файлов вручную. Тем не менее, прочитайте руководства вашего сервера и файлы README. user unknown 12 лет назад 0
Картина начинает проясняться здесь. Таким образом, вы говорите, независимо от того, как настроен сервер (специальные пользователи, apache и т. Д.), Права доступа к файлам и папкам никак не могут повлиять на права доступа браузера посетителя? Если я хочу контролировать доступ через браузер, мне нужно использовать файлы .htaccess или скрытые имена папок и т. Д. JannieT 12 лет назад 0
3
Manwe

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

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.

Отлично! Кто-то, кто понимает мой вопрос и очень четкий и полезный ответ. JannieT 12 лет назад 0
2
Der Hochstapler

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

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

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

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

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

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

Похожие вопросы