Войти
Android, Windows, Apple, Ликбез. Социальные сети. Драйверы
  • Японские телефоны Новый японский смартфон
  • Lenovo G500S: характеристики, основные особенности
  • Определяем серию продукта видеокарт Nvidia Характеристики карты nvidia 9800 gt
  • А конкуренты у смартфона есть
  • Что такое расширение файла TRZ?
  • Не работает динамик в "айфоне"
  • Chmod синтаксис. Команда chmod - Примеры использования

    Chmod синтаксис. Команда chmod - Примеры использования

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

    Синтаксис:

    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

    НАЗВАНИЕ
    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

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

    Cd /var/www/сайт find ./ -type f -exec chmod 0644 {} \; find ./ -type d -exec chmod 0755 {} \;

    Что такое Chmod

    Это UNIX-утилита, с помощью которой можно быстро через консоль изменить права на доступ для определённых владельцев (owner) и групп (group) для указанных категорий и файлов.

    Зачем использовать Chmod

    В UNIX-системах — FreeBSD, Ubuntu, Debian, Centos — у каждого файла и папки (каталога) есть свои , к которым они относятся. Сделано это с целью разграничения прав доступа на чтение (r, read), запись (w, write) и исполнение (x, execute) для разных пользователей: владельцев (u), пользователей, входящих в группу владельца (g) и остальных (o).
    Например, если вы пользуетесь хостингом, то должны знать, что ваш сайт физически находится на одном сервере рядом со множеством других сайтов таких же, как вы, пользователей со своими сайтами. Чтобы вы не смогли помешать друг другу, у каждой директории с сайтами свой владелец и группа пользователей, к которым они относятся.
    На shared хостинге о вас позаботятся профессиональные системные администраторы. А если вы имеете свой сервер VDS/VPS, то просто обязаны следить за прописанными правами на доступ к файлам. Например, если вдруг с помощью уязвимости на сайте злоумышленник сможет записать backdoor в директорию для загрузки файлов, то с правильно прописанными правами доступа он не сможет причинить большого вреда файловой системе. Конечно, в директории для загрузки файлов должно быть принудительно отключено исполнение скриптов, но это тема уже для другого разговора.

    Синтаксис Chmod

    chmod [-Rvf] [Правила доступа] [Файл/Файлы/Каталог, директория файлов]

    В части [Правила доступа] могут быть либо числовые, либо символьные значения.
    [Файл/Файлы/Каталог файлов] — путь к файлу, файлам или к каталогу файлов, абсолютный или относительный.

    Ключи -R, -v, -f

    • -R
      Рекурсивное изменение прав доступа для каталога и вложенных файлов и подкаталогов
    • -v
      Подробное описание применения изменения прав доступа или невозможности этого действия
    • -f
      Не выдавать сообщение об ошибке для тех файлов и каталогов, для которых невозможно изменить права доступа

    Правила доступа Chmod

    Как вы уже знаете, права доступа определяются тем, как пользователь может взаимодействовать с файлами и каталогами, а именно r — read (чтение), w — write (запись), x — execute (выполнение).
    А также, вы знаете, что эти права должны быть прописаны для трёх групп пользователей:

    1. Владелец файла или каталога;
    2. Пользователи, входящие в группу владельца;
    3. Остальные.

    Теперь посмотрим в таблицу определения прав:

    То есть, для того, чтобы записать правило для владельца дать доступ на чтение и запись, остальным дать права только на чтение , мы должны дать права (rw-r--r--)

    Теперь обратите внимание на столбец Символьная и Восьмеричная. Там визуально показано, что то, что выглядит символьно как (rw-r--r--), в восьмеричном виде выглядит как (644). Это выражение и будем использовать как числовую запись в команде.

    Теперь осталось собрать всё воедино в одну запись. Для примера, изменим права на доступ «всем дать права на чтение, владельцу право изменять содержимое» для файла index.php:

    Chmod -v 644 index.php

    Как проверить права Chmod

    ls -ld index.php

    где index.php — файл или каталог, который нужно проверить.

    Пример правильного использования Chmod

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

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

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

    В Linux и других Unix-подобных операционных системах для каждого файла существует набор правил, которые определяют, кто и как может получить доступ к этому файлу. Эти правила называются правами доступа к файлам или режимами файлов. Имя команды chmod означает «режим изменения» и используется для определения способа доступа к файлу.

    В общем виде команды chmod выглядят так:

    chmod параметры разрешения имя файла

    Если параметры не указаны, chmod изменяет разрешения файла, указанного в имени файла , на разрешения, указанные в разрешениях .

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

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

    1. пользователь (u ser) мог читать (r ead), писать (w rite) и выполнять (x ecute) его;
    2. члены группы (g roup) могут прочитать (r ead) и выполнить (x ecute) его;
    3. а также другие (o thers) могут только читать (r ead) его.

    Эта команда будет выглядеть вот так:

    chmod u=rwx,g=rx,o=r myfile

    В этом примере используется символьная запись разрешений. Буквы u, g и o обозначают «пользователь», «группа» и «другое». Знак равенства («=») означает «установить права доступа именно так», а буквы «r», «w» и «x» означают «чтение», «запись» и «выполнение» соответственно. Запятые разделяют различные классы разрешений, и между ними нет пробелов.

    Вот эквивалентная команда, использующая восьмеричное обозначение разрешений:

    chmod 754 myfile

    Здесь цифры 7, 5 и 4 каждая по отдельности представляют разрешения для пользователя, группы и других в этом порядке. Каждая цифра представляет собой комбинацию чисел 4, 2, 1 и 0:

    • 4 означает «читать»,
    • 2 означает «записать»,
    • 1 означает «выполнить»,
    • 0 означает «нет разрешения».

    Таким образом, 7 представляет собой комбинацию разрешений 4 + 2 + 1 (read, write, and execute), 5 - это 4 + 0 + 1 (read, no write, and execute), а 4 - 4 + 0 + 0 (read, no write, and no execute).

    Синтаксис chmod

    chmod ... MODE[,MODE]... FILE... chmod ... OCTAL-MODE FILE... chmod ... --reference=RFILE FILE...

    Параметры chmod

    -c , --changes Подобно --verbose, но выдает подробный вывод только тогда, когда изменение действительно сделано.

    -f , --silent , --quiet Бесшумный режим; подавлять большинство сообщений об ошибках.

    -v , --verbose Подробный режим; вывести диагностическое сообщение для каждого обработанного файла.

    --no-preserve-root Не обрабатывать "/" (корневой каталог) каким-либо особым образом, который является настройкой по умолчанию.

    --preserve-root Не работать рекурсивно на «/».

    --reference= RFILE Установить разрешения, соответствующие разрешениям файла RFILE, игнорируя любой указанный РЕЖИМ.

    -R , --recursive Менять файлы и каталоги рекурсивно.

    --help Показать справочное сообщение и выйти.

    --version Вывести информацию о версии и выйти.

    Техническое описание

    chmod изменяет режим файла каждого указанного ФАЙЛА в соответствии с MODE, который может быть либо символическим представлением вносимых изменений, либо восьмеричным числом, представляющим битовую комбинацию для битов нового режима.

    Формат символического режима:

    [[+-=]...]

    где perms - это ноль или более букв из набора r, w, x, X, s и t, или одна буква из набора u, g и o. Можно указать несколько символьных режимов, разделенных запятыми.

    Комбинация букв u, g, o и элементов управления, которые изменят доступ пользователей к файлу: пользователь, которому он принадлежит (u), другие пользователи в группе файла (g), другие пользователи, которых нет в файле группа (o) или все пользователи (a). Если ничего из этого не дано, эффект будет таким, как если бы был задан a, но биты, которые установлены в umask, не затрагивались.

    Оператор (+) вызывает добавление выбранных битов режима файла к существующим битам режима файла каждого файла; " -" вызывает их удаление; и "=" вызывает их добавление и приводит к удалению не упомянутых битов, за исключением того, что неизменяемые установленные пользователем биты каталога и идентификаторы группы не затрагиваются.

    Буквы r, w, x, X, s и t выбирают биты режима файла для затронутых пользователей: чтение (r), запись (w), выполнение (x), выполнение только в том случае, если файл является каталогом или уже имеет разрешение на выполнение для некоторого пользователя (X) установите идентификатор пользователя или группы при выполнении (s), флаг ограниченного удаления или фиксированный бит (t). Для каталогов параметры выполнения X и X определяют разрешение на просмотр содержимого каталога.

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

    Числовой режим - от одной до четырех восьмеричных цифр (0-7), полученных путем сложения битов со значениями 4, 2 и 1. Предполагается, что пропущенные цифры являются ведущими нулями. Первая цифра выбирает заданный идентификатор пользователя (4) и заданный идентификатор группы (2) и атрибуты ограниченного удаления или закрепления (1). Вторая цифра выбирает права доступа для пользователя, которому принадлежат операции чтения (4), записи (2) и выполнения (1); третий выбирает права доступа для других пользователей в группе файла с теми же значениями; и четвертый для других пользователей, не входящих в группу файла, с теми же значениями.

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

    Биты Setuid и Setgid

    chmod очищает бит set-group-ID обычного файла, если идентификатор группы файла не совпадает с эффективным идентификатором группы пользователя или одним из идентификаторов дополнительной группы пользователя, если только у пользователя нет соответствующих привилегий. Дополнительные ограничения могут привести к игнорированию битов set-user-ID и set-group-ID в MODE или RFILE. Это поведение зависит от политики и функциональности основного системного вызова chmod. В случае сомнений проверьте поведение системы.

    chmod сохраняет биты set-user-ID и set-group-ID каталога, если вы не укажете иное. Вы можете установить или очистить биты с помощью символических режимов, таких как u + s и g-s, и вы можете установить (но не очистить) биты с помощью числового режима.

    Флаг ограниченного удаления (или «Sticky Bit»)

    Ограниченный флаг удаления или закрепленный бит - это один бит, интерпретация которого зависит от типа файла. Это предотвращает удаление или переименование файла в каталоге пользователям, которые не владеют файлом или каталогом; это называется флагом ограниченного удаления для каталога и обычно встречается в каталогах, доступных для записи во всем мире, таких как / tmp. Для обычных файлов в некоторых старых системах этот бит сохраняет текстовое изображение программы на устройстве подкачки, поэтому при запуске он загружается быстрее; это называется липким битом.

    Как посмотреть разрешения файла

    Быстрый и простой способ составить список прав доступа к файлу с помощью опции длинного списка (-l) команды ls. Например, чтобы просмотреть разрешения для file.txt, вы можете использовать команду:

    Ls -l file.txt

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

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

    chmod 644 file.htm

    Устанавливает для файла file.htm права «владелец может читать и писать; группа может только читать; другие могут только читать».

    Chmod -R 755 myfiles

    Рекурсивно (-R) меняет разрешения для каталога myfiles и всех его папок и файлов на режим 755. Пользователь может читать, записывать и выполнять; члены группы и другие пользователи могут читать и выполнять, но не могут писать.

    Chmod u=rw example.jpg

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

    Chmod u+s comphope.txt

    Устанавливает бит «Set-User-ID» файла comphope.txt, чтобы каждый, кто пытается получить доступ к этому файлу, сделал это так, как если бы он был владельцем файла.

    Chmod u-s comphope.txt

    Противоположность вышеупомянутой команды; снимает бит SUID

    Chmod 755 file.cgi

    Устанавливает разрешения для file.cgi на «чтение, запись и выполнение владельцем» и «чтение и выполнение группой и всеми остальными».

    Chmod 666 file.txt

    Устанавливает разрешение file.txt на «чтение и запись всеми».

    Chmod a=rw file.txt

    Выполняет то же самое, что и вышеприведенная команда, используя символическую запись.

    Связанные команды

    chown - Изменить владельца файлов или каталогов.
    getfacl - Показать списки контроля доступа к файлам.
    ls - список содержимого каталога или каталогов.