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

176 lines
7.2 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

---
title: Права доступа в Linux и команда chmod
slug: linux-управление-правами-доступа/права-доступа-в-linux-и-команда-chmod
---
Команда `chmod` используется в Linux и других Unix-подобных системах для изменения прав доступа к файлам и каталогам.
## Формат команды и аргументы
```bash
chmod [опции] права файл
```
Например:
```bash
chmod 755 script.sh
```
## Подробности об аргументах `chmod`
Команда `chmod` принимает различные аргументы:
### Общий синтаксис
```bash
chmod [опции] [символьные или числовые права] файл(ы)
```
### Часто используемые опции:
| Опция | Описание |
| ------------------ | --------------------------------------------------------------------------------- |
| `-R` | Рекурсивно изменить права во всех подкаталогах и файлах |
| `-v` | Подробный вывод — показывает, какие изменения были сделаны |
| `-c` | Показывает изменения только для тех файлов, чьи права действительно были изменены |
| `--reference=ФАЙЛ` | Установить права доступа, как у другого файла |
Примеры:
```bash
chmod -R 755 /var/www # Рекурсивно задать права
chmod -v 644 file.txt # Показать результат изменения прав
chmod --reference=example.txt config.txt # Установить такие же права, как у example.txt
```
## Чтение прав доступа
Команда `ls -l` показывает права доступа к файлам:
```bash
-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
```bash
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` (чтение).
Пример:
```bash
chmod 755 mydir # Владелец: полный доступ, другие могут просматривать
chmod 700 mydir # Только владелец может заходить в каталог
```
## Рекурсивное изменение прав
Чтобы изменить права доступа во всех подкаталогах и файлах, используется флаг `-R`:
```bash
chmod -R 755 /путь/к/каталогу
```
Это установит одинаковые права на все каталоги и файлы внутри указанного пути.
### Осторожно с 777
```bash
chmod -R 777 /var/www # Очень небезопасно! Все получат полный доступ
```
### Рекомендованный способ — разделять файлы и каталоги:
```bash
# Установить права 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)
## Проверка прав
```bash
ls -l filename # Просмотр прав
stat filename # Подробная информация о файле
```
## Заключение
Команда `chmod` — важный инструмент для управления доступом к файлам и каталогам в Linux. Понимание цифрового и символьного форматов помогает эффективно настраивать безопасность системы.