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

«Какая команда в Linux используется для изменения прав доступа к файлу или директории?» — вопрос из категории DevOps, который задают на 26% собеседований Node.js Разработчик. Ниже — развёрнутый ответ с разбором ключевых моментов.

Ответ

Для изменения прав доступа (permissions) в Linux используется команда chmod (от change mode).

Базовый синтаксис:

chmod [OPTIONS] MODE FILE...

Способы задания прав (MODE):

  1. Символьный (буквенный) формат: Удобен для относительного изменения.

    # Дать владельцу право на выполнение
    chmod u+x script.sh
    
    # Забрать право на запись у группы и остальных
    chmod go-w document.txt
    
    # Установить права: владелец (чтение/запись), группа (чтение), остальные (ничего)
    chmod u=rw,g=r,o= private_file.conf
    • u (user/owner), g (group), o (others), a (all).
    • + (добавить), - (убрать), = (установить точно).
    • r (read), w (write), x (execute).
  2. Восьмеричный (цифровой) формат: Чаще используется в скриптах для точной установки.

    # 755: владелец (rwx), группа (r-x), остальные (r-x)
    chmod 755 my_script.js
    
    # 640: владелец (rw-), группа (r--), остальные (---)
    chmod 640 config.env
    • Каждая цифра: сумма прав (4=r, 2=w, 1=x).
    • Первая цифра — владелец, вторая — группа, третья — остальные.

Полезные опции в контексте разработки на Node.js:

  • -R или --recursive: Рекурсивно изменить права для директории и всего её содержимого.
    chmod -R 755 ./dist  # После сборки проекта даём права на выполнение
  • -v (verbose): Выводить информацию о каждом изменённом файле.

Пример из практики: Перед запуском Node.js-приложения, особенно если в нём есть CLI-скрипты (указанные в bin файле package.json), нужно убедиться, что файл имеет право на выполнение (x).

# Делаем файл скрипта исполняемым
chmod +x ./bin/my-cli-tool

# Устанавливаем безопасные права для файла с секретами (только чтение для владельца)
chmod 600 .env.production