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

Как открыть/создать файл из под другого пользователя?

Озадачился переносом своей библиотечки под линукс, но опыта не имею. Затык получился с правами доступа - нужно создать или открыть файл из под другого пользователя (креды известны). Под виндой делал LogonUser + ImpersonateLoggedOnUser + CreateFile. Как это правильно сделать под линукс? Буду признателен, если подкинете ссылки на статейки или литературу.
  • Вопрос задан
  • 2886 просмотров
Подписаться 1 Оценить 7 комментариев
Пригласить эксперта
Ответы на вопрос 5
CityCat4
@CityCat4
//COPY01 EXEC PGM=IEBGENER
Никак. Это противоречит идеологии линуха. Конфиги системы принадлежат руту. Точка. Никто кроме рута не должен их править. Точка. Если у программы могут быть пользовательские настройки, она должна создать свой локальный пользовательский конфиг, который будет читаться после системного. Никакая библиотека, запускаемая из-под пользователя не должнаписать в рутовое пространство - пользователь пишет только в домашку и /tmp. И уже тем более не должна делать это втихушку.
Все проблемы винды оттого, что однажды в угоду удобству сделали возможным писать кому угодно куда угодно. В линухе это не так. Это надо принять как данность, а не лепить костыли. Если это библиотечка для индивидуального личного пользования - тут конечно можете воротить все что угодно. Но если рассчитываете, что ею будет пользоваться кто-то еще - лучше следовать Linux-way
Ответ написан
Комментировать
saboteur_kiev
@saboteur_kiev Куратор тега Linux
software engineer
Создавать и открывать файлы из-под другого пользователя - некорректно.

Почему бы не добавить всех нужных пользователей в группу, и пользоваться групповыми правами?

Второй вариант - дать пользователю право на sudo, тогда он может от имени рута выполнять su (чтобы выполнить комнаду от другого пользователя), либо от имени рута выполнить команду chown (сменить владельца)

Третий вариант - настроить ssh ключи на локальной машине для пользователя, чтобы он мог выполнять команды через remsh
remsh user2@localhost
Ответ написан
Комментировать
urtow
@urtow
*nix, python, QA, bagpipe, folk music
Для временного поднятия прав есть sudo, но нужно понимать, что предполагаемое решение идет полностью в разрез с политикой доступа в Linux
Ответ написан
Комментировать
selivanov_pavel
@selivanov_pavel
Linux admin
Проще создать файл и дать нужному пользователю права на него. Если нужно вот прям именно создать из-под другого пользователя - man7.org/linux/man-pages/man2/setuid.2.html man7.org/linux/man-pages/man2/seteuid.2.html
Ответ написан
Комментировать
plin2s
@plin2s
IT, инженер
sudo -i -u
Ответ написан
Комментировать
Ваш ответ на вопрос

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

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