Skip to content

Commit

Permalink
Issue #36: running django code as www-data user
Browse files Browse the repository at this point in the history
  • Loading branch information
rgaudin committed Jan 4, 2024
1 parent 4690ac3 commit 53f40ab
Showing 1 changed file with 12 additions and 4 deletions.
16 changes: 12 additions & 4 deletions edupi/entrypoint.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,17 @@
#!/usr/local/bin/python3

import grp
import os
import pathlib
import pwd
import shutil
import subprocess
import sys
from typing import Union

SKIP_CHOWN = bool(os.getenv("NO_CHOWN_DATA"))
username = "www-data"
groupname = "www-data"


def ensure_folders():
Expand All @@ -31,8 +35,6 @@ def _chown(path, user: Union[str, int], group: Union[str, int]):
_chown(path, stat.st_uid, stat.st_gid)

if not SKIP_CHOWN:
username = "www-data"
groupname = "www-data"
for folder_name in folders:
folder = root.joinpath(folder_name)
_chown(folder, username, groupname)
Expand Down Expand Up @@ -93,8 +95,6 @@ def import_src_dir(src_dir: pathlib.Path):


def main():
ensure_folders()

setup_django()

if not install_db():
Expand All @@ -118,7 +118,15 @@ def main():


if __name__ == "__main__":
ensure_folders()

# drop to www-data privileges as to run script with web-alike perms
os.setegid(grp.getgrnam(groupname)[2])
os.seteuid(pwd.getpwnam(username)[2])
main()
# restore root privileges
os.seteuid(0)
os.setegid(0)

if not start_nginx():
sys.exit(1)
Expand Down

0 comments on commit 53f40ab

Please sign in to comment.