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:
parent
84a5c6db9e
commit
03beee66af
1 changed files with 22 additions and 1 deletions
|
@ -19,6 +19,7 @@
|
||||||
|
|
||||||
import grp
|
import grp
|
||||||
import hashlib
|
import hashlib
|
||||||
|
import logging
|
||||||
import os
|
import os
|
||||||
import pwd
|
import pwd
|
||||||
import stat
|
import stat
|
||||||
|
@ -27,6 +28,8 @@ from pathlib import Path
|
||||||
from jinja2 import Template
|
from jinja2 import Template
|
||||||
|
|
||||||
|
|
||||||
|
log = logging.getLogger(__name__)
|
||||||
|
|
||||||
page_jinja_template = """
|
page_jinja_template = """
|
||||||
<!DOCTYPE html>
|
<!DOCTYPE html>
|
||||||
<html>
|
<html>
|
||||||
|
@ -152,10 +155,28 @@ homedirs = sorted(d for d in topdir.glob("*") if d.is_dir())
|
||||||
users = {}
|
users = {}
|
||||||
|
|
||||||
for hdir in homedirs:
|
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
|
username = hdir.name
|
||||||
user = {}
|
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["name"] = pwentry.pw_gecos
|
||||||
user["has_public_html"] = (hdir / "public_html").is_dir()
|
user["has_public_html"] = (hdir / "public_html").is_dir()
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue