Примеры использования команды chmod в абсолютном режиме

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

С проблемой неправильных прав вы можете столкнуться при переезде от другого хостера. Например, вы решили у хостинг-провайдера с Windows OS. А потом увидели, что есть специализированный хостинг для CMS – как раз то, что вам нужно. И вы решили перебраться на с Linux OS. Вот тут-то и начинаются проблемы. Но не отчаивайтесь, эта статья поможет вам во всем разобраться.

Рядовые пользователи Windows от таких нюансов далеки. Хотя понятие уровней доступа и существует в этой ОС, но используется редко. Поэтому, если вы хотите , можете смело пропустить эту статью.

В случае с Linux дело обстоит иначе. UNIX-подобные системы предполагают разные уровни доступа и разные права на данные. Файлы и папки рассчитаны на работу трех категорий пользователей :
  • владельца (user);
  • группы (group), в которую входят другие пользователи и может входить владелец файла;
  • остальных (others) – например, посетителей сайта, которые должны хотя бы иметь права просматривать выставленный вами контент.

Права доступа Linux пользователей могут быть следующими:

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

read (4 ) – чтение – право на чтение содержимого файла;

write (2 ) – редактирование – право на создание, изменение, удаление файла или директории;

execute (1 ) – исполнение – право на исполнение файла и вход в директорию (проверяется в первую очередь).

Таким образом, права пользователей могут распределяться следующим образом:

Права 777 предоставляют все привилегии пользователю, группе и остальным пользователям системы.

Какие права для файлов и папок использовать в cPanel

Стандартные права доступа, актуальные и для нашего виртуального хостинга:

Файлы – 644

Папки – 755 .

Они предполагает следующие привилегии:

Почему именно 755 и 644

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

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

Работа со скриптами через suPHP, и соответственно, настройка прав 755 и 644 рекомендуется разработчиками многих cms, например, популярных WordPress и Joomla.

Иногда, при смене хостингового провайдера и переносе данных на новый сервер, на данных остаются старые права. Чтобы сменить их, нужно:

1. Зайти в cPanel от имени пользователя

2. В разделе Файлы выбрать Диспетчер файлов (в WHM недоступен, только через сPanel)

3. Перейти в каталог, в котором необходимо изменить права для файлов/папок. Например, в каталог public_html .

4. Изменить права для файла/каталога можно двумя способами.

Первый способ изменения прав из меню Диспетчер Файлов:

1) Выделить нужную папку/файл и кликнуть на права (непосредственно на цифры, например, 0755 ):

2) Вписать нужные права и нажать Save :

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

2) В новом окне выставить нужные права и нажать Change Permissions .

1. Нужно подключиться к хостинговой учетной записи по FTP;

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

3. В новом окне выставить права. В случае директории, сменить права можно рекурсивно, выбрав опцию “Перенаправить во вложенные каталоги ”.

Как поменять права на файлы и папки по SSH?

Владельцы могут сменить права через терминал с помощью команды «chmod».

  • Например, настроить права 755 для папки media нужно следующим образом:
chmod 755 media

Обратите внимание: смена происходит в той директории, в которой вы сейчас находитесь.

  • Для смены прав для всех файлов текущей директории используется знак “звездочка”
chmod 644 *
  • Если нужно сменить права на файлы во всех подкаталогах определенной папки, то поможет рекурсивная смена, которая выполняется с помощью добавления ключа -R и звездочки:
chmod -R 644 *

Для установки прав на несколько файлов необходимо перечислить их названия:

Chmod 644 file1.txt file2.txt file3.txt

Интересуетесь, ? Хотите, чтобы хостинг и обходились? Наши предложения вам не просто понравятся! Вы сможете прилично сэкономить, выбрав любой из наших пакетов услуг.

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

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

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

Базовые понятия прав доступа к файлам и папкам

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

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

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

В свою очередь, по отношению к файлам возможно:

  • r - право на чтение данных.
  • w - на изменение содержимого (запись – только изменение содержимого, но не удаление).
  • x - на исполнение файла.

Остановимся чуть подробнее на возможности исполнения файла. Дело в том, что в linux любой файлик может быть исполнен. Является ли он исполнительным — определяется не по его расширению (понятие расширение отсутствует в файловой системе Unix), а по правам доступа Chmod. Если у какого-либо файлика установлено право на исполнение “X”, то это означает, что его можно запустить на выполнение.

По отношению к директориям возможно:

  1. r - право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)
  2. w - на изменение содержимого директории (можно создавать и удалять объекты в ней, причем, если вы имеете право на запись, то удалять вы сможете даже те файлы, которые вам не принадлежат)
  3. x - на вход в директорию (оно всегда проверяется в первую очередь, и даже если вы имеете все нужные привилегии на объект, который закопан глубоко в цепочке каталогов, но не имеете атрибут “X” для доступа хотя бы к одной директории на пути к этому файлике, то к нему вы так и не пробьетесь)

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

Привилегии для групп пользователей

Сами привилегии подразделяются на три категории в зависимости от того, кто обращается к объекту:

  • «user» — u (непосредственно владелец файлика)
  • «group» — g (член той же группы, к которой принадлежит владелец)
  • «world» — o (все остальные)

Сервер определяет, к какой группе пользователей вас отнести в момент подключения вас к серверу. Когда вы, например, подключаетесь к серверу по протоколу FTP, то вы входите под своим именем пользователя (и паролем), и тогда сервер относит вас к группе «user» («u)».

Прочие пользователи, которые тоже подключаются по FTP к серверу, будут отнесены к группе «group» («g»), а посетитель, который приходит к вам на вебсайт, используя свой браузер, попадает в группу «world» («o»).

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

  1. сначала права для владельца — «u»
  2. затем для группы — «g»
  3. и в конце — для всех остальных — «o»

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

Чтобы посмотреть содержимое каталога, он должен иметь атрибут чтения «r» (для той группы, к которой сервер отнес посетителя). Чтобы создать файлик или папку в уже существующей необходимо, чтобы этот существующий каталог имел атрибут на запись «w».

Для наглядности давайте разберем пример, где владелец файла («user» — «u») имеет все права: на чтение, запись в него и исполнение, а все остальные пользователи только привилегию на чтение. Запись таких Chmod будет выглядеть так: «rwx r-- r--».

Рассмотрим ее в деталях: «rwx» (эта запись задает права на объект для владельца — «u»), «r--» (эта запись задает права на тот же объект, но в случае, если посетитель отнесен сервером к группе — «g»), «r--» (эта запись задает привилегии на объект для всех остальных пользователей — «o»).

Чем отличаются права файлов и папок

Получается, что существует три группы пользователей и три возможных действия с объектами. Еще не запутались? Разложим все сказанное выше по полочкам в виде табличек. Сначала наглядно посмотрим, чем они отличаются:

А так же табличка, показывающая разнообразные комбинации Chmod для разных типов объектов:

Ничего нельзя делать

Доступ к каталогу и его подкаталогам запрещен

Можно видеть и изменять содержимое

Можно добавить, удалить, изменить файл каталога

Выполнить, если файлик двоичный

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

Chmod, выраженные в цифрах (777, 400, 666, 755, 444)

Вы видите, что здесь для описания прав доступа применяются записи с использованием латинских букв и дефисов, но вы, наверное, уже сталкивались с тем, что обычно Chmod задают в цифровом виде , например, всем известная комбинации: 777, разрешающая все и всем.

Действительно, привилегии так же обозначают и цифрами:

  1. r (читать) заменяют на 4
  2. w (запись) заменяют на 2
  3. x (исполнение) заменяют на 1
  4. 0 означает – ничего не делать (то, что в буквенной записи обозначается дефисом)

Давайте опять вернемся к примеру записи, приведенному мною чуть ранее: rwx r-- r-- . Если заменить в ней буквы и дефисы на цифры, в соответствии с только что описанным правилом и при этом сложить цифры в каждой тройке, то получим цифровой вид этой записи: 744 .

Т.е. получается, что сумма этих цифр и показывает Чмод по отношению к файлам или папке. Например:

  • 7 (rwx) = 4 + 2 +1 (полные права)
  • 5 (r-x)= 4 + 0 + 1 (чтение и выполнение)
  • 6 (rw-) = 4 + 2 + 0 (чтение и запись)
  • 4 (r--) =4 + 0 + 0 (только чтение)
  • и т.д.

В этой таблицы приведены все возможные комбинации привилегий записанные в цифровом виде:

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

«Владелец»

«Группа»

«Остальные»

исполнять

исполнять

исполнять

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

Для того, чтобы при работе пользователя с сайтом «запускался файл» скрипта, достаточно будет, чтобы на него были установлены права, начиная от «4» (r-- – только чтение) (5,6,7 тоже подойдут, но это будет лишнее в плане безопасности).

Для каталога же, в котором лежит файлик этого скрипта, нужно выставить минимум «5» (r-x — можно зайти в каталог и прочитать его содержимое, удалять или добавлять нельзя). 7 тоже подойдет, но тоже будет уже лишним в плане безопасности.

Если нужно, чтобы скрипт не только читался, но и «записывал» какие-то данные (например, введенные посетителем), то минимальные права на «папку» по-прежнему будут «5», но для «файлика» уже понадобится «6» (читать и записывать).

Скорей всего на сервере, куда вы скопировали содержимое движка вашего сайта, будут установлены следующие Chmod к объектам:

Если бы у вас был ресурс, состоящий из одних html страниц, то можно было бы все так и оставить. Но современные сайты построены на движках, и там могут быть объекты, в которые нужно производить запись от имени посетителей из группы «world» - o (все остальные). Это могут быть каталоги, используемые для кэширования страниц или те, в которые по ходу работы с сайтом будут загружаться картинки и др.

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

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

для папок, в которые должны записываться и стираться файлы (например, для кеша)

для простых файлов, используемых только для чтения (.html, .php и др.)

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

Как назначить Chmod посредством PHP

Как же все это можно реализовать на практике для своего сайта? В принципе, все просто. Для назначения прав доступа можно :

Но если Чмод на какие-либо файлы поменять не получается, то можно попробовать назначить их PHP средствами. Вы можете воспользоваться следующим кодом:

Вам надо будет заменить file_name_x.php и directory_name_x на реальные имена файлов и папок, Чмод к которым вы хотите изменить. Соответственно, для файликов установится 666, а для каталогов - 777. Поместите это PHP код в файлик с помощью любого текстового блокнота (рекомендую ) и дайте ему расширение.php, ну, например, как prava.php.

prava.php скопируйте по FTP в ту директорию, в которой не получается штатными средствами назначить права доступа. В адресной строке браузера пропишите путь до prava..php) и нажмите «Пуск» или энтер на клавиатуре. Все, теперь привилегии будут стопроцентно изменены средствами PHP.

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

Administrator/backups/ administrator/cache/ administrator/components/ administrator/modules/ administrator/templates/ cache/ components/ images/ images/banners/ images/stories/ language/ language/en-GB/ language/ru-RU/ media/ modules/ plugins/ plugins/content/ plugins/search/ plugins/system/ templates/

После того, как вы установите для Джумлы все расширения и произведете окончательные настройки, Chmod к большинству из приведенных выше директорий следует в целях повышения безопасности сайта вернуть к 755 . Оставить 777 нужно будет на каталоги с кешем, с бекапом и с картинками.

Для файлов движка, находящихся в корне сайта, кроме sitemap.xml, лучше установить 444 (для всех групп посетителей только чтение). На seting.php иногда советуют даже установить 400.

Точно такие же советы могу дать и по поводу установки прав доступа на объекты в движках SMF и WordPress. Желательно, по возможности, оставлять на постоянной основе для директорий 755 (кроме оговоренных выше каталогов кеша, картинок, бекапа и может быть еще каких-то, по мере необходимости), а для файликов — 644 .

На файлы в корне сайта лучше поставить 444.

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

Удачи вам! До скорых встреч на страницах блога сайт

Вам может быть интересно

Кодировка текста ASCII (Windows 1251, CP866, KOI8-R) и Юникод (UTF 8, 16, 32) - как исправить проблему с кракозябрами
OpenServer - современный локальный сервер и пример его использования для установки WordPress на компьютер
Что такое URL адреса, чем отличаются абсолютные и относительные ссылки для сайта
Поиск Яндекса по сайту и интернет-магазину
Карта сайта Sitemap в формате xml для Яндекса и Google - как создать сайтмап в Joomla и WordPress или в онлайн генераторе

Зачем я вообще взялся за эту статью? Частенько сталкиваюсь с ситуацией, когда начинающие кодеры веб-страниц задают примерно такой вопрос: «Я тут себе форум бесплатный скачал. Хочу его установить. А в настройках написано, что к отдельным файлам и целым папкам надо установить какие-то права доступа. Указывают цифры 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 ещё никто не отменял. Я лишь объяснил, как мне кажется, доходчиво, что именно значат цифры в правах доступа к файлам и папкам. Именно поэтому данная статья и находится в рубрике «Компьютерная теория». Приятно, что кто-то это читает. :)



Просмотров