wakadakawaka 0b56f3c422 add
2025-05-07 21:20:36 +05:00

7.2 KiB
Raw Blame History

title, slug
title slug
Права доступа в Linux и команда chmod linux-управление-правами-доступа/права-доступа-в-linux-и-команда-chmod

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

Формат команды и аргументы

chmod [опции] права файл

Например:

chmod 755 script.sh

Подробности об аргументах chmod

Команда chmod принимает различные аргументы:

Общий синтаксис

chmod [опции] [символьные или числовые права] файл(ы)

Часто используемые опции:

Опция Описание
-R Рекурсивно изменить права во всех подкаталогах и файлах
-v Подробный вывод — показывает, какие изменения были сделаны
-c Показывает изменения только для тех файлов, чьи права действительно были изменены
--reference=ФАЙЛ Установить права доступа, как у другого файла

Примеры:

chmod -R 755 /var/www           # Рекурсивно задать права
chmod -v 644 file.txt           # Показать результат изменения прав
chmod --reference=example.txt config.txt  # Установить такие же права, как у example.txt

Чтение прав доступа

Команда ls -l показывает права доступа к файлам:

-rwxr-xr-- 1 user group 1234 Май 7 12:00 script.sh

Разбор:

  • Первая буква - — тип (файл, каталог и т.д.)

  • Далее три блока по 3 символа:

    • rwx — для владельца (user)
    • r-x — для группы (group)
    • r-- — для остальных (others)

Таблица прав и чисел

Каждое разрешение соответствует числу:

Символы Значение Описание
r 4 чтение (read)
w 2 запись (write)
x 1 исполнение (execute)
- 0 отсутствие разрешения

Комбинации:

Права Цифра Обозначение
rwx 7 4 + 2 + 1
rw- 6 4 + 2
r-x 5 4 + 1
r-- 4 4
-wx 3 2 + 1
-w- 2 2
--x 1 1
--- 0 0

Примеры chmod

chmod 755 file     # Владелец: rwx, группа: r-x, остальные: r-x
chmod 644 file     # Владелец: rw-, группа: r--, остальные: r--
chmod 700 file     # Владелец: rwx, остальные: ---
chmod 600 secret   # Только владелец может читать и писать
chmod +x script.sh # Добавить право на выполнение для всех
chmod -x script.sh # Убрать право на выполнение для всех

Работа с каталогами

Для каталогов флаг x означает "доступ внутрь каталога". Без него пользователь не может зайти в папку, даже если у него есть r (чтение).

Пример:

chmod 755 mydir    # Владелец: полный доступ, другие могут просматривать
chmod 700 mydir    # Только владелец может заходить в каталог

Рекурсивное изменение прав

Чтобы изменить права доступа во всех подкаталогах и файлах, используется флаг -R:

chmod -R 755 /путь/к/каталогу

Это установит одинаковые права на все каталоги и файлы внутри указанного пути.

Осторожно с 777

chmod -R 777 /var/www  # Очень небезопасно! Все получат полный доступ

Рекомендованный способ — разделять файлы и каталоги:

# Установить права 755 на все каталоги
find /путь -type d -exec chmod 755 {} \;

# Установить права 644 на все файлы
find /путь -type f -exec chmod 644 {} \;

Пояснение к аргументам:

  • find — команда поиска файлов и каталогов
  • /путь — начальный путь, где выполняется поиск
  • -type f — искать только обычные файлы (-type d — каталоги)
  • -exec — выполнить указанную команду над каждым найденным элементом
  • chmod 644 {} — применить chmod к текущему найденному файлу (подставляется вместо {})
  • \; — завершает команду -exec (обязательно экранировать точку с запятой в bash)

Это особенно полезно для веб-серверов и проектов, где важно разграничивать доступ к файлам и каталогам.

## Изменение прав по символам

Вместо чисел можно использовать буквенную форму:

```bash
chmod u+x file     # Добавить исполнение владельцу
chmod go-w file    # Убрать запись для группы и остальных
chmod a+r file     # Добавить чтение всем (u+g+o)

Где:

  • u — владелец (user)
  • g — группа (group)
  • o — остальные (others)
  • a — все (all)

Проверка прав

ls -l filename      # Просмотр прав
stat filename       # Подробная информация о файле

Заключение

Команда chmod — важный инструмент для управления доступом к файлам и каталогам в Linux. Понимание цифрового и символьного форматов помогает эффективно настраивать безопасность системы.