Поиск по сайту:

Учебник по команде Linux chmod для начинающих


На этой странице

  1. Основы Chmod
  2. Заключение

Бывают случаи, когда вы создаете, скажем, сценарий bash на своем компьютере с Linux. Но когда вы пытаетесь запустить его, вы получаете ошибку разрешения. Что вы делаете? Просто, если вы работаете в Ubuntu, щелкните правой кнопкой мыши значок файлов, перейдите на вкладку «Разрешения» и включите параметр «Разрешить выполнение файла как программы». Но что, если требуется сделать это изменение из командной строки?

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

Обратите внимание, что все примеры и инструкции, упомянутые в этом руководстве, были протестированы на Ubuntu 16.04LTS, и мы использовали версию chmod 8.25.

Основы чмода

Рассмотрим следующий пример команды ls:

Нас интересует первый столбец в выводе. Оставьте в стороне начальный - (который означает тип файла), остальные поля в столбце можно разбить на следующие: rw-, rw- и r--. Это разрешения, которые имеют владелец файла, группа, к которой принадлежит файл, и другие, когда дело доходит до этого файла.

Это означает, что владелец имеет права на чтение (r) и запись (w). Как и группа. Другие, однако, имеют права только на чтение файла. Обратите внимание, что предполагалось, что файл принадлежит текущему пользователю.

Теперь предположим, что требуется дать каждому право запускать этот файл. Вот как это можно сделать:

chmod +x script.sh

Вот разрешения сейчас:

Дополнительный x в разрешениях для владельца, группы и других означает, что теперь у всех есть доступ на выполнение для этого файла.

Однако, скорее всего, вы не захотите, чтобы у всех был доступ на выполнение к файлу. Что, если требование состоит в том, чтобы предоставить доступ к script.sh только владельцу/текущему пользователю.

Что ж, для этого первым шагом будет отнять у всех доступ к выполнению, что вы можете сделать с помощью следующей команды:

chmod -x script.sh

А затем предоставьте его явно владельцу:

chmod u+x script.sh

Как вы уже догадались, u+x говорит предоставить (+) владельцу/текущему пользователю (u) выполнить (x) доступ к файлу. Точно так же для группы вы можете использовать g, а для других — o.

Обратите внимание, что всякий раз, когда вы хотите предоставить/отменить общий набор разрешений для всех/от всех, вы можете использовать a вместо ugo. Я имею в виду, что это:

chmod ugo-x script.sh

можно заменить на это:

chmod a-x script.sh

Кроме того, помните, что если ни одно из этих значений (u, g, o и a) не указано явно, то также предполагается, что значение по умолчанию равно a.

Двигаясь дальше, если хотите, вы также можете просто скопировать разрешения, предоставленные, скажем, владельцу/текущему пользователю, и использовать их для группы или других. Для этого используйте знак =.

Например, чтобы скопировать права владельца/пользователя в группу, используйте следующую команду:

chmod g=u script.sh

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

chmod --reference=[source-file] [destination file]

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

Двигаясь дальше, есть также числовое представление (также известное как восьмеричное представление), с помощью которого вы можете указать chmod изменить разрешения. В этом режиме вы играете с тремя числами: 4, 2 и 1. В то время как 4 предназначено для чтения, два других предназначены для записи и выполнения соответственно.

Например, рассмотрим следующий пример:

Теперь предположим, что задача состоит в том, чтобы добавить разрешение на выполнение для владельца/пользователя, удалить разрешение на запись, но добавить разрешение на выполнение для группы и удалить все разрешения для других. Это можно сделать следующим образом:

chmod 750 script.sh

В приведенной выше команде 7 для пользователя, что является результатом 4+2+1, поскольку требованием для пользователя является наличие всех разрешений. Точно так же 5 для группы, что является результатом 4+0+1, поскольку требование состоит в том, чтобы предоставить группе только права на чтение и выполнение. Наконец, 0 для других, что является результатом 0+0+0, поскольку требование состоит в том, чтобы отозвать все разрешения у других.

Для тех, кто имеет дело с символическими ссылками, вот что стоит знать:

chmod never changes the permissions of symbolic links; the chmod system call cannot change their permissions.  This is not a problem since  the
permissions  of  symbolic links are never used.  However, for each symbolic link listed on the command line, chmod changes the permissions of
the pointed-to file.  In contrast, chmod ignores symbolic links encountered during recursive directory traversals.

Заключение

Команда chmod может быть не той, которая вам может понадобиться ежедневно, но это чрезвычайно полезный/важный инструмент, о котором вы должны знать. Здесь, в этом уроке, мы обсудили большинство основ, связанных с этим инструментом, и рассмотренные нами примеры направлены на то, чтобы прояснить эти основы.

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