Skip to content

Commit

Permalink
Override PAM config for su in RPM package
Browse files Browse the repository at this point in the history
In Red Hat based distributions, there is no pam-configs like
mechanism (authselect seems too heavy and is not configured by
default), so instead, we replace the PAM file.

Enable su for users in the qubes group, same as in the Debian
package.
  • Loading branch information
pwmarcz committed May 7, 2020
1 parent da2fa46 commit 7805923
Show file tree
Hide file tree
Showing 6 changed files with 50 additions and 8 deletions.
3 changes: 1 addition & 2 deletions debian/rules
Original file line number Diff line number Diff line change
Expand Up @@ -23,8 +23,7 @@ override_dh_auto_install:
make -C network install
make -C package-managers install
make -C package-managers install-apt
make -C passwordless-root install
make -C passwordless-root/debian install
make -C passwordless-root install install-debian
make -C qubes-rpc install
make -C qubes-rpc/kde install
make -C qubes-rpc/nautilus install
Expand Down
10 changes: 9 additions & 1 deletion passwordless-root/Makefile
Original file line number Diff line number Diff line change
@@ -1,12 +1,20 @@
SYSCONFDIR ?= /etc
SUDOERSDIR = $(SYSCONFDIR)/sudoers.d
POLKIT1DIR = $(SYSCONFDIR)/polkit-1
PAMDIR = $(SYSCONFDIR)/pam.d
PAMCONFIGSDIR = /usr/share/pam-configs/

.PHONY: install
.PHONY: install install-debian install-rh

install:
install -d -m 0750 $(DESTDIR)$(SUDOERSDIR)
install -D -m 0440 qubes.sudoers $(DESTDIR)$(SUDOERSDIR)/qubes
install -D -m 0644 polkit-1-qubes-allow-all.pkla $(DESTDIR)$(POLKIT1DIR)/localauthority/50-local.d/qubes-allow-all.pkla
install -d -m 0750 $(DESTDIR)$(POLKIT1DIR)/rules.d
install -D -m 0644 polkit-1-qubes-allow-all.rules $(DESTDIR)$(POLKIT1DIR)/rules.d/00-qubes-allow-all.rules

install-rh:
install -D -m 0644 pam.d_su.qubes $(DESTDIR)$(PAMDIR)/su.qubes

install-debian:
install -D -m 0644 pam-configs_su.qubes $(DESTDIR)$(PAMCONFIGSDIR)/su.qubes
4 changes: 0 additions & 4 deletions passwordless-root/debian/Makefile

This file was deleted.

File renamed without changes.
21 changes: 21 additions & 0 deletions passwordless-root/pam.d_su.qubes
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
#%PAM-1.0
auth sufficient pam_rootok.so
# Uncomment the following line to implicitly trust users in the "wheel" group.
#auth sufficient pam_wheel.so trust use_uid
# Uncomment the following line to require a user to be in the "wheel" group.
#auth required pam_wheel.so use_uid

# {{ Qubes specific modifications begin here
# Prevent su from asking for password
# (by package qubes-core-agent-passwordless-root).
auth sufficient pam_succeed_if.so use_uid user ingroup qubes
# }} Qubes specific modifications end here

auth substack system-auth
auth include postlogin
account sufficient pam_succeed_if.so uid = 0 use_uid quiet
account include system-auth
password include system-auth
session include system-auth
session include postlogin
session optional pam_xauth.so
20 changes: 19 additions & 1 deletion rpm_spec/core-agent.spec.in
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ make -C config-overrides DESTDIR=$RPM_BUILD_ROOT install
make -C filesystem DESTDIR=$RPM_BUILD_ROOT install
make -C misc DESTDIR=$RPM_BUILD_ROOT install
make -C network DESTDIR=$RPM_BUILD_ROOT install
make -C passwordless-root DESTDIR=$RPM_BUILD_ROOT install
make -C passwordless-root DESTDIR=$RPM_BUILD_ROOT install install-rh
make -C qubes-rpc DESTDIR=$RPM_BUILD_ROOT install
make -C qubes-rpc/kde DESTDIR=$RPM_BUILD_ROOT install
make -C qubes-rpc/nautilus DESTDIR=$RPM_BUILD_ROOT install
Expand Down Expand Up @@ -333,6 +333,16 @@ if ! grep -q /etc/default/grub.qubes /etc/default/grub 2>/dev/null; then
echo '. /etc/default/grub.qubes' >> /etc/default/grub
fi

%triggerin passwordless-root -- util-linux

qubesfile=/etc/pam.d/su.qubes
origfile=${qubesfile%.qubes}
backupfile=${origfile}.backup
if [ -r "$origfile" -a ! -r "$backupfile" ]; then
mv -f "$origfile" "$backupfile"
fi
ln -sf "$qubesfile" "$origfile"

%post

# disable some Upstart services
Expand Down Expand Up @@ -535,6 +545,13 @@ if [ $1 -eq 0 ]; then
usermod -p '*' root
fi

qubesfile=/etc/pam.d/su.qubes
origfile=${qubesfile%.qubes}
backupfile=${origfile}.backup
if [ -f "$backupfile" ]; then
mv -f "$backupfile" "$origfile"
fi

%posttrans
/usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :

Expand Down Expand Up @@ -755,6 +772,7 @@ rm -f %{name}-%{version}
%config(noreplace) /etc/polkit-1/localauthority/50-local.d/qubes-allow-all.pkla
%config(noreplace) /etc/polkit-1/rules.d/00-qubes-allow-all.rules
%config(noreplace) /etc/sudoers.d/qubes
%config(noreplace) /etc/pam.d/su.qubes

%package sysvinit
Summary: Qubes unit files for SysV init style or upstart
Expand Down

0 comments on commit 7805923

Please sign in to comment.