@WSGlebKavash

Повышение прав для текущего пользователя в *nix-подобных системах?

UAC в Windows повышает права для текущего пользователя. То есть, если пользователь состоит в группе Администраторы, то после нажатия кнопки Да имя и ID пользователя сохранятся, но процесс получит права администратора.
Команда sudo в Linux запускает процесс от root, при этом меняются ID, имя пользователя, домашняя папка и в диспетчере задач процесс отображается как запущенный от root.
Как повышать права, не меняя пользователя?
  • Вопрос задан
  • 135 просмотров
Решения вопроса 1
@pfg21
ex-турист
вообще должно быть отличия в эффективных идентификаторах EUID/UID EGID/GID но чегойто я в них не разобрался.

смотря что нужно. мне хватает того, что sudo использует переменные пользователя, хотя програмка работает от рута.
pfg@srv:~$ sudo echo $USER $UID $PWD $HOME
pfg 1000 /home/pfg /home/pfg

плюс есть переменные которые создает sudo смотри SUDO_****
ну и поизучай вывод sudo env sudo -s set
Ответ написан
Пригласить эксперта
Ответы на вопрос 2
Adamos
@Adamos
Так это правильно, потому что sudo - это для администрирования.
Если вы под ним пытаетесь работать, вам будет неудобно - но это не потому, что с sudo что-то не так, а потому, что вы стали делать через задницу, как в Винде.
Вам бы расписать, что именно делается и для чего в этом процессе повышение прав. Могут подсказать более естественный путь.
Ответ написан
@Akela_wolf
Extreme Programmer
Непонятно какую конкретную задачу вы решаете, вопрос довольно абстрактный.
У любого процесса есть ruid/rgid - это идентификаторы пользователя и группы, который запустил процесс и есть euid/egid - это эффективные пользователь и группа, которые определяют права доступа. Собственно sudo меняет именно euid/egid.

Нужно понимать, что "права доступа" в *nix привязаны к uid/gid (пользователю и группе) и возможности выдать какие-то абстрактные "расширенные права" нет. Соответственно права процесса определяются его euid/egid (в простом случае - uid/gid запустившего процесс пользователя)

Вы можете привязать некие "расширенные права" к привелегированной группе, в которой ваш пользователь не состоит и предоставить ему право запускать некоторые программы в таком режиме либо с помощью SGID флага на самой программе, либо с помощью команды sudo -g

Если же вы хотите чтобы и пользователь и его группа не менялись - то боюсь это невозможно.
Ответ написан
Комментировать
Ваш ответ на вопрос

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

Войти через центр авторизации
Похожие вопросы