Иногда скрипту нужны root (Linux/macOS) или admin (Windows) права. Если их нет — лучше сразу завершиться, а не падать позже на системных операциях.
🐧 Linux / macOS — проверка на root
В Unix-системах всё просто: UID = 0 → это root
import os
def is_root() -> bool:
"""True, если скрипт запущен с root-правами (Linux/macOS)."""
if os.name == "posix":
return os.getuid() == 0
return False
📌 Использует встроенную функцию
os.getuid().🪟 Windows — проверка на администратора
В Windows нет UID 0, поэтому используем вызов системной функции через
ctypes:
import ctypes
import os
def is_admin() -> bool:
"""True, если скрипт запущен с правами администратора (Windows)."""
if os.name == "nt":
return ctypes.windll.shell32.IsUserAnAdmin() != 0
return False
📌 Вызывает Windows API:
IsUserAnAdmin.🌍 Универсальная функция
Если нужен один метод под все ОС:
import os
import ctypes
def has_elevated_privileges() -> bool:
if os.name == "posix":
return os.getuid() == 0
elif os.name == "nt":
return ctypes.windll.shell32.IsUserAnAdmin() != 0
return False
⚠️ В продакшене часто делают так:
if not has_elevated_privileges():
print("Требуются права администратора/root")
exit(1)
Просто, быстро и спасает от странных ошибок дальше по коду.
📍 Навигация: Вакансии • Задачи • Собесы
🐸 Библиотека питониста
#буст