Уточнить разрешения файлов

Я искал информацию о разрешениях файлов и каталогов, и я продолжаю находить те же основные принципы. То, что я не могу найти нигде, является обоснованием для определения того, какие разрешения предоставить Владельцу, Группе и другим. Точно, кто / что входит в каждый из этих классов? Каковы последствия предоставления / отсутствия определенных прав на кого-либо из них? Я обеспокоен тем, что все работает правильно, без ущерба для безопасности.

Например, я разрабатываю небольшой сайт на общем хосте (Linux), и я был бы единственным человеком, вовлеченным в его разработку / поддержание. Пользователям нечего скачивать, но участникам разрешено загружать изображения через API picmonkey.com (который завершает php-скрипт с помощью файла move_uploaded_file). Файлы сайта – это файлы .php, .css, .js, .html, .jpg и .gif (хотя есть файлы .eot, .svg, .ttf и .woff, связанные с одним шрифтом). Все каталоги и файлы имеют имя пользователя как владельца и «inetuser» как Group.

Некоторые из вопросов, которые у меня возникают у меня в голове:

  • Когда я вхожу в систему с WS_FTP, я владею?
  • Является ли веб-браузер другим?
  • Сценарии PHP сами попадают в один из этих классов?
  • Какие разрешения необходимы для каждого типа файлов / dir в этих
    обстоятельства?
  • Есть ли разница между чтением и исполнением в .php-файле?
  • Поскольку я понятия не имею, кто такой «inetuser», я был бы прав в не
    предоставление Группе любых разрешений? Что, если это не так (то есть,
    имя пользователя сайта также использовалось для группы – это оно на моем dev
    сайт на другом хосте)?

Я был бы благодарен за любое понимание, которое любой мог бы дать мне, а также за любые рекомендованные статьи или книги, которые отвечали бы на эти вопросы.

3 Solutions collect form web for “Уточнить разрешения файлов”

Вы, кажется, понимаете концепцию разрешений, но я думаю, что вы попадаете на пользователя / группу / другие, и что это значит в разных контекстах.

Коротко говоря,

  • Пользователь – это отдельная учетная запись POSIX.
  • Группа представляет собой логическую группировку нескольких учетных записей POSIX

Файл на диске состоит из двух владельцев. user владелец group . Для любого конкретного файла other – это любая учетная запись пользователя, которая не соответствует user не является членом group . Другими словами, other – это любой пользователь, который не является владельцем пользователя и не является членом владельца группы.

Кроме того, каждый процесс выполняется под конкретным идентификатором пользователя (или UID) и является членом одного или нескольких идентификаторов группы (GID). Используйте команду ps -ef (в Linux и Solaris, или ps -ej на OS X или * BSD), чтобы увидеть, как пользователь выполняет каждый процесс. Вы увидите, что apache и ws_ftp также выполняются пользователями.

Когда процесс пытается получить доступ к файлу на диске, произойдет следующее:

  • Если UID процесса совпадает с user владельцем файла, тогда user права применяются.
  • Иначе, если какие-либо GID этого процесса совпадают с владельцем группы файла, тогда применяются group разрешения.
  • Также применяются other разрешения.

Чтобы конкретно ответить на ваши вопросы:

Когда я вхожу в систему с WS_FTP, я владею?

Технически да, потому что всегда есть владелец, но это зависит от вашего определения «я» .

Если вы входите в систему в качестве реального пользователя POSIX в системе, тогда файлы, созданные вами / доступом, будут являться пользователем, которого вы вошли в систему. Если вы анонимно зарегистрировались, то файлы, которые вы создаете / используете, будут иметь идентификатор UID WS FTP . Вероятно, это будет либо ftp либо nobody .

Является ли веб-браузер другим?

Веб-браузер ничего не значит, потому что он не выполняется на сервере. Но браузер обращается к веб- серверу . Веб-сервер работает как определенный пользователь (как и WS_FTP). Этот пользователь, скорее всего, www-data , apache или nobody .

Сценарии PHP сами попадают в один из этих классов?

PHP-скрипты выполняются модулем сценариев движка веб-сервера. Они будут выполняться как один и тот же пользователь, выполняющий веб-сервер.

Есть ли разница между чтением и исполнением в .php-файле?

Да. Чтение означает, что пользователь может прочитать содержимое файла. Выполнение означает, что содержимое может быть запущено как полноценный процесс.

Поскольку скрипты PHP выполняются внутри механизма сценариев веб-сервера (т. Е. Они являются частью пространства памяти и потоком выполнения сервера), их не нужно устанавливать в исполняемый файл.

Так как я понятия не имею, кто такой «inetuser», я был бы прав, если бы не предоставлял Группе никаких разрешений? Что делать, если это не так (то есть, имя пользователя сайта также использовалось для группы, которое находится на моем сайте-сообществе на другом хосте)?

inetuser – это учетная запись пользователя в системе, как и ваша учетная запись. Это может быть и группа. Надеюсь, вы сами сможете ответить на этот вопрос после прочтения этого.

Какие разрешения необходимы для каждого типа файлов / dir в этих условиях?

Как правило, вы хотите, чтобы файлы данных принадлежали учетным записям пользователей, которые используются фактическими людьми (то есть вы). Другими словами, ваш веб- контент не должен принадлежать пользователю apache .

  • Права пользователя должны всегда быть rw- для файлов данных или rwx для каталогов и программ.
  • Групповые разрешения обычно должны быть r – для файлов данных или rx для каталогов и программ. Если вы хотите, чтобы члены этой группы могли писать эти файлы, тогда они должны быть rw- и rwx.
  • Другие разрешения должны всегда быть всегда – для файлов данных и rx для каталогов и программ или – если вы хотите запретить весь доступ.

Хорошо, давайте немного осветим саму основы прав доступа к файлам, а затем перейдем к вашему конкретному случаю.

права доступа

Основные права доступа к файлам :

  1. r ead – дает возможность читать содержимое файла.
  2. w rite – дает возможность писать в этот файл.
  3. e x ecute – дает возможность выполнить файл или скрипт.

В случае с каталогами имена те же, но имеют немного другое значение:

  1. r – дает возможность читать имена файлов в каталоге, но не более того.
  2. w – дает возможность создать файл в каталоге или записать в файл, который уже существует.
  3. x – дает возможность читать содержимое определенного файла в каталоге, но не позволяет перечислять файлы в нем (для этого вам нужны разрешения на чтение). Он также позволяет изменять (cd) в этот каталог.

Пользователи, группы и другие

Каждый файл и каталог имеют атрибут владельца и группы. Вы можете проверить их, вызвав команду ls -l или взглянув на индикаторы в программном обеспечении, таком как FTP-клиент. Давайте посмотрим пример:

 -rwxr-xr-- 1 jdoe zeppelins 0 08-29 21:50 example_file 

Здесь у вас есть файл с именем example_file , который был создан в 21:50 на 29-08 и имеет длину 0 байт. Его владелец – пользователь с именем username , и он принадлежит группе zeppelins .

Теперь давайте посмотрим на права -rwxr-xr-- к файлам -rwxr-xr-- .

  • Первый символ указывает тип файла – одиночная тире - означает, что он является обычным файлом (а не ссылкой или каталогом).
  • Следующая triad rwx указывает, что пользователь jdoe может читать, записывать и исполнять этот файл.
  • Следующее rx означает, что все члены группы zeppelins могут читать и исполнять, но не изменять этот файл
  • Наконец, r-- указывает, что пользователи, которые не являются jdoe и не принадлежат к группе zeppelins могут читать этот файл только.

Теперь вернемся к вашему делу

  1. Когда вы регистрируетесь через WS_FTP, вас идентифицируют как пользователя с именем пользователя, которое вы указали при входе в систему. Вы можете быть владельцем некоторых файлов, но вам не нужно (могут быть файлы с указанным другим владельцем).

  2. Веб-браузер не имеет доступа к файлам. Доступ к ним – это веб- сервер , который считывает файл, а затем передает ваш браузер с его содержимым. Веб-сервер может работать под именами apache httpd или аналогичными, но если вы используете хостинг, он также может идентифицировать себя как inetuser . Если это не так, он обращается к файлу как к другому пользователю.

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

  4. Для простого PHP-скрипта, отредактированного jdoe , в предположении, что веб-сервер работает под именем webserver , соответствующими разрешениями будут -rwxr----- . В некоторых случаях это может также потребоваться для чтения некоторыми другими пользователями – в этом случае -rwxr--r-- может быть более уместным.

  5. Для прав доступа к файлам PHP достаточно.

  6. Лучше всего было бы сделать быстрый тест – удалите все разрешения для группы для определенного файла и проверьте, можете ли вы все же получить к нему доступ. Моя ставка заключается в том, что inetuser является псевдонимом для веб-сервера, поэтому ваши файлы должны иметь доступ для чтения для этой группы.

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

Разрешения в Linux не работают в соответствии с используемым программным обеспечением, как это иногда бывает в Windows (службы устанавливают себя с определенными разрешениями). В Linux программа, которая пытается читать / выполнять файлы / каталоги, работает как конкретный пользователь, который может быть другим в общей среде.

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

Некоторые веб-серверы работают с пользовательскими www-данными, но поскольку это общая среда, вероятность в этом случае различна, и вы должны связаться со своим провайдером для проверки.

Если вы знаете, на каком http-сервере вы работаете и имеете доступ к оболочке, вы можете запустить:

 ps -ef | grep <server> 

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

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

Клиент FTP, который вы используете, не влияет на разрешения, он зависит от пользователя, с которым вы вошли в систему, но это может отличаться от вашего имени пользователя входа.

Веб-браузер не является сущностью в этом сценарии, а только веб-сервер, и, как я упоминал ранее, он работает с использованием собственного пользователя.

Как правило, для публичных зон вашего сайта я бы предоставил разрешения на выполнение для пользователя, группы и других скриптов и каталогов и разрешения на чтение для других файлов.

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

  • Проблема с разрешениями при загрузке FTP на VSFTP
  • Проблема с разрешениями пользователей в CentOS 7: «Разрешение отказано»
  • `/ lib / firmware / BCM43430A1.hcd` принадлежит пользователю без полномочий root
  • Разрешить www-data выполнять определенные команды
  • Невозможно выполнить операции записи и выполнения на разделе ntfs. Даже с привилегией root. Использование arch linux.
  • Беспорядок с файлами разрешений
  • Не удается запустить su после изменения прав доступа к файлу su
  • Перенос с mplayer
  • Как я могу позволить другому пользователю подключиться к моему сеансу с помощью X11vnc?
  • Судо доступ к учетной записи другого пользователя
  • Пользователь имеет права на запись, но не может записывать файлы
  • Linux и Unix - лучшая ОС в мире.