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

Сб, 22 Март 2008. Web-мастер

Права доступа к файлам - основа основ. Это выражение совсем непонятно для Вас, если Вы работали только под Windows. Какие ещё права, спросите Вы? И, далее скачав скрипты, которые представлены на этом сайте и, увидев, что от Вас постоянно требуют поставить на файлы права доступа 0775 или 0777, Вы будете находиться в замешательстве. Попробуем объяснить, что же такое ПРАВА ДОСТУПА.

Работая под Windows, Вы уже давно научились пользоваться антивирусными программами, уже давно смирились с тем, что последние определяют далеко не все вирусы, частенько Ваш компьютер приходилось “чистить”, а некоторым из Вас, вообще, приходилось перезаписывать Windows. У Вас никогда не возникало вопроса отчего это всё происходит, потому что у всех Ваших знакомых тоже всё-время появляются вирусы, то есть у всех всё одинаково и по другому не бывает.

Тут-то мы и подходим к тем самым “правам доступа”. Права бывают:
На чтение файлов: любой процесс имеет право прочитать из файла информацию.
На запись в файлы: любой процесс имеет право записать что-то в файл.
На исполнение файлов: любой процесс может запустить исполняемый файл.
На изменение каталога: любой процесс может стереть, записать файл в каталоге.

Так вот, в системах Windows многим файлам, обычно к которым Вы обращались, сразу же даны все эти права, вот почему у Вас никогда не возникало вопроса, а какие бывают “права доступа”. Теперь становится понятно, почему с такой легкостью любой вирус спокойно записывает себя на Ваш компьютер, а потом запускает сам себя и исполняется - ему это никто не запрещал. В этом и есть самая большая дыра Windows. Вы скажете, а что бывает по другому? Конечно бывает… Это системы, которые базируются на платформе Unix.

Что же отличает Unix от Windows? А тем, что права доступа в системах Unix раздаёт главный администратор компьютера, который владеет основным паролем, и он, и только он, может поставить, например, право в данный файл что-то записывать. А так, все остальные файлы можно только читать. После этого становится понятно, что на компьютере, где в основном размещены файлы с пометкой ‘только для чтения’, вирусам делать нечего, они не могут туда себя ни записать, ни исполниться.

Права доступа к файлам и каталогам - основные элементы защиты системы. Сами права доступа разделяются на три категории:
права владельца файла - u
права группы - g
права всех остальных пользователей - o

Права доступа указываются с помощью команды chmod().
r - право на чтение
w - право на запись
x - право на исполнение

Комбинация r, w и x для трех категорий u, g и o и являются правами доступа к файлам. Если нет какой-то категории права, она указывается знаком дефис. Права доступа указываются последовательно:
владелец u, группа - g, все остальные o.

В следующем примере, владелец файла имеет право на чтение файла, запись в него и исполнение, а все остальные только на чтение: rwxr–r–
То есть: rwx (права владельца u), r– (права группы g), r– (права всех остальных o).

Чтобы файл выполнить, если он является сценарием, достаточно иметь права на чтение и исполнение, а в случае двоичных файлов, только на исполнение.
Отличие прав доступа к файлам и каталогам
Права Файл Каталог
r Просмотр содержимого Можно прочитать содержимое каталога
w Изменение содержимого Можно изменять содержимое каталога
x Запуск файла на выполнение Позволяет зайти в каталог и обратиться к его файлам

Здесь показаны различные комбинации прав доступа к файлам и каталогам
Права Файл Каталог
— Ничего нельзя делать Доступ к каталогу и его подкаталогам запрещен
r– Можно читать содержимое Можно прочитать содержимое каталога
rw- Можно видеть и изменять содержимое Можно добавить, удалить, изменить файл каталога
rwx Читать, изменять и выполнять файл Можно читать, удалять, изменять файлы, сделать каталог текущим.
r-x Можно прочитать, либо выполнить Можно зайти в каталог и прочитать его содержимое, удалять или добавлять файлы нельзя.
–x Выполнить, если файл двоичный Пользователь может выполнить двоичный файл о существовании которого ему известно, зайти или прочитать каталог запрещено

Права доступа обозначаются так же цифрами:
4 - читать (r),
2 - записывать (w),
1 - исполнять (x).
0 - ничего нельзя делать.
Сумма этих цифр и показывает права доступа. 7 = 4 + 2 +1 (полные права), 5 = 4 + 1 (чтение и выполнение), 6 = 4 + 2 (чтение и запись), итд.
Здесь показаны различные комбинации прав доступа в цифрах
Права Цифровая форма Символьная форма
Ничего нельзя делать 0 —
Только чтение 4 r–
Только запись 2 -w-
Только выполнение 1 –x
Чтение и запись 6 rw-
Чтение и выполнение 5 r-x
Чтение, запись, выполнение 7 rwx

То есть, давайте поманипулируем этими цифрами…
Комбинации прав доступа в цифрах по группам
Права Владелец Группа Остальные
777 читать
записывать
исполнять читать
записывать
исполнять читать
записывать
исполнять
776 читать
записывать
исполнять читать
записывать
исполнять читать
записывать
775 читать
записывать
исполнять читать
записывать
исполнять читать

исполнять
774 читать
записывать
исполнять читать
записывать
исполнять читать
766 читать
записывать
исполнять читать
записывать читать
записывать
655 читать
записывать
читать

исполнять читать

исполнять
644 читать
записывать
читать читать

Теперь перейдем к самому главному - для чего же надо менять права доступа? Вы завели себе хостинг, сделали сайт и потом всё это дело переписали в ту папку, которую Вам под это дело выделили. Вы использовали логин и пароль, который заранее обговорили со своим администратором хоста.

После этого, Вы являетесь владельцем всех папок и файлов, находящихся в той зоне, где действуют Ваши логин и пароль на сервере, у Вас, как у собственника, права доступа - rwx или в цифровом представлении - 7. Владельцем Вы станете только тогда, когда система попросит от Вас логин и пароль и Вы авторизируетесь в ней. Только после этого, для Вас будут те полные права, о которых мы говорили.

Группу, связанную с Вашими папками и файлами определяет суперпользователь, то есть админ Вашего хостинга, например user, в целях безопасности сервера он, обычно ставит права для этой группы r– или в цифровом представлении - 4. Группа - это те пользователи, которые уже зарегистрированы в системе, и суперпользователь может их связать с Вашим сайтом.

Всем остальным пользователям, то есть тем, которые и будут, в итоге, пользоваться Вашим сайтом, то есть всем тем, которые и будут заходить на сайт через интернет, суперпользователь сразу ставит права только на чтение - r– или в цифровом представлении - 4. Отметим, что Вы для системы так же будете являться обычным пользователем интернет, так как Вы при использовании Вашего сайта в пределах Вашего броузера не сможете авторизироваться как Владелец ресурса.

Далее, для простоты, первые два отсека в правах доступа мы обозначим 0, то есть будем смотреть только на последнюю цифру доступа, так как она обозначает доступ пользователей интернет. То есть, будем ставить 005, 007, итд.

Ещё раз, что означает ‘пользователи могут читать файлы’ - это значит, запускается Ваш скрипт на сайте, который читает файл, система понимает, что скрипт запустил юзер и к нему просматривается последняя цифра доступа к данному файлу, если она 4, 5, 6 или 7 (004, 005, 006, 007) ваш скрипт может прочитать файл и выдать результат в Вашу программу, запущенную юзером, и, в итоге вернуться к нему в виде распечатки. Кроме этого, система просматривает и права доступа к каталогу, где лежит файл. Они должны быть: 5 или 7 (005, 007), чтобы программа могла зайти в каталог и прочитать его. То есть, необязательно ставить права доступа к папке, где лежит простой неизменяемый в размерах файл 007, и права доступа к самому этому файлу 005, 006, 007. Хватит поставить на папку 005, а на файл 004. Если права будут ниже этих цифр, процесс, запущенный пользователем ничего не прочитает из вашего файла.

Что означает ‘пользователи могут изменять файлы’ - это значит, запускается Ваш скрипт на сайте, который читает файл, а потом пытается его изменить (например, добавляет в файл статистики Ip адрес этого пользователя), система понимает, что скрипт запустил юзер и к нему просматривается последняя цифра доступа к данному файлу, если она 6 или 7 (006, 007) ваш скрипт может прочитать, а потом и изменить файл, к которому было обращение и выдать результат в Вашу программу, запущенную юзером, и, в итоге вернуться к нему в виде распечатки. То есть, здесь не хватит прав доступа 002 (-w-), так как перед изменением файла, его обязательно надо сначала прочитать. Кроме этого, система просматривает и права доступа к каталогу, где лежит файл. Они должны быть: 5 или 7 (005, 007), чтобы программа могла зайти в каталог и прочитать его. То есть, необязательно ставить права доступа к каталогу, где лежит изменяемый в размере файл 007 и права доступа к самому этому файлу 007, можно поставить на папку 005, а на файл 006. Если права будут ниже этих цифр, процесс, запущенный пользователем ничего не запишет в ваш файл.

Что означает ‘пользователи могут изменять каталог’ - это значит, запускается Ваш скрипт на сайте, который пытается записать файл в каталог или стереть его оттуда, система понимает, что скрипт запустил юзер и к нему просматривается последняя цифра доступа к каталогу, она должна быть 7 (007), только тогда ваш скрипт, запущенный юзером, может записать в данный каталог файл или стереть его оттуда. Если права к такому каталогу будут 006 (чтение и запись), прав не хватит, так как скрипт не сможет зайти в каталог, если будет 005 (чтение и заход в каталог), значит запись запрещена. То есть, на такие каталоги надо ставить права 007.

Итак, обычно на сервере куда Вы переписали Ваши файлы стоят такие права доступа:
Папки 755 владелец может всё, группа и все остальные могут читать папки и заходить в них, записывать файлы, изменять названия файлов, стирать файлы в папках им запрещено. (rwxr-xr-x)
Файлы 644 владелец может читать и изменять файлы, исполнять ему их запрещено, все остальные могут только файлы читать, изменять и исполнять им запрещено. (rw-r–r–)

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

Но мы с Вами обсуждаем сайт, где есть базы данных, которые постоянно надо менять. Вспомним, что Вы сами будете заходить на Ваш сайт как анонимный пользователь, то есть не как Владелец. И, наконец, мы спокойно можем забыть про права доступа группы, так как группы пользователей у Вас не будет. То есть, Ваш сайт будет спокойно работать, если Вы поставите на всё права доступа: 007 (——rwx)
Но мы не будем так делать, а сделаем так:
Папки, все (в том числе, с базами данных) 755
Папки, куда должны записываться, стираться файлы 777
Простые файлы для чтения (.html, .php) 744
Файлы с базами данных (.dat) 766

К примеру, в наших скриптах Вы найдете папку lock, которая пуста, но она такая и должна быть - она служит для разделения процессов записи и чтения, в неё все время записываются и стираются временные файлы, поэтому на неё нельзя ставить права 755, а надо поставить права не ниже 777.

Заметим, что это только на те папки, куда должны записываться новые и стираться старые файлы. На папки с базами данных ставьте права не выше 755, чтобы пользователи не могли менять содержимое папок, то есть количество записанных там файлов (хотя, поменять они ничего не смогут, так как, могут менять, только Вашим скриптом). На все файлы, которые не будут меняться права не выше 744 (файлы .html, .php, идр.). На файлы с базами данных (.dat) ставьте 766. Обратите внимание, что на файлы мы вообще не ставим самые большие права 777, так как это необязательно…

Ну вот, кажется теперь Вы стали немного понимать, что такое права доступа и какие они должны быть. Но встает вопрос, как же их изменить? Суперпользователь root меняет их на сервере с помощью команды chmod, из командной строки:

$ chmod 777 filename

После этого, на файл filename распространятся самые большие права доступа, но Вы не имеете доступа к серверу, просить системного администратора изменить Вам права доступа на Ваши файлы не принято, а средствами Php, увы, права изменить нельзя, потому что система увидит, что Вы владелец ресурса, только после авторизации, то есть проверки пароля в базе данных Linux. Обычными средствами, через php сделать это трудно, поэтому Вы будете заходить на сайт броузером как обычный юзер:

То есть, этот скрипт не работает, потому что юзеру, которым Вы будете считаться запрещено менять права функцией chmod.

Что же делать? Кроме того, что Вы можете зайти на сайт как анонимный пользователь через броузер, еще предусмотрен один путь - через FTP. Ftp - это еще один своего рода сервер, который работает независимо от сервера Apache. Если Вы как-то записали ваш сайт на сервер, то Вы точно пользовались каким-то файловым менеджером. В этом смысле, лучше чем Far, на наш взгляд, файлового менеджера не найти. Зайдите им по ftp на ваш сайт (в этом случае запрашивается ваши логин и пароль, то есть Вы будете авторизованы в системе и станете Владельцем), найдите в Far раздел “атрибуты файлов” Ctrl+A, Вы увидите уже не пугающую вас картинку:

[x] [x] [-] [x] [-] [-] [x] [-] [-] для файлов, по умолчанию 644
[x] [x] [x] [x] [-] [x] [x] [-] [x] для папок, по умолчанию 755

Это и есть те самые три группы: первые три отсека - Владелец, вторые три отсека - Группа, третьи три отсека - Все остальные. В этих группах по порядку идут: доступ на чтение, на запись, на исполнение, где крест обозначает, что эта опция для данной группы задействована. То есть, меняйте права доступа по ftp через файловый менеджер, другого пути у Вас может не быть.

Права доступа через ftp и менджер Far должны будут выглядеть так:
Папки, все 755 [x] [x] [x] [x] [-] [x] [x] [-] [x]
Папки, где должны записываться файлы 777 [x] [x] [x] [x] [x] [x] [x] [x] [x]
Простые файлы 744 [x] [x] [x] [x] [-] [-] [x] [-] [-]
Файлы с базами данных 766 [x] [x] [x] [x] [x] [-] [x] [x] [-]

Мы с Вами рассмотрели какие на самом деле должны быть права доступа и как они должны работать. Если, всё же Ваши скрипты не работают, то есть сам сервер сконфигурирован как-то по-хитрому, то повышайте права доступа. Чтобы вообще не задумываться об этом, можете на всё установить самые большие права 777.



Календарь

Март 2008
Пн Вт Ср Чт Пт Сб Вс
« Фев   Апр »
 12
3456789
10111213141516
17181920212223
24252627282930
31  

 

Реклама

Последние новости

Новости партнеров

Реклама

           



Рейтинг@Mail.ru Rambler's Top100