Ubuntu chmod команды. Команды Linux: CHMOD. Биты Setuid и Setgid

Сегодня я хотел бы поговорить о правах доступа к файлам и папкам (читайте ). Это понятие пришло в мир вебмастеринга из 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 или в онлайн генераторе

Многие начинающие пользователи ОС Linux часто теряются при назначении прав доступа при помощи команды chmod .


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

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

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

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

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

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

(Изначальное значение прав доступа файла file - rwxrwxrwx - полный доступ для всех)

Отмена разрешения на выполнение файла для всех пользователей и групп:

$ chmod a-x file (rw-rw-rw-)

Отмена записи в файл группой и остальными пользователями:

$ chmod go-w file (rw-r--r--)

Разрешение выполнения файла владельцем:

$ chmod u+x file (rwxr--r--)

Предоставление группе тех прав доступа, которыми владеет владелец файла:

$ chmod g=u file (rwxrwxr--)

Отмена чтения и запись в файл пользователям группы и другим пользователям:

$ chmod go-rw file (rwx--x---)

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

Разрешение чтения, записи, выполнения файла file всеми пользователями и группами (полный доступ):

$ chmod 777 file (rwxrwxrwx)

Установка разрешений на чтение и запись для владельца, группы и остальных пользователей:

$ chmod 666 file (rw-rw-rw-)

Установка полного доступа к файлу для владельца и лишь чтения для группы и остальных пользователей:

$ chmod 744 file (rwxr--r--)

Установка полного доступа к файлу владельцу файла и запрет доступа группе и другим пользователям:

$ chmod 700 file (rwx------)

Установка разрешений на чтение и запись для владельца файла и лишь чтения для группы и остальных:

$ chmod 644 file (rw-r--r--)

Установка разрешений на чтение и запись владельцу файлу и его группе и запрет доступа для других:

$ chmod 640 file (rw-r-----)

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

$ chmod 444 file (r--r--r--)

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

$ chmod 755 file (rwxr-xr-x)

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

$ chmod 505 file (r-x---r-x)

Если вы хотите назначить права доступа на все файлы в текущем каталоге, просто поставьте после назначаемых прав доступа знак * (звездочка):

$ chmod 755 *

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

Если вы хотите, чтобы ваши действия распространились рекурсивно (включая все подкаталоги), воспользуйтесь опцией -R:

$ chmod -R 777 *

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

В этой статье рассмотрены лишь некоторые примеры применения команды chmod . Если вы хотите узнать подробнее о работе команды chmod и правах доступа в Linux, обратите внимание на .

Команда chmod (change mode – сменить режим) предназначена для изменения прав доступа к файлам и каталогам в Unix-подобных операционных системах.

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

chmod [ключи] установка_прав имя_файла

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

Изменение прав с помощью символьной нотации

При установке прав с помощью символов в первом аргументе (установка_прав) программы chmod используются три группы символов.

В первой группе указывается, кому будет предоставляться или запрещаться доступ: владельцу (u), группе (g), остальным (o) или всем (a). Можно указать как одну, так сразу несколько категорий.

Вторая группа обозначает запрещение, разрешение или назначение права и всегда состоит из одного символа: -, + или =.

В третьей группе перечисляется изменяемые права: чтение (r), запись (w), исполнение (x). Можно указывать сразу несколько прав.

На скрине в первом примере группе добавляется право на запись, что выражается как g+w. Во втором примере группе и остальным назначается право r--. В третьем случае остальным запрещается читать файл. Отметим, что один и тот же результат можно получить разными способами: как через назначение, так добавлением или удалением права.

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

chmod o-r,a-w month.txt text.txt

Установка прав с помощью чисел

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

7 – разрешены чтение, запись, исполнение
6 – разрешены чтение и запись
5 – разрешены чтение и исполнение
4 – разрешено только чтение
0 – ничего не разрешено

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

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

Установка прав для каталогов

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

В примере мы устанавливаем для каталога и вложенных в него объектов права 754. По отношению к каталогам это означает, что владелец может делать все, группа – просматривать содержимое каталога, остальные – только узнавать список объектов каталога. Обратите внимание на использование ключа -d команды ls. Он позволяет получить сведения о самом каталоге, а не его содержимом.

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

В примере команда chmod применяется в числовой нотации. При этом используется дополнительная цифра 1, которая обозначает установку t-бита. В буквенной нотации достаточно просто написать +t без указания категории пользователей. В выдаче команды ls мы видим символ t вместо икса в тройке прав всех остальных. Это не значит, что бит t заменяет бит x. Это особенность вывода информации. Буква t говорит, что право на исполнение есть. Если бы его не было, использовалась бы заглавная буква.

Изменить права доступа к файлу

Синтаксис:

chmod [-fv] [-R [-H | -L | -P]] mode file ... chmod [-fv] [-R [-H | -L | -P]] [-a | +a | =a] ACE file ... chmod [-fhv] [-R [-H | -L | -P]] [ACL_Option ] file ...

Параметры:

-R Рекурсия. Используется для папок. Меняет права не только для указанного объекта, но для всех вложенных в него
-R -H Следовать за символьными ссылками в командной строке. По умолчанию символьные ссылки не обрабатываются
-R -L Все символьные ссылки будут обработаны
-R -P Дерево ссылок обрабатываться не будет. Параметр по умолчанию.
-v Многословный. Показывает все файлы, которые были изменены
-v -v очень многословный режим. Будет выведено старые и новые права в восьмеричном (числовой) и буквенном режиме отображения
-f не отображать диагностические сообщения в случае невозможности изменения прав доступа к файлу
ACL_Option (ACL - списки контроля доступа для групп пользователей) ACL_manipulation_options

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

Прав доступа могут быть указаны в буквенном коде или числовом на основе восьмеричной системы счисления

Управление с помощью цифрового указания прав доступа:

Для управления правами используется три бита

  • первый - право на чтение
  • второй -право на запись
  • третий -право на выполнение
Побитно Число Буквенный код описание права
000 0 нет прав
001 1 право только на исполнение
010 2 право только на запись
011 3 право на запись и исполнение
100 4 право только на чтение
101 5 право на чтение и исполнение
110 6 право на чтение и запись без исполнения
111 7 все права

Такие права на файл устанавливаются для трех видов доступа:

  • для владельца
  • для группы
  • для остальных

В итоге команда выглядит следующим образом:

$ chmod 444 file -право только на чтение для всех

$ chmod 755 file -владелец имеет все права (7), остальные пользователи только чтение и запуск (5)

$ chmod 066 file -владелец не имеет никаких прав на файл (0), все остальные право на чтение и запись без выполнения

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

Формат указания прав символьным кодом

[кто...][[+-=][права...]...][,...]

кто - это комбинация символов "ugoa" указывающая на пользователей чьи права на доступ к файлу или папке будут изменены

  • u пользователь собственник
  • g группа пользователей
  • o остальные пользователи
  • a (all) для всех, аналогично ugo

(Изначальное значение прав доступа файла file - rwxrwxrwx – полный доступ для всех) Отмена разрешения на выполнение файла для всех пользователей и групп:

$ chmod a-x file (rw-rw-rw-)

Отмена записи в файл группой и остальными пользователями:

$ chmod go-w file (rw-r–r–)

Разрешение выполнения файла владельцем:

$ chmod u+x file (rwxr–r–)

Предоставление группе тех прав доступа, которыми владеет владелец файла:

$ chmod g=u file (rwxrwxr–)

Отмена чтения и запись в файл пользователям группы и другим пользователям:

$ chmod go-rw file (rwx–x-)

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

Разрешение чтения, записи, выполнения файла file всеми пользователями и группами (полный доступ):

$ chmod 777 file (rwxrwxrwx)

Установка разрешений на чтение и запись для владельца, группы и остальных пользователей:

$ chmod 666 file (rw-rw-rw-)

Установка полного доступа к файлу для владельца и лишь чтения для группы и остальных пользователей:

$ chmod 744 file (rwxr–r–)

Установка полного доступа к файлу владельцу файла и запрет доступа группе и другим пользователям:

$ chmod 700 file (rwx--)

Установка разрешений на чтение и запись для владельца файла и лишь чтения для группы и остальных:

$ chmod 644 file (rw-r–r–)

Установка разрешений на чтение и запись владельцу файлу и его группе и запрет доступа для других:

$ chmod 640 file (rw-r-–)

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

$ chmod 444 file (r–r–r–)

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

$ chmod 755 file (rwxr-xr-x)

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

$ chmod 505 file (r-x-r-x)

Если вы хотите назначить права доступа на все файлы в текущем каталоге, просто поставьте после назначаемых прав доступа знак * (звездочка):

$ chmod 755 *

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

$ chmod -R 777 *

Результатом выполнения вышеприведенной команды будет рекурсивный “обход” всех подкаталогов текущего каталога и назначение полного доступа для всех пользователей и групп. В этой статье рассмотрены лишь некоторые примеры применения команды chmod. Если вы хотите узнать подробнее о работе команды chmod и правах доступа в Linux, обратите внимание на эту статью.

Смена прав только у директорий (рекурсивно)

$ find /path/to/base/dir -type d -exec chmod 755 {} +

$ chmod 755 $(find /path/to/base/dir -type d)

$ chmod 755 `find /path/to/base/dir -type d`

$ find /path/to/base/dir -type d -print0 | xargs -0 chmod 755

Смена прав только у файлов (рекурсивно)

$ find /path/to/base/dir -type f -exec chmod 644 {} +

$ chmod 644 $(find /path/to/base/dir -type f)

$ chmod 0755 `find ./ -type f`

$ find /path/to/base/dir -type f -print0 | xargs -0 chmod 644

Синтаксис Chmod для папок и файлов

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

Права доступа (Chmod) к файлам подразделяются на:

    r - право на чтение данных.

    w - право на изменение содержимого (запись – только изменение содержимого, но не удаление).

    x - право на исполнение файла.

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

Теперь о правах доступа (Chmod) к папке (директории):

    r - право на чтение директории (можно прочитать содержимое директории, т.е. получить список объектов, находящихся в ней)

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

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

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

Синтаксис Chmod для групп пользователей

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

    «user» - u (непосредственно владелец файла)

    «group» - g (член той же группы, к которой принадлежит владелец)

    «world» - o (все остальные)

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

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

    сначала права для владельца - «u»

    затем для группы - «g»

    и в конце права для всех остальных - «o»

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

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

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

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

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

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

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

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

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

Синтаксис Chmod выраженных в цифрах (777)

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

    w (запись) заменяют на 2

    x (исполнение) заменяют на 1

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

    7 (rwx) = 4 + 2 +1 (полные права)

    5 (r-x)= 4 + 0 + 1 (чтение и выполнение)

    6 (rw-) = 4 + 2 + 0 (чтение и запись)

    4 (r--) =4 + 0 + 0 (только чтение)

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

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

«„Владелец“»

«„Группа“»

«„Остальные“»

исполнять

исполнять

исполнять

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

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

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

Папки 755

владелец (user) может всё, группа и все остальные могут только читать папки и заходить в них, но им запрещено записывать файлы, изменять названия и стирать их в директориях. (rwxr-xr-x)

Файлы 644

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

Loading...Loading...