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

Ответ

Для изменения прав доступа (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

Ответ 18+ 🔞

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

chmod — это типа волшебная палочка, чтобы сказать системе: «Эй, сука, кто тут что может делать с моими файлами?». Расшифровывается как change mode, если кому интересно.

Как эта штука выглядит в жизни:

chmod [OPTIONS] MODE FILE...

А вот как права задавать — тут два главных подхода, и оба надо знать, иначе будешь выглядеть как полный чайник.

  1. Буквами (символьный формат). Удобно, когда нужно чутка подкрутить, не вспоминая цифры.

    # Хозяину файла разрешаем запускать
    chmod u+x script.sh
    
    # У группы и всех остальных отжимаем право что-то там писать
    chmod go-w document.txt
    
    # Жёстко ставим: хозяин (читает/пишет), группа (только читает), остальные (ни хуя)
    chmod u=rw,g=r,o= private_file.conf
    • u — это ты, владелец (user). g — твоя компания (group). o — все левые (others). a — вообще все (all).
    • + — добавить право, - — отобрать, = — поставить именно так и никак иначе.
    • r — читать, w — писать, x — выполнять. Запомни, ёпта!
  2. Цифрами (восьмеричный формат). Любимый формат для скриптов, потому что чётко и понятно. Выглядит как магия, но на деле просто арифметика.

    # 755: хозяин (всё можно), группа (читать и запускать), остальные (читать и запускать)
    chmod 755 my_script.js
    
    # 640: хозяин (читает/пишет), группа (только читает), остальные (идут на хуй)
    chmod 640 config.env
    • Секрет в цифрах: 4 — читать, 2 — писать, 1 — запускать. Складываешь что нужно — получаешь цифру.
    • Первая цифра — для хозяина, вторая — для группы, третья — для всех подряд.

А теперь про опции, без которых никуда, особенно если ты Node.js-разработчик:

  • -R — это рекурсивно, то есть «применить ко всему, что внутри папки, включая вложенные папки». Без этого каждый файл по отдельности править — терпения ноль, ебать.
    chmod -R 755 ./dist  # Собрал проект — дай права на запуск всему, что в папке dist
  • -v — многословный режим. Команда будет болтать, что она сделала с каждым файлом. Иногда полезно, чтобы не охуеть от неожиданностей.

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

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

# А для файла с секретами (.env) ставим жёсткие права: только ты можешь читать, и всё.
chmod 600 .env.production

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