59 lines
1.4 KiB
Bash
59 lines
1.4 KiB
Bash
pkg_install nginx lsof
|
|
systemctl enable --quiet --now nginx
|
|
user_add alice
|
|
|
|
# Task 3: a service to cap.
|
|
cat >/usr/local/bin/heartbeat <<'X'
|
|
#!/bin/bash
|
|
while :; do
|
|
date
|
|
sleep 5
|
|
done
|
|
X
|
|
chmod 755 /usr/local/bin/heartbeat
|
|
cat >/etc/systemd/system/heartbeat.service <<'X'
|
|
[Unit]
|
|
Description=Heartbeat
|
|
|
|
[Service]
|
|
ExecStart=/usr/local/bin/heartbeat
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
X
|
|
|
|
# Task 5: a non-root service on a privileged port; fails as it is.
|
|
id webapp >/dev/null 2>&1 || useradd -r -s /sbin/nologin -M webapp
|
|
mkdir -p /srv/webapp
|
|
echo "webapp works" >/srv/webapp/index.html
|
|
# A tiny web server; unlike "python3 -m http.server" it does no DNS lookup
|
|
# before listening, so it's up at once even where DNS is slow.
|
|
cat >/usr/local/bin/webapp <<'X'
|
|
#!/usr/bin/python3
|
|
import functools
|
|
import http.server
|
|
import socketserver
|
|
|
|
handler = functools.partial(http.server.SimpleHTTPRequestHandler, directory="/srv/webapp")
|
|
socketserver.TCPServer.allow_reuse_address = True
|
|
with socketserver.TCPServer(("", 81), handler) as server:
|
|
server.serve_forever()
|
|
X
|
|
chmod 755 /usr/local/bin/webapp
|
|
cat >/etc/systemd/system/webapp.service <<'X'
|
|
[Unit]
|
|
Description=Lab web application
|
|
After=network.target
|
|
|
|
[Service]
|
|
User=webapp
|
|
ExecStart=/usr/local/bin/webapp
|
|
|
|
[Install]
|
|
WantedBy=multi-user.target
|
|
X
|
|
systemctl daemon-reload
|
|
systemctl enable --quiet --now heartbeat.service
|
|
systemctl enable --quiet webapp.service
|
|
systemctl start webapp.service 2>/dev/null || true
|