# Кастомный доступ у файла в Linux

Сравнение ACL и смены группы в Linux для доступа к файлу другим пользователем на чтение и запись

- Адрес: https://romuskras.net/blog/kastomnyy-dostup-u-fayla-v-linux
- Опубликовано: 2026-01-31
- Обновлено: 2026-04-12
- Автор: Romus
- Категории: Linux
- Теги: ACL, Linux, chown, linux, кастомные права доступа, файловые разрешения, безопасность данных, веб-администрирование
- Чтение: 3 мин чтения

![Кастомный доступ у файла в Linux](https://romuskras.net/uploads/posts/2026/697e6e59299bf_1769893465.jpg)

---

## Задача

Задача была такова: есть скрипт, который работает на Python и вообще под другим пользователем, но на той же машине. Есть сайт, который хочется превратить в мультифункциональное устройство. На сайте и то, и это, и админка для того, и админка для другого. Вот тут и понадобилось иметь возможность просматривать в красивой, доступной форме конфигурационные файлы скрипта (JSON и аналогичный файл окружения). Эти файлы не содержат чувствительной информации, похитив которую можно было бы сделать плохие вещи, навредив напрямую нам, или потратив наши средства, хотя об этом позже.

Если вывести содержимое конфигов в таблично-списочном виде не составило труда, то при попытке редактирования файла из-под другого пользователя сразу поймали ошибку прав. Можно было бы из той же части скрипта, его основы, собрать модуль, который бы позволял обмениваться с помощью любого доступного протокола обмениваться информацией и перезаписывать по запросу данные конфига, просматривать его. Это один из самых правильных вариантов. Но это сложно, куда дольше, чем способ, описанный далее. Тут нужно писать код, его поддерживать (хоть и крайне редко что-то менять). Вот и всплыло очевидное решение - воспользоваться либо ACL, либо сменить группу файла.

## Первый вариант - ACL

Начнем с ACL, а также почему от него отказались. Этот способ позволяет выдавать права конкретному пользователю (скрипт А - пользователь 1, скрипит 2 - пользователь 2, у них файлы в своем владении). При этом нам не нужно менять текущего владельца, а также менять группы файла (а там это одно и то же). Это, в принципе, идеально, если приложение от имени scriptA должно оставаться полноправным хозяином. Тут мы легко даем права на чтение и запись:

```bash
sudo setfacl -m u:www-data:rw имя_файла
```

И если это папка, нужно применить рекурсивный вариант (флаг X (заглавная буква) дает право на вход в папки, но не делает обычные файлы исполняемыми):

```bash
sudo setfacl -R -m u:www-data:rwX имя_папки
```

Проверяем результат с командой:

```bash
getfacl имя_файла
```

После чего вы увидите отдельную строчку:

```
user:www-data:rw-
```

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

## Второй вариант - смена группы

Если по какой-то причине первый вариант нам не подходит, или хочется использовать то, что нам давно знакомо - можно сменить группу файла на scriptB и разрешить группе запись, при этом владелец останется scriptA.

Меняем группу файла (двоеточие перед именем обязательно — оно указывает, что меняем только группу):

```bash
sudo chown :www-data имя_файла
```

Даём группе права на запись:

```bash
sudo chmod g+rw имя_файла
```

**Результат:**

- Владелец: scriptA (полные права)
- Группа: scriptB (чтение и запись)
- Остальные: (как было).

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