Chmod копирование и тому подобные. Команды Linux: CHMOD

При работе с файлами, расположенными на веб-сервере , часто возникает необходимость установить или изменить права доступа к папкам и файлам (chmod) вида 777 . В семействе серверных операционных систем Unix, права доступа (chmod) вида 777 регламентируют такие действия: чтение, запись в папку или файл и выполнение файла.

Что такое «права доступа» в операционной системе

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

Если операционная система однопользовательская, например, как домашний вариант (home) Windows - то здесь нет смысла особо ограничивать власть юзера над его пользовательскими и системными файлами и папками. Потому что, в этом случае, один и тот же человек является - и пользователем, и администратором, одновременно.

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

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

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

Как работают «права доступа»

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

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

Как уже было сказано, права доступа к файлам и папкам есть во всех операционных системах, подразумевающих многопользовательскую работу. И в ОС Windows, и в ОС Unix, и в любой другой многопользовательской операционной системе есть функция настройки и установки прав доступа к файлам и директориям (папкам, каталогам) для различных категорий пользователей. В данной статье речь пойдёт о правах доступа для серверных ОС семейства Unix, которые ещё часто называют .

Права доступа (chmod) вида 777 для серверных ОС Unix регламентируют разрешение или запрет для пользователя на такие действия, как: чтение, запись в папку или файл и выполнение исполнительных файлов

Что такое chmod

Что такое 777

В серверных ОС Unix права доступа записываются одной строкой, состоящей из трёх цифр, где каждая цифра относится к своему типу группы пользователей. В свою очередь, все пользователи подразделяются на группы трёх типов:

  1. группа Owner - «Владелец папки или файла»
  2. группа Group - «Член группы владельца папки или файла»
  3. группа World или Public - «Все остальные пользователи»

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

Теперь осталось разобраться, кто такой «Владелец»,
что такое «Член группы владельца»
и кто это такие «Все остальные пользователи».

Владелец, член группы владельца и все остальные пользователи

Поскольку, мы здесь говорим про сервера, сайты и серверные ОС Unix, то:

Разделение всех пользователей на группы в серверных ОС Unix реализовано следующим образом - Владелец и Члены группы владельца подключаются к серверу, используя спецсвязь (FTP, SSH) (FTP, SSH-протокол), а все остальные пользователи заходят на сайт с веб-браузера (http-протокол)

Отсюда вытекает что, в зависимости от протокола обращения к файлу на сервере, серверная ОС Unix сразу делит пользователей на две части, либо - это владелец или член группы владельца, либо - все остальные пользователи. Основанием для такой «сортировки», (повторяюсь) является сетевой протокол соединения - если пользователь подключился к серверу, используя FTP-аккаунт (FTP-протокол), то это - или владелец или член его группы. А если пользователь зашёл на сервер с веб-браузера (http-протокол), то это уже третья группа - все остальные пользователи.

Таким образом, для серверной ОС Unix, между первыми двумя и третьей группами есть очень чёткое и легкопонятное разграничение - владелец и член его группы попадают на сервер, используя спецсвязь (FTP, SSH), а все остальные пользователи - через свои веб-браузеры.

А вот различия между первыми двумя группами - владельцем и членом его группы - сильно стёрты и завуалированы. Здесь уже начинаются дебри хостинг-пакета и индивидуального подхода для каждого случая.

Справка:
Все файлы в Unix (Linux) могут иметь двух владельцев: непосредственного своего владельца-создателя (user owner) и его группу (group owner). Под понятием группы владельца подразумевается некий список пользователей, который был создан самим владельцем для совместного пользования файликом или папочкой.

Таким образом, для серверной ОС Unix, владельцем файла или папки является непосредственно администратор сервера. Все остальные, кому владелец разрешит доступ к файлам на своём сервере и кто будет подключаться к этому серверу по FTP/SSH-протоколу - это члены группы владельца.

Под арендой дискового пространства понимается место на сервере, занимаемое именно файлами сайта. Как правило, это недорогие хостинг-пакеты, где их пользователи не имеют доступа к админпанели сервера (не путать с CP - контрольной панелью аккаунта). Соответственно, сидящие на таких пакетах, администраторы (владельцы) сайтов, при своём подключении по FTP-протоколу к серверу - попадают исключительно в группу владельца. Тогда как, сам владелец (администратор сервера) находится где-то там, «далеко в горах», в своём уютном рабочем кабинете технической службы хостера.

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

Для арендаторов серверов (реальных и виртуальных) - ситуация, несколько иная. При аренде сервера, арендующий сам устанавливает операционную систему, естественно, при этом - он является для этой системы непосредственным владельцем файлов. А вот создавать группу и вносить в неё других пользователей - это уже его, владельца дело.
Что из всего вышесказанного следует?

А вывод такой: - Арендаторы дискового пространства могут не заморачиваться с первой цифирькой вида (chmod) 777, поскольку они не владельцы, и никогда не будут владельцами своих файлов. Для них первая цифра - всегда должна быть семь. - Арендаторы серверов (реальных и виртуальных) могут не заморачиваться со второй цифирькой вида (chmod) 777. При условии что, они не создавали и не собираются создавать никаких пользовательских групп у себя на сервере. Здесь, как такового, ярковыраженного и сильного разграничения нет. Вернее, оно будет, если создать группу владельца и внести в неё список пользователей. Вот только создать такую группу может исключительно сам администратор сервера. Когда создаст - тогда и будет думать, что делать со второй цифрой.

Что обозначают цифры 777 или 456

Каждая цифра, для каждой группы, представляет собой
арифметическую сумму из трёх цифр,
обозначающих следующие права:

  • 4 = Read (право на чтение)
  • 2 = Write (право на запись)
  • 1 = Execute (право на выполнение)

Например:

  • 6=4+2 - Read+Write (право на чтение+ право на запись)
  • 5=4+1 - Read+Execute (право на чтение+ право на выполнение)
  • и т.д.

Все возможные 7 вариантов сложения для этих трёх цифр
по установке прав доступа на папку или файл для групп пользователей
выглядят так:

  • 7 = 1+2+4 - Read, Write, Execute (чтение, запись и выполнение)
  • 6 = 4+2 - Read, Write (чтение и запись)
  • 5 = 4+1 - Read, Execute (чтение и выполнение)
  • 4 = 4 - Read (только чтение)
  • 3 = 1+2 - Write, Execute (запись и выполнение)
  • 2 =2 - Write (только запись)
  • 1 =1 - Execute (только выполнение)

Таким образом, выставив права доступа (chmod) вида 765 ,
мы выставим следующие права для групп:

  • Первая цифра, группа Owner, Владелец файла или папки
    Первая цифра = 7
    Это значит, что Владелец папки или файла имеет право на:
    7=4+2+1 - Read (чтение)+Write (запись)+Execute (выполнение)
  • Вторая цифра, группа Group, Член группы владельца
    Вторая цифра = 6
    Это значит, что Член группы владельца имеет право на:
    6=4+2 - Read (чтение)+Write (запись)
  • Третья цифра, группа World, Все остальные пользователи
    Третья цифра = 6
    Это значит, что Все остальные пользователи имеют право на:
    5=4+1 - Read (чтение)+Execute (выполнение)

Теперь понятно, что выставив права доступа комбинацией цифр 777 (три топора), мы открываем полный доступ к файлу абсолютно для всех групп пользователей. Аналогичный результат можно получить, поместив файл в папку "Общие документы" (Public) в Windows.

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

Права доступа всегда выставляются «по нисходящей» от «Владельца» к «Члену группы владельца», и дальше - к группе «Всех остальных». Но, не наоборот!

Как выставить права доступа вида 777 на сервере

Теперь, когда стало абсолютно ясно, что обозначают эти три заветные цифры - выставить права доступа (chmod) вида 777 , не составит труда. Чтобы выставить права доступа (chmod) вида 777 для папки или файла, который находится на сервере , понадобится любой файловый менеджер, который способен установить и поддерживать FTP-соединение с сервером. Это может быть Total Commander, Windows Commander, CuteFTP, Filezilla или что-либо ещё. Лично я предпочитаю простой и бесплатный FTP-файловый менеджер Filezilla, несмотря на то, что являюсь горячим поклонником Total Commander-а.

Чтобы выставить права доступа (chmod) вида 777 , заходим на сервер по FTP под правами Администратора!, через пару логин-пароль Администратора!. Дальше, находим и выделяем требуемый объект (папку или файл). После этого, вызываем правой кнопкой мыши контекстное меню «Файл - Изменить атрибуты». Дальше, указываем нужный атрибут (права доступа) и жмём «ОК». Чтобы "вбить" нужную комбинацию цифр потребуется, либо поставить-снять чекбоксы (галочки) возле нужных пунктов, либо ввести с клавиатуры нужный код вида 777 в открывшемся окне. Все FTP-файловые менеджеры поддерживают, и тот, и другой способ.

Облом вида 777 на Денвере

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

Сообщение для инопланетян:
Не нужно пытаться выставить права доступа (chmod) вида 777 при работе с широко известным пакетом , который только имитирует работу веб-сервера под управлением операционной системы Unix на локальном компьютере, на самом деле работающем под управлением операционной системы Windows. Там нет такой кнопки .

Файлы в Linux имеют двух владельцев

Необходимо правильно выставить права на файлы и папки. Сделать это можно с помощью FileZilla. Вообще для каждого сервера нужны свои определённые настройки, которые лучше узнать у своего хостера. Но обычно права ставят такие: на файлы, которые находятся в корневой директории 444, на папки в корневой директории ставят 755, на папки tmp и logs ставят 705, на паку своего шаблона поставьте 555, на папку image/stories можно поставить 755, на папку Cache 777.

Владельцем нового файла является пользователь, который создал файл.

Файлы в Linux имеют двух владельцев: пользователя (user owner) и группу (group owner) под которой понимается определенный список пользователей и причем владелец файла не обязательно должен быть членом группы владеющей файлом. Каждый пользователь может быть членом сразу нескольких групп одна из которых называется первичной (primary), а все остальные — дополнительными (supplementary). Это дает большую гибкость в организации доступа к определенному файлу. Совместное использование некоторым ресурсом организовать очень просто, достаточно создать новую группу и включить в нее всех кому это действительно необходимо, а если человек предположим перешел в другой отдел и уже нет необходимости в использовании данного файла. А все очень просто, необходимо просто выключить его из состава данной группы. Ну а, что делать с остальными неужели они так и не смогут хотя бы прочитать содержимое файла или их прийдется каждый раз включать и исключать из группы.
А вот для всех остальных (other) которые не принадлежат ни к user owner и group owner права доступа устанавливаются отдельно и как правило самые минимальные. Обычно владельцем файла является пользователь который создал данный файл. Владелец-группа вновь создаваемого файла устанавливается равной первичной группе пользователя создавшего файл, но в некоторых версиях Unix владелец-группа наследуется от владельца-группы каталога в котором создается файл. Для изменения владельца файла используется команда chown в качестве параметров принимающая имя нового владельца и список файлов: # chown new_owner file1 file2 …Конечно же на месте названия файла может быть и имя каталога, но при этом владелец файлов внутри каталога не изменится, для того чтобы это произошло лучше всего воспользоваться флагом -R (chown -R). При использовании данной команды (впрочем как и большинства) можно пользоваться регулярными выражениями если есть необходимость отобрать файлы удовлетворяющие определенному критерию (chown — R lys *.с). Для изменения владельца группы используется команда chgrp, синтаксис использования данной команды аналогичен предыдущей: # chgrp sales /home/sales/*. Кстати команда chown позволяет сразу установить и группу-владельца для этого необходимо сразу за именем владельца без пробелов и др. знаков поставить двоеточие и написать название необходимой группы
# chown — R sergej:gljuk * , допускается и такой вариант записи # chown — R:gljuk * (т.е. аналог команды chgrp).
Владение файлом определяет те операции которые тот или иной пользователь может совершить над файлом. Самые очевидные из них это изменение владельца и группы для некоторого файла. Эти операции может проделать суперпользователь и владелец файла (в производных BSD UNIX только суперпользователь). Если с первым все понятно, то например написав программу и сделать затем ее владельцем, например суперпользователя увы не получится, и хотя вариант изменения владельцем допускается варианта такого применения я честно говоря не нашел. А вот группу, если вы являетесь владельцем файла, можно изменить только на свою первичную (по умолчанию имеет то же название, как и имя соответствующего пользователя). Эти все ограничения введены по нескольким причинам, чтобы никто не мог подсунуть какой ни будь зловредный файл и для того чтобы если на компьютере установлен лимит дискового пространства для конкретного пользователя, нельзя было просто переопределив владельца превысить его.
Следующие базовые операции которые можно совершить над файлом: это доступ на чтение (Read), доступ на запись (Write) и доступ на выполнение (eXecute). Эти операции устанавливаются для каждой из трех групп пользователей раздельно. Причем проделать это может только пользователь владелец и конечно же суперпользователь. Для установки соответствующих прав используется команда chmod. Применяется она в двух формах абсолютной — когда игнорируются старые права, а безусловно устанавливаются новые, и относительной — когда к имеющимся правам добавляются/убираются другие. Абсолютная форма предполагает задание прав доступа к файлу прямым заданием его в восьмеричной форме. Для того чтобы получить полный код необходимого режима файла, необходимо просто сложить значения кодов приведенных в таблице.

НАЗВАНИЕ
chmod - изменение режима доступа к файлам

СИНТАКСИС

Chmod режим файл...

ОПИСАНИЕ
Права доступа к указанным файлам (среди которых могут быть каталоги) изменяются в соответствии с указанным режимом. Режим может быть задан в абсолютном или символьном виде.

Абсолютный вид - восьмеричное число, являющееся поразрядным ИЛИ следующих режимов: 04000 При выполнении переустановить действующий идентификатор пользователя. 020#0 При выполнении переустановить действующий идентификатор группы, если # есть 7, 5, 3 или 1; учитывать блокировку доступа, если # есть 6, 4, 2 или 0. 01000 Бит навязчивости [см. man chmod(2)]. 00400 Доступен для чтения владельцем. 00200 Доступен для записи владельцем. 00100 Доступен для выполнения (в случае каталога - для просмотра) владельцем. 00040 Доступен для чтения членами группы. 00020 Доступен для записи членами группы. 00010 Доступен для выполнения (просмотра) членами группы. 00004 Доступен для чтения прочими пользователями. 00002 Доступен для записи прочими пользователями. 00001 Доступен для выполнения (просмотра) прочими пользователями.

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

Владелец Группа Прочие (u) (g) (o) rwx rwx rwx

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

Для задания режима доступа в символьном виде используется следующий синтаксис:

[кому] операция права

Часть [кому] есть комбинация букв u, g и o (владелец, члены группы и прочие пользователи соответственно). Если часть кому опущена или указано a, то это эквивалентно ugo.

Операция может быть: + (добавить право), - (лишить права), = (в пределах данного класса присвоить права абсолютно, то есть добавить указанные права и отнять неуказанные).

Права - любая осмысленная комбинация следующих букв:

Опустить часть права можно только если операция есть = (для лишения всех прав).

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

Chmod u+w,go+x f1

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

Учет блокировки доступа (l) к файлу и его частям означает возможность монопольного захвата сегментов файла на время их обработки. Нельзя, однако, разрешить выполнение файла для членов группы и одновременно учитывать блокировку файла. Нельзя также разрешить переустановить при выполнении действующий идентификатор группы и учитывать блокировку файла. Таким образом, следующие команды являются некорректными:

Chmod g+x,+l f2 chmod g+s,+l f3 Попытка их выполнения вызовет соответствующую диагностику.

Изменить режим доступа к файлу может только его владелец или суперпользователь. Бит навязчивости может установить только суперпользователь. Чтобы добавить право переустановки идентификатора группы, надо быть членом этой группы; кроме того, для членов группы должно быть установлено право выполнения.

Для просмотра прав доступа и контроля при их изменении используется команда с флагом -l. Права переустановки идентификаторов пользователя и группы отмечаются буквой s на месте соответствующей буквы x: малой s, если соответствующая категория пользователей имеет право x, и большой S - если не имеет; право t отмечается на месте последней буквы x: малой t, если прочие пользователи имеют право выполнять файл, и большой T - если не имеют. Право l отмечается на месте права x для членов группы.

ПРИМЕРЫ

  1. Чтобы установить права, позволяющие владельцу читать и писать в файл, а членам группы и прочим пользователям только читать, надо сложить 0400, 0200, 0040 и 0004. Таким образом, команду можно записать двумя способами: chmod 644 f1 chmod u=rw,go=r f1
  2. Позволить всем выполнять файл f2: chmod +x f2
  3. Учитывать блокировку доступа к файлу f3: chmod +l f3
  4. Дать всем права на чтение запись и выполнение, а также на переустановку идентификатора группы при выполнении файла f4: chmod =rwx,g+s f4 chmod 2777 f4

Зачем я вообще взялся за эту статью? Частенько сталкиваюсь с ситуацией, когда начинающие кодеры веб-страниц задают примерно такой вопрос: «Я тут себе форум бесплатный скачал. Хочу его установить. А в настройках написано, что к отдельным файлам и целым папкам надо установить какие-то права доступа. Указывают цифры 777 или 755. А что это такое? Где и как устанавливаются эти права?».

Знакомая ситуация? Ходил-бродил я по форумам и понял, отвечать на эти вопросы через каждую неделю-две - скучно. Так и родилась эта статейка. Итак, приступим…

Но в самом начале скажу, не советую я вам пользоваться сторонними скриптами, которые требуют прав 777. Позже вы сами поймете почему.

Откуда же «ноги растут» у проблемы c правами доступа? Могу с полной ответственностью заявить: во всем виноват UNIX. Именно от его прав доступа к файлам и папкам всё и исходит. Немного теории. Все пользователи в юниксе располагаются по группам. Одни и те же пользователи могут членствовать сразу в нескольких группах. Права доступа им можно раздавать как для целых групп, так и индивидуально. Администраторы (входят в группу wheel), это - пользователи, которые могут присваивать те, или иные права доступа к файлам себе и остальным пользователям. Это просто и удобно. Предположим, есть группа пользователей, которым разрешено лишь читать документы из определенной папки и совсем нет никакого доступа в другие места системы.

Итак, первое: права доступа различны у разных групп пользователей и второе: эти права делятся по трем категориям (право на чтение файла, право на запись в файл, право на запуск файла, как программы). В этом месте мне прийдется сделать отступление от темы.

Самое место поговорить о двоичных числах и двоичной системе счисления. Не волнуйтесь, я затрону эту тему лишь вскользь, ровно настолько, насколько это необходимо в данной статье. В двоичной арифметике всего два числа, которые можно записать одним символом, это - 0 и 1. А как же в такой системе записать число 2, 3 и т.д.? Да также, как и в привычной нам десятичной. Когда все числа от 0 до 9 исчерпаны, далее числа мы составляем из двух и более цифр. Так же мы поступим и здесь. Число 2 в двоичной системе счисления, это - 10. Я приведу соответствие десятичных чисел и двоичных для большей наглядности.

Здесь видно, когда не хватает 2 цифр, числа уже состоят из 3 цифр и т.д. Десятичное число 8, например, уже выглядело бы в двоичной системе как 1000. Честное слово, на этом о двоичных числах всё. Возвращаемся к нашей теме.

Помните, пару абзацев назад я писал о трёх категориях прав доступа к файлам? Это были чтение, запись и запуск. Если условиться, что разрешение в любой из этих категорий кодируется единицей (1), а запрет нулём (0), то несложно заметить, что закодировать разрешение читать файл и запрет записи и запуска можно тремя цифрами: 100. А разрешить всё тремя единичками: 111. Давайте вспомним приведенную выше таблицу соответствия двоичных чисел привычным нам десятичным. Первый пример, право только на чтение (100) можно, если принять записи из ноликов и единиц за двоичные числа, записать как четверку. Двоичное число 100 = 4 десятичному. Второй пример с тремя единицами, можно записать как десятичное 7.

Именно так и появляются цифры в тех самых правах доступа к файлам: семёрки и пятёрки, четвёрки и нолики. Но внимательный читатель заметит: «Секундочку, а почему же этих цифр три? Почему, говоря о правах, пишут 777 или 755?» И, конечно, будет прав. Дело здесь вот в чём. У каждого файла в юниксе есть хозяин. Это либо пользователь, создавший его, либо тот, кого администраторы указали в данном качестве. Скажем, администратор создает файл и назначает его хозяином рядового пользователя из какой-то группы. С этого момента данный пользователь сам может назначать права доступа к этому файлу другим пользователям системы. В этой связи, все пользователи делятся на три основных категории: хозяин файла, те кто входит с ним в одну группу, все остальные. Для каждой их этих категорий права доступа указываются отдельной цифрой. Вот их три и получается.

Приведем пример : У файла установлены права 755. Первая цифра - 7, это значит, что хозяин имеет на файл все права: чтение, запись и запуск (7 - 111). Вторая цифра - 5, пользователи из одной с хозяином группы имеют возможность читать и запускать файл, но не могут в него писать (5 - 101). Аналогично и все остальные - третья цифра тоже пятерка.

Часто пишут о правах доступа не в цифрах, а буквами. В этом случае права обозначают так: r (r ead - чтение), w (w rite - запись), x (ex ecute - запуск). Если того или иного права нет, вместо буквы пишут знак минус. Используя такую форму записи, можно права доступа 755, например, обозначить так: rwxr-xr-x. Такая запись многим покажется более наглядной. Что ж, может и так.

В юниксподобных ОС для задания прав доступа к файлам служит команда chmod. О том как ей пользоваться я здесь писать не стану (это выходит за тему данной статьи). Напомню лишь о том, что сайты многих из вас, возможно распологаются именно на таких серверах. Узнать это можно, например связавшись с вашим хостером (компанией, предоставившей вам хостинг). Если окажется, что сайт у вас расположен на сервере под управлением Windows, вам также придется задавать вашим файлам и папкам права доступа, хотя раньше на таких веб-серверах всё сводилось к ситуации, когда всё разрешено - 777.

Кто-то, возможно посетует, что я не написал здесь о том как выставить всё же права доступа к файлам? Что ж, могу сказать одно, файлы на сервер можно выложить несколькими способами, точнее используя разные протоколы. Популярными являются ftp и ssh. Второй часто называют шелом. Если ваш хостер позволяет им пользоваться, вы сможете в этом случае воспользоваться юниксовой командой chmod для указания прав доступа к вашим файлам. Если же вы выкладываете файлы по ftp-протоколу, то, скорее всего, для этой цели используете какую-нибудь программу. В ней наверняка есть возможность выставить права доступа к файлам, которые вы закачали на сайт. Причем разные программы используют для этого обе формы записи и буквенную и цифровую. Вам остается лишь узнать как именно выставляются эти пресловутые права вашей любимой программой. А я попытался объяснить что означают цифры и буквы в этих записях. Дерзайте.

15 комментариев на «755 или права доступа к файлам и папкам»

    Ище права можно установить, открыв ftp папку в проводнике виндовса (в ослике есть такая возможность), кликнуть по файлу/папке правой кнопкой, выбрать свойства и там поставить необходимые галочки:D

    • Разумеется можно. Я не писал в этой статейке как устанавливать права доступа к файлам в unix-системах при помощи тех или иных ftp-клиентов. В конце концов, юниксовую команду chmod ещё никто не отменял. Я лишь объяснил, как мне кажется, доходчиво, что именно значат цифры в правах доступа к файлам и папкам. Именно поэтому данная статья и находится в рубрике «Компьютерная теория». Приятно, что кто-то это читает. :)

Всем привет! Сегодня мы проговорим про права доступа к файлам и папкам, узнаем как изменить атрибуты папок и файлов и как это правильно сделать в WordPress. Очень важно правильно установить права доступа WordPress, чтобы защитить свой блог от взлома и при этом не нарушить его работоспособность.

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

Что такое права доступа к файлам и папкам

Как правило мы размещаем свои сайты на хостингах, работающих под Unix-подобных операционных системах (Linux, например). Эти операционные системы отличаются от привычной рядовому юзеру Windows, в частности тем, что позволяют гибко задавать различные права доступа для разных групп лиц.

CHMOD (анг. change file mode) - изменение прав доступа к файлам в ОС типа Unix.

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

Обычно права доступа записываются в виде трех цифр, каждая из которых относится к определенному виду пользователей:

  • Владелец файла
  • Члены группы, к которой относится владелец
  • Остальные пользователи

Для каждого из этих видов пользователей существует три права: чтение (4), редактирование (2), выполнение (1). Если пользователю нужно задать несколько прав, то цифры в скобках складываются:

Чтение + редактирование = 4 + 2 = 6

Чтение + редактирование + выполнение = 4 + 2 +1 = 7

Если установить права доступа 777 – полный доступ, это будет означать, что абсолютно любой пользователь сможет сделать с вашим файлом абсолютно все. Представьте, к чему может привести установление такого атрибута для важных системных файлов.

Поэтому, если при работе с блогом, у вас возникли проблемы с редактированием какого-то файла, поменяйте атрибут только для своего пользователя (первую цифру замените на 7), не нужно задавать файлу полные права 777.

Права можно записать другим способом – латинскими буквами

  • Чтение (Read) - r
  • Редактирование (Write) - w
  • Запуск на выполнение (Execute) - x
  • Отсутствие прав - (0) —

Примеры прав доступа:

Пользователь

Группа

Остальные
600 только владелец имеет право читать и редактировать
r-- 644 владелец файла, владелец имеет право читать и редактировать, члены группы и остальные только читать
rw- 666 любой пользователь имеет право читать и редактировать
700 только владелец файла имеет право читать, редактировать и запускать на исполнение
--x 711 владелец файла имеет право читать, редактировать и запускать на исполнение, члены группы и остальные пользователи имеют право запускать на исполнение, но не могут читать и изменять
r-x 755 владелец файла имеет право читать, редактировать и запускать на исполнение, члены группы и остальные имеют право читать и запускать на исполнение, но не могут записывать
rwx 777 любой пользователь имеет право читать, редактировать и запускать на исполнение

По умолчанию для папок выставляются права - 755, а для файлов - 644.

Как установить в WordPress права на папки и файлы

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


Чтобы установить атрибуты файлу, выделите его, щелкните правой кнопкой мыши – «Изменить атрибуты». В открывшемся окне отметьте нужные галочками или впишите цифрами. Какие именно права каким файлам назначать мы рассмотрим чуть позже.

«Применить рекурсивно» — очень нужны параметр, позволяет в один клик установить нужные атрибуты не только папке, но и всем ее подпапкам и файлам.

Как изменить атрибуты файла в Total Commander

Об этом тоже уже рассказывалось в статье, посвященной . Зайдите на сайт по FTP, выделите нужный файл или папку. Вкладка Файл -> Изменить атрибуты (Files -> Change Attributes) – выставите нужное.

В FileZilla все аналогично. Кликните правой кнопкой мыши по файлу или папке -> «File permissions…».

Правильные права на файлы и папки WordPress

Перейдем к самому интересному. Какие же права будет правильным установить для той или иной папки или файла в вордпресс.

Если с момента установки WordPress или переноса блога на хостинг вы не устанавливали для WordPress права на папки и файлы, обязательно сделайте это! Если когда-то вы это делали, рекомендую проверить, правильно ли у вас заданы атрибуты.

  1. Как уже было сказано выше, права 755 на папки и 644 на файлы.
  2. Задайте следующие права файлу wp-config.php, расположенному в корне: 600 -rw---

WordPress права доступа с использованием плагинов

Я предпочитаю проверить все вручную, но кому-то будет удобнее использовать плагины. В любом случае, не стоит верить плагинам на сто процентов.

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

После зайдите в «Параметры» -> «File Checker» и нажмите кнопку «Run File Check» . Плагин просканирует все файлы блога и можно будет просмотреть, где какие установлены права — все наглядно видно. Файлы, у которых права 777 будут отмечены красным крестиком — что призывает обратить особое внимание и исправить ситуацию.


Кроме наглядности я не вижу других преимуществ этого плагина. Давайте рассмотрим еще один -

Этот плагин куда полезнее. После установки в меню появится отдельный раздел «WP Security» . В нем выберите «WP Info» и прокрутите до «File Scan Report» .

В этом отчете восклицательным знаком отмечены файлы и папки для которых установлены не безопасные права. В третье колонке перечислены рекомендованные для данных файлов права (Suggested permissions). При нажатии на кнопку «Apply suggested permissions» , правильные атрибуты выставятся автоматически.

Что мы узнали о правах доступа WordPress

  • Нужно устанавливать минимальные права доступа для каждой папке, но так, чтобы это не нарушало работоспособность блога
  • Если вы даете полные права на системные файлы и папки вашего сайта, злоумышленники не упустят возможности его сломать
  • Весь материал этой статьи распространяется только на Unix-сервера. Если ваш хостинг работает под Windows, эта информация не имеет к вам отношения.

Берегите себя и свой блог! И чтобы не пропустить новых уроков по безопасности блога, на обновления.

Как обезопасить файловую систему Joomla сайта

Почитал я на досуге, что пишут в интернете про права на файловой системе сайта и просто ужаснулся! Люди ставят 777 на все подряд - а потом удивляются что их взломали.

Хуже всего что, не побоюсь этого слова, «веб-мастеры» и прочие «недопрограммсты» советуют расставлять семерки направо и налево не задумываясь о последствиях. Печально… очень…

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

Чем отличаются права в Windows и Linux

Не буду сильно размышлять по этому поводу. Скажу только основные отличия.

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

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

Права в файловой системе Linux

В Linux системах права задаются в виде 3х флагов - (Пользователь, Группа пользователя, Остальное).
Каждый флаг - это сумма битов: 1 - Выполнение, 2 - Редактирование, 4 - Чтение.Различные комбинации этих битов дают разные варианты доступа к файлу или папке. Примеры можно увидеть на картинке ниже.

Верно, когда для папок сайта выставляются права - 755, а для файлов - 644. Более того - обычно это значения по умолчанию в системе. Подробнее можно узнать в википедии .

Альтернативный вариант записи прав

Есть более гуманная форма записи - с помощью латинских букв. Порядок всех флажком остается тот же. Каждый бит меняется на соответствующую букву. Самая первая буква «d»- это метка, директория это или нет.

  • Read (4) - r
  • Write (2) - w
  • Execute (1) - x
  • отсутствие прав - прочерк -

Таким образом получаем, что права для файла «764» = «-rwxrw-r--» . Небольшой наглядный пример на картинке

Некоторые примеры прав на файлы

  • 444 (-r-r-r-) - Только чтение для любых пользователей.
  • 640 (-rw-r-----) - Изменять и читать файл может только владелец, его группа может только читать.
  • 777 (-rwxrwxrwx) - Полные права на все и для всех (ваш сайт под угрозой! ).

Почему права 777 - это плохо?

Права 777 - это любимые права win-пользователей, потому что дают возможность не задумываться о правах и делать что душе угодно. Но эти права дают ЛЮБОМУ пользователю системы право изменять и выполнять ваши файлы.

Простейшие примеры взломов через 777

  • Если вы пользуетесь шаред-хостингом и выставили себе такие права, то грубо говоря другой клиент этого хостинга, который располагается на той же физической машине что и вы, сможет вас взломать. А на одной машине может быть тысячи клиентов.
  • Если у вас несколько сайтов на одной физической машине, но у всех стоят права 777, то злоумышленник взломав один легко получит доступ ко всем остальным.
  • … и много других не приятных примеров со взломами.

Если вы до сих пор не верите мне, то это только дело времени.

Как узнать от какого пользователя должен работать мой сайт?

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

Проверить это просто. Создайте в корне вашего файл с именем perm. php (или любое другое имя для php-файла). Внутри файла укажите следующий код

"; echo system("ls -la")."\n"; echo exec("id"); echo "";

Внимание! Этот код только для linux-like систем!

Зайдите на этот файл (http://site.com/perm.php) Вы увидите примерно следующую картину

total 100 -rw-r--r-- 1 smetdenis smetdenis 3191 Nov 20 00:22 .htaccess drwxr-xr-x 11 smetdenis smetdenis 4096 Feb 14 16:47 administrator drwxr-xr-x 12 smetdenis smetdenis 4096 Mar 5 19:25 cache drwxr-xr-x 2 smetdenis smetdenis 4096 Feb 14 16:13 cli drwxr-xr-x 20 smetdenis smetdenis 4096 Feb 14 16:27 components -r--r--r-- 1 smetdenis smetdenis 2199 Feb 13 12:23 configuration.php -rw-r--r-- 1 smetdenis smetdenis 1150 Jul 12 2011 favicon.ico drwxr-xr-x 11 smetdenis smetdenis 4096 Feb 25 18:38 images drwxr-xr-x 2 smetdenis smetdenis 4096 Feb 14 16:13 includes -rw-r--r-- 1 smetdenis smetdenis 1319 Feb 4 08:23 index.php -rw-r--r-- 1 smetdenis smetdenis 1757 Feb 4 08:24 joomla.xml drwxr-xr-x 5 smetdenis smetdenis 4096 Feb 1 16:41 language drwxr-xr-x 9 smetdenis smetdenis 4096 Feb 14 16:13 libraries drwxr-xr-x 2 smetdenis smetdenis 4096 Feb 14 16:13 logs drwxr-xr-x 20 smetdenis smetdenis 4096 Feb 14 16:27 media drwxr-xr-x 33 smetdenis smetdenis 4096 Feb 14 16:27 modules -rw-r--r-- 1 smetdenis smetdenis 109 Mar 5 19:26 perm.php drwxr-xr-x 15 smetdenis smetdenis 4096 Feb 14 16:13 plugins -rw-r--r-- 1 smetdenis smetdenis 14 Feb 14 16:57 robots.txt drwxr-xr-x 7 smetdenis smetdenis 4096 Feb 14 16:13 templates drwxr-xr-x 2 smetdenis smetdenis 4096 Feb 21 12:49 tmp -rw-r--r-- 1 smetdenis smetdenis 1715 Nov 8 00:23 web.config.txt

Что есть что расписано на следующей картинке


Обратите внимание, что

  • drwxr-xr-x - правильные права для всех папок (тоже, что и 755)
  • -rw-r-r- - правильные права для всех файлов (тоже, что и 644)
  • -r-r-r- - файл настроек Joomla имеет права только на чтение (444). Выставляет сама Joomla для безопасности вашего сайта и это нормально.

Второй фрагмент кода покажет нам от чьего имени работает apache. Например на моей локальной машине это выглядит так

uid=1000(smetdenis) gid=1000(smetdenis) groups=1000(smetdenis),4(adm),24(cdrom),27(sudo),30(dip),46(plugdev),109(lpadmin),127(sambashare)

  • uid - имя пользователя
  • gid - группа пользователя
  • groups - группы, к которым еще принадлежит пользователь.

Для нормальной работы вашего сайта важно чтобы имя и пользователь для файлов и папок совпадали с apache (в нашем случае это «smetdenis»). Это даст вам правильную работу и основу безопасности.

Как узнать полный путь до корня своего сайта?

Создайте в корне файл php со следующим кодом и выполните его

В некоторых версиях php приведенный код может не сработать, попробуйте следующий вариант, либо обратитесь к вашему хостеру

";

Как быстро выставить права для всего сайта?

Нужно в консоли выполнить следующие команды (через SSH - узнавайте у вашего хостера)

Для изменений прав всем файлам

find <ПОЛНЫЙ ПУТЬ ДО ВАШЕГО САЙТА> -type f -exec chmod 644 {} \;

Для изменений прав всем папкам

find <ПОЛНЫЙ ПУТЬ ДО ВАШЕГО САЙТА> -type d -exec chmod 755 {} \;

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

chown -R smetdenis:smetdenis <ПОЛНЫЙ ПУТЬ ДО ВАШЕГО САЙТА>

Права для Joomla

Абсолютно все что было сказано выше относится и к любому Joomla-сайту, любой версии. Если по каким то причинам не получается дать права всему сайту (а это уже намек на смену хостера), то обязательно проверьте что следующее доступно для записи

/tmp /logs /cache /images /configuration.php

Это минимум для нормальной работы Joomla-сайта. Некоторые компоненты для Joomla могут писать в свои папки, например компонент Zoo (и JBZoo) изменяют файлы "*.config". Но с этим проблем не будет, если все права выставлены верно.



Есть вопросы?

Сообщить об опечатке

Текст, который будет отправлен нашим редакторам: