1

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

Я почти уверен, что проблема, с которой я сталкиваюсь, из-за кода разрешения файла, который я использовал. Проблема в том, что я просто не знаю, что это за коды доступа к файлам и что они значат.

Может кто-нибудь перечислить все права доступа к файлам и что они делают каждый?

2 ответа2

8

Разрешения в Unix-подобных системах управляются в трех разных классах. Эти классы известны как пользователь, группа и другие.

Классы

Файлы и каталоги принадлежат пользователю. Владелец определяет класс владельца файла. Разные разрешения применяются к владельцу.

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

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

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

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

В Unix-подобных системах есть три конкретных разрешения, которые применяются к каждому классу:

  • Разрешение на чтение, которое дает возможность читать файл. Когда установлено для каталога, это разрешение предоставляет возможность читать имена файлов в каталоге (но не узнавать дополнительную информацию о них, такую как содержимое, тип файла, размер, владение, разрешения и т.д.)

  • Разрешение на запись, которое дает возможность изменять файл. Когда установлено для каталога, это разрешение дает возможность изменять записи в каталоге. Это включает в себя создание файлов, удаление файлов и переименование файлов.

  • Разрешение на выполнение, которое дает возможность выполнить файл. Это разрешение должно быть установлено для исполняемых двоичных файлов (например, скомпилированной программы на С ++) или сценариев оболочки (например, для программы Perl), чтобы операционная система могла их запускать. Когда установлено для каталога, это разрешение дает возможность проходить по его дереву для доступа к файлам или подкаталогам, но не для просмотра файлов внутри каталога (если не установлено чтение).

Эффект установки разрешений для каталога (а не для файла) является "одной из наиболее часто неправильно понимаемых проблем с правами доступа к файлам".

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

Восьмеричное обозначение

Восьмеричное обозначение состоит из трех- или четырехзначного значения base-8.

В восьмеричной восьмеричной записи каждая цифра представляет отдельный компонент набора разрешений: класс пользователя, класс группы и класс "другие" соответственно.

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

  • Бит чтения добавляет 4 к общему количеству (в двоичном коде 100),

  • Бит записи добавляет 2 к своему итогу (в двоичном виде 010) и

  • Бит выполнения добавляет 1 к своему итогу (в двоичном виде 001).

Эти значения никогда не приводят к неоднозначным комбинациям; каждая сумма представляет определенный набор разрешений.

Вот сводка значений для отдельных значений восьмеричных цифр:

0 --- no permission
1 --x execute 
2 -w- write 
3 -wx write and execute
4 r-- read
5 r-x read and execute
6 rw- read and write
7 rwx read, write and execute

Также обратите внимание, что ваш файл может принадлежать пользователю foo , Apache обычно работает как другой пользователь (назовем его bar). Это означает, что если вы хотите, чтобы Apache его прочитал, вам нужно дать group или other (в зависимости от ваших настроек) разрешение на чтение вашего файла.

Вы можете найти больше информации о разрешениях файловой системы POSIX в Википедии.

2

Похоже, вопрос о сбое сервера.

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

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

R W X  Code
0 0 0  0 No Permission
0 0 1  1 Executable
0 1 0  2 Write
0 1 1  3 Write and execute
1 0 0  4 Read
1 0 1  5 Read and execute
1 1 0  6 Read and write
1 1 1  7 read, write, execute

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

Обычно с общими файлами вы устанавливаете файлы на 744, а каталоги на 755, потому что владельцу должно быть разрешено делать с ним что угодно, но пользователи и гости (например, анонимные веб-пользователи) должны иметь только права на чтение.

http://catcode.com/teachmod/numeric.html

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