69 lines
1.8 KiB
Python
69 lines
1.8 KiB
Python
#
|
||
# Erminig - Initialisation des utilisateurs et répertoires
|
||
# Copyright (C) 2025 L0m1g
|
||
# Sous licence DOUARN - Voir le fichier LICENCE pour les détails
|
||
#
|
||
# Ce fichier fait partie du projet Erminig.
|
||
# Libre comme l’air, stable comme un menhir, et salé comme le beurre.
|
||
#
|
||
|
||
import os
|
||
import subprocess
|
||
import sys
|
||
from pathlib import Path
|
||
from erminig.core.security import check_root, check_user_exists, run_as_user
|
||
from erminig.core.config import Config
|
||
from erminig.models.db import init_db
|
||
|
||
PAK_USER = Config.PAK_USER
|
||
|
||
|
||
def create_user_pak():
|
||
"""Crée l'utilisateur pak si nécessaire."""
|
||
if check_user_exists(PAK_USER):
|
||
print(f"[INIT] Utilisateur '{PAK_USER}' existe déjà.")
|
||
return
|
||
|
||
print(f"[INIT] Création de l'utilisateur '{PAK_USER}'...")
|
||
subprocess.run(
|
||
[
|
||
"useradd",
|
||
"-r",
|
||
"-d",
|
||
str(Config.LIB_DIR),
|
||
"-s",
|
||
"/usr/sbin/nologin",
|
||
PAK_USER,
|
||
],
|
||
check=True,
|
||
)
|
||
print(f"[INIT] Utilisateur '{PAK_USER}' créé.")
|
||
|
||
|
||
def setup_directories():
|
||
"""Crée les dossiers nécessaires et assigne les permissions."""
|
||
for directory in [Config.LIB_DIR, Config.CACHE_DIR, Config.BASE_DIR]:
|
||
if not directory.exists():
|
||
print(f"[INIT] Création du dossier {directory}...")
|
||
directory.mkdir(parents=True, exist_ok=True)
|
||
|
||
print(f"[INIT] Attribution de {directory} à '{PAK_USER}'...")
|
||
subprocess.run(
|
||
["chown", "-R", f"{PAK_USER}:{PAK_USER}", str(directory)], check=True
|
||
)
|
||
|
||
|
||
def main():
|
||
check_root()
|
||
|
||
create_user_pak()
|
||
setup_directories()
|
||
|
||
print("[INIT] Initialisation de la base de données...")
|
||
init_db()
|
||
|
||
print("[INIT] Environnement Erminig initialisé avec succès.")
|
||
|
||
|
||
if __name__ == "__main__":
|
||
main()
|