parent
39570560f1
commit
93ceef3d93
@ -0,0 +1 @@
|
||||
build
|
||||
@ -1,3 +1,28 @@
|
||||
# dragonrat-admin-tweaks
|
||||
# Dragonrat Admin Tweaks
|
||||
|
||||
Tweaks for administration of IT systems
|
||||
Tweaks for administration of IT systems
|
||||
|
||||
## Background
|
||||
|
||||
I needed to be able to set up polkit rules on atomic systems.
|
||||
Mostly, this was so that regular users could apply updates
|
||||
automatically without full admin rights. And basically the only
|
||||
(read "Best") way to install custom files to the read-only
|
||||
portion of OS is to use an RPM file. Thus, this repo is born.
|
||||
|
||||
## Updater Role
|
||||
|
||||
I wanted a way to allow non-tech users to update their system
|
||||
automatically without them needing to intervene. And it needed
|
||||
to be able to happen on laptops that are not always on or even
|
||||
connected to the network. So something like Ansible was overly
|
||||
complicated. These are family laptops, so they can be "brought in"
|
||||
regularly. This feels like a happy middle ground. Updates can
|
||||
be applied regularly (and automatically) through KDE's discover
|
||||
app, which uses PackageKit on the backend. PackageKit uses
|
||||
Polkit for authorization, so it just requires some polkit
|
||||
rules in order to work for updater users.
|
||||
|
||||
The updater role shouldn't require any sudo privileges because
|
||||
it is designed for non-tech users. They shouldn't be using
|
||||
the command line anyway.
|
||||
|
||||
@ -0,0 +1,39 @@
|
||||
#!/bin/bash
|
||||
|
||||
|
||||
SCRIPT_DIR=$( cd -- "$( dirname -- "${BASH_SOURCE[0]}" )" &> /dev/null && pwd )
|
||||
|
||||
SOURCE_FILENAME=$(rpmspec -q --qf "%{name}-%{version}\n" "$SCRIPT_DIR/dragonrat-admin-tweaks.spec")
|
||||
|
||||
OUTPUT_FILENAME=$(rpmspec -q "$SCRIPT_DIR/dragonrat-admin-tweaks.spec")
|
||||
|
||||
SOURCE_FILE="${HOME}/rpmbuild/SOURCES/${SOURCE_FILENAME}.tar.gz"
|
||||
|
||||
SPEC_FILE="${SCRIPT_DIR}/dragonrat-admin-tweaks.spec"
|
||||
|
||||
INPUT_FILES=(
|
||||
polkit-rules
|
||||
sysusers
|
||||
)
|
||||
|
||||
|
||||
BUILD_DIR=${SCRIPT_DIR}/build/${SOURCE_FILENAME}
|
||||
|
||||
if [[ -d "$BUILD_DIR" ]]; then
|
||||
rm -r "$BUILD_DIR"
|
||||
fi
|
||||
mkdir -p "$BUILD_DIR"
|
||||
cp -r ${INPUT_FILES[*]} "$BUILD_DIR"
|
||||
|
||||
|
||||
pushd ${SCRIPT_DIR}/build > /dev/null
|
||||
echo "Bundling sources into ${SOURCE_FILE}"
|
||||
tar --create --gzip --verbose --file "$SOURCE_FILE" "$SOURCE_FILENAME"
|
||||
popd > /dev/null
|
||||
|
||||
echo "Building RPM"
|
||||
rpmbuild -ba "$SPEC_FILE"
|
||||
|
||||
echo ""
|
||||
echo "$OUTPUT_FILENAME"
|
||||
|
||||
@ -0,0 +1,35 @@
|
||||
Name: dragonrat-admin-tweaks
|
||||
Version: 0.1
|
||||
Release: %autorelease
|
||||
Summary: Tweaks for administration of IT systems
|
||||
BuildArch: noarch
|
||||
|
||||
License: MIT
|
||||
URL: https://dragonrat.net/
|
||||
Source0: %{name}-%{version}.tar.gz
|
||||
|
||||
Requires: polkit
|
||||
|
||||
%description
|
||||
Tweaks for administration of IT systems. Create new roles using
|
||||
Polkit rules to allow updating without full administrator rightes
|
||||
|
||||
|
||||
%prep
|
||||
%setup
|
||||
|
||||
|
||||
%install
|
||||
rm -rf $RPM_BUILD_ROOT
|
||||
install -p -m 644 -D -t $RPM_BUILD_ROOT/%{_datadir}/polkit-1/rules.d polkit-rules/admin-tweaks-updater.rules
|
||||
install -p -m 644 -D -t $RPM_BUILD_ROOT/%{_libdir}/sysusers.d sysusers/admin-tweaks.conf
|
||||
|
||||
|
||||
%files
|
||||
%{_datadir}/polkit-1/rules.d/admin-tweaks-updater.rules
|
||||
%{_libdir}/sysusers.d/admin-tweaks.conf
|
||||
|
||||
|
||||
%changelog
|
||||
* Mon May 26 2025 Wes Holland <wes@dragonrat.net>
|
||||
-
|
||||
@ -0,0 +1,22 @@
|
||||
// Dragonrat admin tweaks updater role
|
||||
//
|
||||
// DO NOT EDIT THIS FILE, it will be overwritten on update.
|
||||
//
|
||||
// Allow users in the updater role to update the system
|
||||
// without being interrupted by a password dialog
|
||||
|
||||
|
||||
polkit.addRule(function(action, subject) { if ( (
|
||||
action.id == "org.freedesktop.Flatpak.app-update" ||
|
||||
action.id == "org.freedesktop.Flatpak.app-install" ||
|
||||
action.id == "org.freedesktop.Flatpak.app-uninstall" ||
|
||||
action.id == "org.freedesktop.Flatpak.runtime-update" ||
|
||||
action.id == "org.freedesktop.Flatpak.runtime-install" ||
|
||||
action.id == "org.freedesktop.Flatpak.runtime-uninstall" ||
|
||||
action.id == "org.projectatomic.rpmostree1.rebase") && (
|
||||
subject.isInGroup("wheel") || subject.isInGroup("updater")
|
||||
) && subject.active) {
|
||||
|
||||
return polkit.Result.YES;
|
||||
}
|
||||
});
|
||||
@ -0,0 +1 @@
|
||||
g updater -
|
||||
Loading…
Reference in new issue