Веб-версияОткрыть в Telegram

ПостВ прошлый раз был пример с понижением привелегий процесса. Проблема в том, что обратно поднять привилегии нельзя.

13 июля 2026
P
Python Заметки
Ссылка
нажмите — покажем
В прошлый раз был пример с понижением привелегий процесса. Проблема в том, что обратно поднять привилегии нельзя. Чтобы не потерять уровень доступа текущего процесса, нужно выполнять понижение в дочернем процессе. Для этого можно использовать os.fork(). # example.py from pathlib import Path import os import sys import pwd def example(username): # получаем pwd юзера по имени try: pw_record = pwd.getpwnam(username) except KeyError: raise Exception(f"User {username} not found") return # создаем форк процесса pid = os.fork() if pid == 0: # если мы в дочернем процессе - сбрасываем привилегии os.setgid(pw_record.pw_gid) os.setuid(pw_record.pw_uid) # создаем файл от имени другого юзера Path('user-file.txt').touch() sys.exit(0) else: # родительский процесс, создаем файл от имени исходного юзера Path('root-file.txt').touch() os.waitpid(pid, 0) example('paul') # проверяем владельца файлов print('user-file.txt', Path('user-file.txt').owner()) print('root-file.txt', Path('root-file.txt').owner()) Теперь запустите скрипт от root. У файлов будут разные владельцы. ~$ sudo python example.py user-file.txt paul root-file.txt root PS. В дочернем процессе os.fork() вернёт 0, чтобы можно было понять в каком процессе продолжает исполняться код. В родительском это будет реальный PID. Это написано в документации. # tricks
4 · 666 ·

Рядом в ленте

PPython ЗаметкиНедавно я реализовал Multi Tenancy систему на FastAPI + SQLAlchemy и пересобрал её в небольшой демо проект. Ключевые особенности: ▫️ Основной всего является сущPPython ЗаметкиМодуль pwd может использоваться для считывания информации о пользователях из базы данных паролей Unix (обычно /etc/passwd ). Получить объект текущего юзера можн
это сообщение
PPython ЗаметкиУ меня основная ОС это Linux. Но нередко требуется делать сборку клиента под Windows. Собираю обычно через Pynstaller/Nuitka. И вот этапы борьбы поиска удобногоPPython ЗаметкиНе так давно столкнулся с API который в ответе с ошибкой присылал только статус-код. Без подробностей и текста ошибки. Неудобно когда нет явного описания что пр

Открытая публичная лента из поискового индекса ChatCrawler — «Google по публичному Telegram»; обновляется по мере обхода площадки. Время — UTC.

Только публичный контент, официальный API Telegram. О проекте · Вопросы · Чего мы не делаем · Убрать страницу из выдачи · Каталог · Поиск · Как мы считаем