diff --git a/archivebox/config/legacy.py b/archivebox/config/legacy.py index 6b3bd94b..33aeca2b 100644 --- a/archivebox/config/legacy.py +++ b/archivebox/config/legacy.py @@ -596,8 +596,8 @@ def setup_django(out_dir: Path | None=None, check_db=False, config: benedict=CON except Exception as e: bump_startup_progress_bar(advance=1000) - subcommand = sys.argv[1] if len(sys.argv) > 1 else 'unknown' - if subcommand not in ('help', 'version', '--help', '--version'): + is_using_meta_cmd = any(ignored_subcommand in sys.argv for ignored_subcommand in ('help', 'version', '--help', '--version')) + if not is_using_meta_cmd: # show error message to user only if they're not running a meta command / just trying to get help STDERR.print() STDERR.print(Panel( diff --git a/archivebox/config/permissions.py b/archivebox/config/permissions.py index d2d49492..67f27661 100644 --- a/archivebox/config/permissions.py +++ b/archivebox/config/permissions.py @@ -27,13 +27,15 @@ RUNNING_AS_UID = os.getuid() RUNNING_AS_GID = os.getgid() EUID = os.geteuid() EGID = os.getegid() +SUDO_UID = int(os.environ.get('SUDO_UID', 0)) +SUDO_GID = int(os.environ.get('SUDO_GID', 0)) USER: str = Path('~').expanduser().resolve().name IS_ROOT = RUNNING_AS_UID == 0 IN_DOCKER = os.environ.get('IN_DOCKER', False) in ('1', 'true', 'True', 'TRUE', 'yes') -FALLBACK_UID = RUNNING_AS_UID -FALLBACK_GID = RUNNING_AS_GID +FALLBACK_UID = RUNNING_AS_UID or SUDO_UID +FALLBACK_GID = RUNNING_AS_GID or SUDO_GID if RUNNING_AS_UID == 0: try: # if we are running as root it's really hard to figure out what the correct archivebox user should be @@ -101,7 +103,7 @@ def drop_privileges(): os.environ['USER'] = pw_record.pw_name if ARCHIVEBOX_USER == 0 or not ARCHIVEBOX_USER_EXISTS: - print('[yellow]:warning: Running as [red]root[/red] is not recommended and may make your [blue]DATA_DIR[/blue] inaccessible to other users on your system.[/yellow]', file=sys.stderr) + print('[yellow]:warning: Running as [red]root[/red] is not recommended and may make your [blue]DATA_DIR[/blue] inaccessible to other users on your system.[/yellow] (use [blue]sudo[/blue] instead)', file=sys.stderr) @contextmanager