Задать вопрос
@MechanicZelenyy

Как сделать так что бы у приложения в Linux/Windows был доступ к файлам, а у пользователя нет?

Разрабатывается приложение к которого предполагается следующий функционал:
Есть низкопривилегированный пользователь, который запускает приложение.
При запуске приложения открывается сессия и в рамках работы пользователя в этой сессии создаются данные, которые сессия умеет хранить локально где-то на диске. Где можно почитать как настроить права доступа приложения и пользователя так чтобы приложение имело доступ на запись/чтение этих сохранённых данных, а пользователь нет?

UPD:

Приложение: программа для лабораторных работ, типичные аналогичные программы хранят данные только в памяти и могут их сохранять в любое доступное пользователю место, как результат рабочая машина превращается в помойку, потому что студенты работают из под одного пользователя, пересохраняются на каждое измерение (а моргание света вообще может быть sad story). Есть желание все это цивилизовать, сделать какой то механизм для автосохранения данных и соответственно недоступное пользователю хранилище этих данных ( в условиях автономности работы от сети и без всяких ИБП). Недоступное чтоб студенты не тырили и не портили чужие данные.

Рассматриваются варианты не только через права доступа,но и через экраны типа apparmor
  • Вопрос задан
  • 377 просмотров
Подписаться 1 Простой Комментировать
Решения вопроса 3
Rsa97
@Rsa97
Для правильного вопроса надо знать половину ответа
Служба/демон, работающая от пользователя, имеющего право писать/читать нужные файлы, и служащая источником данных для основного приложения.
Ответ написан
1. Создаёшь нового "привилегированного" пользователя
2. Выдаёшь этому пользователю права на чтение и запись в определённую директорию
3. У "непривилегированного" пользователя забираешь права на чтение и запись в эту директорию
4. Запускаешь программу от имени "привилегированного" пользователя.
5. Чтобы непривилегированный пользователь мог работать с программой - разделяешь её на две части.
Первая часть - служба/демон, который работает в фоне. Он будет запускаться системой автоматически от имени привилегированного пользователя.
Вторая часть - клиент, который будет обращаться к фоновой службе. Клиент будет запускаться непривилегированным пользователем тогда, когда ему это нужно.

Больше способов нет.
Ответ написан
@pfg21
ex-турист
вариант2: программа запускается под другим пользователем, которому доступны права, не доступные для запускающего пользователя.
смотри биты setuid setgid для исполняемого файла. такой исполняемый файл система запускает с uid/gid пользователя, прописанного в свойствах файла.
используется, к примеру, в sudo и многих других для того, чтобы sudo запускался с правами root в независимости от запускающего пользователя.

путь опасный, требующий большой продуманности ограничений функциональности проги, иначе будет дырень в защите...
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
Adamos
@Adamos
Нелепая постановка задачи. Приложение запускается от имени пользователя и имеет его права - это базовая логика системы, выдумывать тут способ взяться за ухо через коленку просто глупо.
Стоит вернуться к вопросу, зачем это делается, и решать проблему более естественным способом.
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы