Главная >> Команды >> Команда chmod Linux

Команда chmod Linux

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

Эти права применяются для каждого файла, а поскольку все в системе Linux, даже устройства, считаются файлами, то, получается что эти права применимы ко всему. Мы более подробно рассматривали как работают права доступа к файлам Linux в отдельной статье, а в этой, я хочу остановиться на команде chmod, которая используется для установки прав.


Содержание статьи

Команда chmod Linux

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

$ chmod опции права /путь/к/файлу

Сначала рассмотрим какими бывают права доступа linux и как они устанавливаются. Пред этим рекомендую прочитать статью про права, ссылка на которую есть выше. Есть три основных вида прав:

  • r - чтение;
  • w - запись;
  • x - выполнение;
  • s - выполнение  от имени суперпользователя (дополнительный);

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

  • u - владелец файла;
  • g - группа файла;
  • o - все остальные пользователи;

Синтаксис настройки прав такой:

группа_пользователейдействиевид_прав

В качестве действий могут использоваться знаки "+" - включить или "-" - отключить. Рассмотрим несколько примеров:

  • u+x - разрешить выполнение для владельца;
  • ugo+x - разрешить выполнение для всех;
  • ug+w - разрешить запись для владельца и группы;
  • o-x - запретить выполнение для остальных пользователей;
  • ugo+rwx - разрешить все для всех;

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

  • 0 - никаких прав;
  • 1 - только выполнение;
  • 2 - только запись;
  • 3 - выполнение и запись;
  • 4 -  только чтение;
  • 5 - чтение и выполнение;
  • 6 - чтение и запись;
  • 7 - чтение запись и выполнение.

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

  • 744 - разрешить все для владельца, а остальным только чтение;
  • 755 - все для владельца, остальным только чтение и выполнение;
  • 764 - все для владельца, чтение и запись для группы, и только чтение для остальных;
  • 777 - всем разрешено все.

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

  • -c - выводить информацию обо всех изменениях;
  • -f - не выводить сообщения об ошибках;
  • -v - выводить максимум информации;
  • --preserve-root - не выполнять рекурсивные операции для корня "/";
  • --reference - взять маску прав из указанного файла;
  • -R - включить поддержку рекурсии;
  • --version - вывести версию утилиты;

Теперь, когда вы знаете опции и как настраиваются права доступа chmod, давайте рассмотрим несколько примеров как работает команда chmod linux.

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

Я не буду приводить много примеров, так как там и так все более-менее понятно после пояснения правил создания выражений установки прав. Сначала самый частый случай - разрешить выполнения скрипта владельцу:

chmod u+x file

Или можно воспользоваться цифровой записью:

chmod 766 file
ls - l file

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

chmod u-x file

И снова проверяем:

ls -l file

Дальше разрешим только чтение всем, кроме владельца:

chmod 744 file
ls -l file

Или отберем все права:

chmod ugo-rwx file

Файлы с правами 000 недоступны никаким пользователям, кроме суперпользователя и владельца. Вернем права обратно:

chmod 755 file
ls -l file

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

chmod -R ug+rw dir
ls -l dir/

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

chmod -Rv ug+rw dir

Выводы

В этой небольшой статье была рассмотрена команда chmod linux. Она очень часто используется наряду с такими командами, как chown и umask для управления правами. Надеюсь, эта информация была полезной для вас. Если у вас остались вопросы, спрашивайте в комментариях!

Реклама
Посмотреть детали

Proton Drive — это облачное хранилище со сквозным шифрованием от компании, которая создала Proton Mail, которое может стать хорошей заменой Google Диску. Все файлы шифруются на вашем устройстве, поэтому они недоступны даже для самой компании Proton. Вы получаете синхронизацию между устройствами, общий доступ к файлам, автоматическое резервное копирование фото и удобные приложения для всех платформ, но с гарантией, что ваши данные останутся исключительно вашими и никто не будет тренировать на них AI. В бесплатной версии доступно 5 ГБ места на диске. Посмотреть детали

21 комментарий к “Команда chmod Linux”

  1. Здравствуйте, подскажите пожалуйста. Возможно ли настроить на одну папку разных пользователей с разными правами для удалённого доступа через SAMBA?? Например, у меня стоит задача, чтобы группа пользователей имела лишь права для чтения, а один пользователь имел полные права. На группу права прописать смог, но добавил их путем редактирование папки через графический интерфейс, а для одного пользователя сделать полные права смог лишь поменяв владельца на него, при том более никто зайти не сможет. Консольно, я так и не понял, как возможно прописать Хотелось бы, чтобы и сам, как админ мог залезть удалённо, а не напрямую через права root сервера. Что нужно для этого сделать?

    Права, правда пописал как полные:
    [DESIGN]
    comment = All users upload
    browsable = yes
    public = yes
    path = /archive1/DESIGN
    create mode = 0777
    directory mask = 0777
    available = yes
    writable = yes

    Можете помочь меня поправить, что делаю не так и что мне стоит изменить для грамотной настройки? Уж прошу прощения, новичок ещё в этом деле.

    Ответить
    • Попробуй так.
      В smb.conf (зависит от дистра например /etc/samba/smb.conf)

      [DESIGN]
      writable = yes
      # имеют права на чтение
      read list = user_name1
      #имеют права на запись
      write list = user_name2 user_name3
      #имеют право подключаться
      valid users = user_name1 user_name2
      user_name3
      #запрет всех кроме valid users
      guest ok = no

      Ответить
  2. Попробуй так.
    В smb.conf (зависит от дистра например /etc/sambs/smb.conf)

    [DESIGN]
    writable = yes
    # имеют права на чтение
    read list = user_name1
    #имеют права на забись
    write list = user_name2 user_name3
    #имеют право подключаться
    valid users = user_name1 user_name2
    user_name3
    #запрет всех кроме valid users
    guest ok = no

    Ответить
  3. цифры запомнить проще так:
    1 - выполнение;
    2 - запись;
    4 - чтение;

    остальные - производные от их сумм
    3 - (1+2) выполнение + запись;
    5 - (1+4) выполнение + чтение;
    6 - (2+4) запись + чтение ;
    7 - (1+2+4) выполнение + запись + чтение .

    Ответить
  4. Подскажите, пожалуйста, как вернуть стандартные настройки, у меня пока root, стоит, а то я не могу скачать файлы с сервера, думаю, что своими руками накосячил

    Ответить
  5. непонятна фраза:
    "Недостаток цифровой записи в том, что вы не можете модифицировать уже существующие права доступа linux".
    а чем вы занимались показывая примеры? просьба развернуть утверждение

    Ответить
    • Модифицировать = «изменить» по-русски.
      То есть числом задать заново без учёта прежних прав доступа можно, а изменить или дополнить — нельзя.
      Например, на одних файлах было разрешено чтение и запись, а на других только чтение.
      Если заново добавить права на исполнение числом, то придётся задать и на чтение и запись, и прежние значения заменятся.
      А если буквой, то только добавится право на исполнение, а чтение и запись останутся как было, на разных файлах по-разному.

      Ответить
  6. Но работает же иногда? Т.е. на какой-то бубунте это не обязательно, но мы ведь не просто так пишем вначале файла #!/usr/bin/python?

    Ответить
  7. Ubuntu был увлечён подобно юноше девицей, таки, по ложной причине симпатии, --
    Убунту на языке зулу означает "человечность". Оказалось только в номинации,
    как коммерческий ход: маркетинг всё, жажда свободы ничто, ты не ты когда голоден.

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

    Отключили запрещение гостевого режима, -- всякая попытка запустить
    ОС с запретом гостевого режима приводит к краху ОС.

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

    Ответить
  8. "Также есть три категории пользователей, для которых вы можете установить эти права на файл".
    Фактически категорий четыре, ведь еще есть a (all) то есть пользователи входящие в любую из групп ugo. Хотя это тоже самое может быть проще иногда писать a вместо ugo.

    Ответить
  9. Здравствуйте. Подскажите пожалуйста, есть ли вариант, чтобы записать команду для смены прав доступа одной строкой (буквами)?
    Например: rw-r--r-- Тут пользователю надо запретить запись, группе разрешить исполнение, а остальным разрешить запись.
    Буду очень признателен!

    Ответить
  10. полагаю - sudo chmod 456 /Dir/File1

    1 - только выполнение;
    2 - только запись;
    3 - выполнение и запись;
    4 - только чтение;
    5 - чтение и выполнение;
    6 - чтение и запись;
    7 - чтение запись и выполнение.

    Ответить

Оставьте комментарий