Повысить привилегии запущенного процесса - PullRequest
4 голосов
/ 05 февраля 2020

Есть ли способ для одного процесса (например, исполняемого файла или сценария bash) повысить привилегии другого, запущенного процесса? Например, если у меня есть программа, работающая от имени обычного пользователя user, возможно ли другому процессу, выполняющемуся как root, повысить привилегии первого, как если бы он был запущен как root первоначально?

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

Если посмотреть дальше, то Похоже, что нет способа сделать это без установки модуля ядра; по сути, руткит. То, что я хочу, демонстрируется здесь .

Ответы [ 3 ]

4 голосов
/ 05 февраля 2020

Нет. Единственный способ повысить привилегии процесса - это exec с помощью двоичного файла setuid (например, /usr/bin/sudo); вы не можете сделать это с уже запущенным процессом.

Однако вы можете попросить sudo скопировать файл во временный путь, запустить редактор с собственными привилегиями во временном пути, а затем скопировать результат возвращается на место как root:

sudo -e filename
4 голосов
/ 05 февраля 2020

Нет, эти свойства процесса нельзя изменить после его запуска.

0 голосов
/ 08 февраля 2020

Вы можете запустить новый процесс, используя sudo, но запуск нового экземпляра с более высокими разрешениями всегда приведет к созданию нового процесса. Невозможно предоставить дополнительные разрешения для уже запущенного процесса.

...