make-people-page: Catch some common problems

Skip over home directories which are unowned or owned by someone else
than the user, or if the user themselves is unknown, and report.

Signed-off-by: Nils Philippsen <nils@redhat.com>
This commit is contained in:
Nils Philippsen 2021-03-31 15:04:21 +02:00 committed by nphilipp
parent 84a5c6db9e
commit 03beee66af

View file

@ -19,6 +19,7 @@
import grp
import hashlib
import logging
import os
import pwd
import stat
@ -27,6 +28,8 @@ from pathlib import Path
from jinja2 import Template
log = logging.getLogger(__name__)
page_jinja_template = """
<!DOCTYPE html>
<html>
@ -152,10 +155,28 @@ homedirs = sorted(d for d in topdir.glob("*") if d.is_dir())
users = {}
for hdir in homedirs:
if hdir.stat().st_uid == 0:
log.info("'%s' is owned by root. Skipping.", hdir.name)
continue
try:
owner_name = hdir.owner()
except KeyError:
log.warning("'%s' is not owned by a named user. Skipping.", hdir.name)
continue
if owner_name != hdir.name:
log.warning("'%s' is owned by '%s'. Skipping.", hdir.name, owner_name)
continue
username = hdir.name
user = {}
pwentry = pwd.getpwnam(username)
try:
pwentry = pwd.getpwnam(username)
except KeyError:
log.warning("User not found: %s. Skipping.", username)
continue
user["name"] = pwentry.pw_gecos
user["has_public_html"] = (hdir / "public_html").is_dir()