Merge remote-tracking branch 'origin/pr/228'
* origin/pr/228: Override PAM config for su in RPM package Use pam-configs to override Debian PAM config Lock root password in passwordless-root package Enable root autologin on serial console
This commit is contained in:
commit
bb1a6eb62e
2
Makefile
2
Makefile
@ -54,7 +54,7 @@ USER_DROPIN_DIR ?= "usr/lib/systemd/user"
|
|||||||
|
|
||||||
SYSTEM_DROPINS := boot.automount chronyd.service crond.service
|
SYSTEM_DROPINS := boot.automount chronyd.service crond.service
|
||||||
SYSTEM_DROPINS += cups.service cups-browsed.service cups.path cups.socket ModemManager.service
|
SYSTEM_DROPINS += cups.service cups-browsed.service cups.path cups.socket ModemManager.service
|
||||||
SYSTEM_DROPINS += getty@tty.service
|
SYSTEM_DROPINS += getty@tty.service serial-getty@.service
|
||||||
SYSTEM_DROPINS += tmp.mount
|
SYSTEM_DROPINS += tmp.mount
|
||||||
SYSTEM_DROPINS += org.cups.cupsd.service org.cups.cupsd.path org.cups.cupsd.socket
|
SYSTEM_DROPINS += org.cups.cupsd.service org.cups.cupsd.path org.cups.cupsd.socket
|
||||||
SYSTEM_DROPINS += systemd-random-seed.service
|
SYSTEM_DROPINS += systemd-random-seed.service
|
||||||
|
@ -35,7 +35,7 @@ pre_install() {
|
|||||||
# Add qubes core related fstab entries
|
# Add qubes core related fstab entries
|
||||||
echo "xen /proc/xen xenfs defaults 0 0" >> /etc/fstab
|
echo "xen /proc/xen xenfs defaults 0 0" >> /etc/fstab
|
||||||
|
|
||||||
usermod -p '' root
|
usermod -L root
|
||||||
usermod -L user
|
usermod -L user
|
||||||
}
|
}
|
||||||
|
|
||||||
|
1
debian/control
vendored
1
debian/control
vendored
@ -160,6 +160,7 @@ Description: NetworkManager integration for Qubes VM
|
|||||||
|
|
||||||
Package: qubes-core-agent-passwordless-root
|
Package: qubes-core-agent-passwordless-root
|
||||||
Architecture: any
|
Architecture: any
|
||||||
|
Depends: libpam-runtime
|
||||||
Replaces: qubes-core-agent (<< 4.0.0-1)
|
Replaces: qubes-core-agent (<< 4.0.0-1)
|
||||||
Breaks: qubes-core-agent (<< 4.0.0-1)
|
Breaks: qubes-core-agent (<< 4.0.0-1)
|
||||||
Provides: ${diverted-files}
|
Provides: ${diverted-files}
|
||||||
|
@ -1,4 +1,4 @@
|
|||||||
etc/polkit-1/localauthority/50-local.d/qubes-allow-all.pkla
|
etc/polkit-1/localauthority/50-local.d/qubes-allow-all.pkla
|
||||||
etc/polkit-1/rules.d/00-qubes-allow-all.rules
|
etc/polkit-1/rules.d/00-qubes-allow-all.rules
|
||||||
etc/pam.d/su.qubes
|
|
||||||
etc/sudoers.d/qubes
|
etc/sudoers.d/qubes
|
||||||
|
usr/share/pam-configs/su.qubes
|
||||||
|
31
debian/qubes-core-agent-passwordless-root.postinst
vendored
Normal file
31
debian/qubes-core-agent-passwordless-root.postinst
vendored
Normal file
@ -0,0 +1,31 @@
|
|||||||
|
#!/bin/bash
|
||||||
|
# postinst script for qubes-core-agent-passwordless-root
|
||||||
|
#
|
||||||
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# The postinst script may be called in the following ways:
|
||||||
|
# * <postinst> 'configure' <most-recently-configured-version>
|
||||||
|
# * <old-postinst> 'abort-upgrade' <new version>
|
||||||
|
# * <conflictor's-postinst> 'abort-remove' 'in-favour' <package>
|
||||||
|
# <new-version>
|
||||||
|
# * <postinst> 'abort-remove'
|
||||||
|
# * <deconfigured's-postinst> 'abort-deconfigure' 'in-favour'
|
||||||
|
# <failed-install-package> <version> 'removing'
|
||||||
|
# <conflicting-package> <version>
|
||||||
|
#
|
||||||
|
# For details, see http://www.debian.org/doc/debian-policy/ or
|
||||||
|
# https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html or
|
||||||
|
# the debian-policy package
|
||||||
|
|
||||||
|
pam-auth-update --package
|
||||||
|
|
||||||
|
# dh_installdeb will replace this with shell code automatically
|
||||||
|
# generated by other debhelper scripts.
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# vim: set ts=4 sw=4 sts=4 et :
|
@ -33,8 +33,8 @@ set -e
|
|||||||
# https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html or
|
# https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html or
|
||||||
# the debian-policy package
|
# the debian-policy package
|
||||||
|
|
||||||
if [ "$1" = "install" ] ; then
|
if [ "$1" = "install" ] || [ "$1" = "upgrade" ]; then
|
||||||
usermod -p '' root
|
usermod -L root
|
||||||
fi
|
fi
|
||||||
|
|
||||||
# dh_installdeb will replace this with shell code automatically
|
# dh_installdeb will replace this with shell code automatically
|
||||||
|
43
debian/qubes-core-agent-passwordless-root.prerm
vendored
Normal file
43
debian/qubes-core-agent-passwordless-root.prerm
vendored
Normal file
@ -0,0 +1,43 @@
|
|||||||
|
#!/bin/sh
|
||||||
|
# prerm script for qubes-core-agent-passwordless-root
|
||||||
|
#
|
||||||
|
# see: dh_installdeb(1)
|
||||||
|
|
||||||
|
set -e
|
||||||
|
|
||||||
|
# The prerm script may be called in the following ways:
|
||||||
|
# * <prerm> 'remove'
|
||||||
|
# * <old-prerm> 'upgrade' <new-version>
|
||||||
|
# * <conflictor's-prerm> 'remove' 'in-favour' <package> <new-version>
|
||||||
|
# * <deconfigured's-prerm> 'deconfigure' 'in-favour' <package-being-installed>
|
||||||
|
# <version> [removing conflicting-package version]
|
||||||
|
#
|
||||||
|
# The package whose prerm is being called will be at least "Half-Installed".
|
||||||
|
# All package dependencies will at least be "Half-Installed" and will have
|
||||||
|
# previously been configured and not removed. If there was no error, all
|
||||||
|
# dependencies will at least be "Unpacked", but these actions may be called in
|
||||||
|
# various error states where dependencies are only "Half-Installed" due to a
|
||||||
|
# partial upgrade.
|
||||||
|
#
|
||||||
|
# * <new-prerm> 'failed-upgrade' <old-version>
|
||||||
|
#
|
||||||
|
# Called during error handling when prerm upgrade fails. The new package
|
||||||
|
# will not yet be unpacked, and all the same constraints as for preinst
|
||||||
|
# upgrade apply.
|
||||||
|
#
|
||||||
|
# For details, see http://www.debian.org/doc/debian-policy/ or
|
||||||
|
# https://www.debian.org/doc/debian-policy/ch-maintainerscripts.html or
|
||||||
|
# the debian-policy package
|
||||||
|
|
||||||
|
if [ "$1" = remove ]; then
|
||||||
|
pam-auth-update --package --remove su.qubes
|
||||||
|
fi
|
||||||
|
|
||||||
|
# dh_installdeb will replace this with shell code automatically
|
||||||
|
# generated by other debhelper scripts.
|
||||||
|
|
||||||
|
#DEBHELPER#
|
||||||
|
|
||||||
|
exit 0
|
||||||
|
|
||||||
|
# vim: set ts=4 sw=4 sts=4 et :
|
1
debian/qubes-core-agent.install
vendored
1
debian/qubes-core-agent.install
vendored
@ -88,6 +88,7 @@ lib/systemd/system/qubes-updates-proxy-forwarder@.service
|
|||||||
lib/systemd/system/qubes-updates-proxy-forwarder.socket
|
lib/systemd/system/qubes-updates-proxy-forwarder.socket
|
||||||
lib/systemd/system/qubes-sync-time.service
|
lib/systemd/system/qubes-sync-time.service
|
||||||
lib/systemd/system/qubes-sync-time.timer
|
lib/systemd/system/qubes-sync-time.timer
|
||||||
|
lib/systemd/system/serial-getty@.service.d/30_qubes.conf
|
||||||
lib/systemd/system/systemd-random-seed.service.d/30_qubes.conf
|
lib/systemd/system/systemd-random-seed.service.d/30_qubes.conf
|
||||||
lib/systemd/system/tinyproxy.service.d/30_not_needed_in_qubes_by_default.conf
|
lib/systemd/system/tinyproxy.service.d/30_not_needed_in_qubes_by_default.conf
|
||||||
lib/systemd/system/tmp.mount.d/30_qubes.conf
|
lib/systemd/system/tmp.mount.d/30_qubes.conf
|
||||||
|
3
debian/rules
vendored
3
debian/rules
vendored
@ -23,8 +23,7 @@ override_dh_auto_install:
|
|||||||
make -C network install
|
make -C network install
|
||||||
make -C package-managers install
|
make -C package-managers install
|
||||||
make -C package-managers install-apt
|
make -C package-managers install-apt
|
||||||
make -C passwordless-root install
|
make -C passwordless-root install install-debian
|
||||||
make -C passwordless-root/debian install
|
|
||||||
make -C qubes-rpc install
|
make -C qubes-rpc install
|
||||||
make -C qubes-rpc/kde install
|
make -C qubes-rpc/kde install
|
||||||
make -C qubes-rpc/nautilus install
|
make -C qubes-rpc/nautilus install
|
||||||
|
@ -1,8 +1,10 @@
|
|||||||
SYSCONFDIR ?= /etc
|
SYSCONFDIR ?= /etc
|
||||||
SUDOERSDIR = $(SYSCONFDIR)/sudoers.d
|
SUDOERSDIR = $(SYSCONFDIR)/sudoers.d
|
||||||
POLKIT1DIR = $(SYSCONFDIR)/polkit-1
|
POLKIT1DIR = $(SYSCONFDIR)/polkit-1
|
||||||
|
PAMDIR = $(SYSCONFDIR)/pam.d
|
||||||
|
PAMCONFIGSDIR = /usr/share/pam-configs/
|
||||||
|
|
||||||
.PHONY: install
|
.PHONY: install install-debian install-rh
|
||||||
|
|
||||||
install:
|
install:
|
||||||
install -d -m 0750 $(DESTDIR)$(SUDOERSDIR)
|
install -d -m 0750 $(DESTDIR)$(SUDOERSDIR)
|
||||||
@ -10,3 +12,9 @@ install:
|
|||||||
install -D -m 0644 polkit-1-qubes-allow-all.pkla $(DESTDIR)$(POLKIT1DIR)/localauthority/50-local.d/qubes-allow-all.pkla
|
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 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 -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
|
||||||
|
@ -1,7 +0,0 @@
|
|||||||
SYSCONFDIR ?= /etc
|
|
||||||
PAMDIR ?= $(SYSCONFDIR)/pam.d
|
|
||||||
|
|
||||||
.PHONY: install
|
|
||||||
|
|
||||||
install:
|
|
||||||
install -D -m 0644 pam.d_su.qubes $(DESTDIR)$(PAMDIR)/su.qubes
|
|
@ -1,66 +0,0 @@
|
|||||||
#
|
|
||||||
# The PAM configuration file for the Shadow `su' service
|
|
||||||
#
|
|
||||||
|
|
||||||
# This allows root to su without passwords (normal operation)
|
|
||||||
auth sufficient pam_rootok.so
|
|
||||||
|
|
||||||
# Uncomment this to force users to be a member of group root
|
|
||||||
# before they can use `su'. You can also add "group=foo"
|
|
||||||
# to the end of this line if you want to use a group other
|
|
||||||
# than the default "root" (but this may have side effect of
|
|
||||||
# denying "root" user, unless she's a member of "foo" or explicitly
|
|
||||||
# permitted earlier by e.g. "sufficient pam_rootok.so").
|
|
||||||
# (Replaces the `SU_WHEEL_ONLY' option from login.defs)
|
|
||||||
# auth required pam_wheel.so
|
|
||||||
|
|
||||||
# Uncomment this if you want wheel members to be able to
|
|
||||||
# su without a password.
|
|
||||||
# auth sufficient pam_wheel.so trust
|
|
||||||
|
|
||||||
# Uncomment this if you want members of a specific group to not
|
|
||||||
# be allowed to use su at all.
|
|
||||||
# auth required pam_wheel.so deny group=nosu
|
|
||||||
|
|
||||||
# Uncomment and edit /etc/security/time.conf if you need to set
|
|
||||||
# time restrainst on su usage.
|
|
||||||
# (Replaces the `PORTTIME_CHECKS_ENAB' option from login.defs
|
|
||||||
# as well as /etc/porttime)
|
|
||||||
# account requisite pam_time.so
|
|
||||||
|
|
||||||
# This module parses environment configuration file(s)
|
|
||||||
# and also allows you to use an extended config
|
|
||||||
# file /etc/security/pam_env.conf.
|
|
||||||
#
|
|
||||||
# parsing /etc/environment needs "readenv=1"
|
|
||||||
session required pam_env.so readenv=1
|
|
||||||
# locale variables are also kept into /etc/default/locale in etch
|
|
||||||
# reading this file *in addition to /etc/environment* does not hurt
|
|
||||||
session required pam_env.so readenv=1 envfile=/etc/default/locale
|
|
||||||
|
|
||||||
# Defines the MAIL environment variable
|
|
||||||
# However, userdel also needs MAIL_DIR and MAIL_FILE variables
|
|
||||||
# in /etc/login.defs to make sure that removing a user
|
|
||||||
# also removes the user's mail spool file.
|
|
||||||
# See comments in /etc/login.defs
|
|
||||||
#
|
|
||||||
# "nopen" stands to avoid reporting new mail when su'ing to another user
|
|
||||||
session optional pam_mail.so nopen
|
|
||||||
|
|
||||||
# Sets up user limits according to /etc/security/limits.conf
|
|
||||||
# (Replaces the use of /etc/limits in old login)
|
|
||||||
session required pam_limits.so
|
|
||||||
|
|
||||||
# {{ Qubes specific modifications being here
|
|
||||||
# Prevent 'su -' from asking for password in Debian [based] templates.
|
|
||||||
# https://github.com/QubesOS/qubes-issues/issues/1128
|
|
||||||
# Feel free to comment out the following line.
|
|
||||||
auth sufficient pam_permit.so
|
|
||||||
# }} Qubes specific modifications end here
|
|
||||||
|
|
||||||
# The standard Unix authentication modules, used with
|
|
||||||
# NIS (man nsswitch) as well as normal /etc/passwd and
|
|
||||||
# /etc/shadow entries.
|
|
||||||
@include common-auth
|
|
||||||
@include common-account
|
|
||||||
@include common-session
|
|
6
passwordless-root/pam-configs_su.qubes
Normal file
6
passwordless-root/pam-configs_su.qubes
Normal file
@ -0,0 +1,6 @@
|
|||||||
|
Name: allow su without password (by package qubes-core-agent-passwordless-root)
|
||||||
|
Default: yes
|
||||||
|
Priority: 258
|
||||||
|
Auth-Type: Primary
|
||||||
|
Auth:
|
||||||
|
sufficient pam_succeed_if.so use_uid user ingroup qubes service in su:su-l
|
21
passwordless-root/pam.d_su.qubes
Normal file
21
passwordless-root/pam.d_su.qubes
Normal file
@ -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
|
@ -288,7 +288,7 @@ usermod -L user
|
|||||||
|
|
||||||
%pre passwordless-root
|
%pre passwordless-root
|
||||||
|
|
||||||
usermod -p '' root
|
usermod -L root
|
||||||
|
|
||||||
%install
|
%install
|
||||||
|
|
||||||
@ -299,7 +299,7 @@ make -C config-overrides DESTDIR=$RPM_BUILD_ROOT install
|
|||||||
make -C filesystem DESTDIR=$RPM_BUILD_ROOT install
|
make -C filesystem DESTDIR=$RPM_BUILD_ROOT install
|
||||||
make -C misc DESTDIR=$RPM_BUILD_ROOT install
|
make -C misc DESTDIR=$RPM_BUILD_ROOT install
|
||||||
make -C network 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 DESTDIR=$RPM_BUILD_ROOT install
|
||||||
make -C qubes-rpc/kde 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
|
make -C qubes-rpc/nautilus DESTDIR=$RPM_BUILD_ROOT install
|
||||||
@ -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
|
echo '. /etc/default/grub.qubes' >> /etc/default/grub
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
%triggerin passwordless-root -- util-linux
|
||||||
|
|
||||||
|
qubesfile=/etc/pam.d/su.qubes
|
||||||
|
origfile=${qubesfile%.qubes}
|
||||||
|
backupfile=${origfile}.qubes-orig
|
||||||
|
if [ -r "$origfile" -a ! -r "$backupfile" ]; then
|
||||||
|
mv -f "$origfile" "$backupfile"
|
||||||
|
fi
|
||||||
|
ln -sf "$qubesfile" "$origfile"
|
||||||
|
|
||||||
%post
|
%post
|
||||||
|
|
||||||
# disable some Upstart services
|
# disable some Upstart services
|
||||||
@ -535,6 +545,13 @@ if [ $1 -eq 0 ]; then
|
|||||||
usermod -p '*' root
|
usermod -p '*' root
|
||||||
fi
|
fi
|
||||||
|
|
||||||
|
qubesfile=/etc/pam.d/su.qubes
|
||||||
|
origfile=${qubesfile%.qubes}
|
||||||
|
backupfile=${origfile}.qubes-orig
|
||||||
|
if [ -f "$backupfile" ]; then
|
||||||
|
mv -f "$backupfile" "$origfile"
|
||||||
|
fi
|
||||||
|
|
||||||
%posttrans
|
%posttrans
|
||||||
/usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
/usr/bin/glib-compile-schemas %{_datadir}/glib-2.0/schemas &> /dev/null || :
|
||||||
|
|
||||||
@ -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/localauthority/50-local.d/qubes-allow-all.pkla
|
||||||
%config(noreplace) /etc/polkit-1/rules.d/00-qubes-allow-all.rules
|
%config(noreplace) /etc/polkit-1/rules.d/00-qubes-allow-all.rules
|
||||||
%config(noreplace) /etc/sudoers.d/qubes
|
%config(noreplace) /etc/sudoers.d/qubes
|
||||||
|
%config(noreplace) /etc/pam.d/su.qubes
|
||||||
|
|
||||||
%package sysvinit
|
%package sysvinit
|
||||||
Summary: Qubes unit files for SysV init style or upstart
|
Summary: Qubes unit files for SysV init style or upstart
|
||||||
@ -869,6 +887,7 @@ The Qubes core startup configuration for SystemD init.
|
|||||||
/lib/systemd/system/ModemManager.service.d/30_qubes.conf
|
/lib/systemd/system/ModemManager.service.d/30_qubes.conf
|
||||||
/lib/systemd/system/NetworkManager.service.d/30_qubes.conf
|
/lib/systemd/system/NetworkManager.service.d/30_qubes.conf
|
||||||
/lib/systemd/system/NetworkManager-wait-online.service.d/30_qubes.conf
|
/lib/systemd/system/NetworkManager-wait-online.service.d/30_qubes.conf
|
||||||
|
/lib/systemd/system/serial-getty@.service.d/30_qubes.conf
|
||||||
/lib/systemd/system/systemd-random-seed.service.d/30_qubes.conf
|
/lib/systemd/system/systemd-random-seed.service.d/30_qubes.conf
|
||||||
/lib/systemd/system/systemd-timesyncd.service.d/30_qubes.conf
|
/lib/systemd/system/systemd-timesyncd.service.d/30_qubes.conf
|
||||||
/lib/systemd/system/tinyproxy.service.d/30_not_needed_in_qubes_by_default.conf
|
/lib/systemd/system/tinyproxy.service.d/30_not_needed_in_qubes_by_default.conf
|
||||||
|
3
vm-systemd/serial-getty@.service.d/30_qubes.conf
Normal file
3
vm-systemd/serial-getty@.service.d/30_qubes.conf
Normal file
@ -0,0 +1,3 @@
|
|||||||
|
[Service]
|
||||||
|
ExecStart=
|
||||||
|
ExecStart=-/sbin/agetty --autologin root --login-pause --keep-baud 115200,38400,9600 %I $TERM
|
Loading…
Reference in New Issue
Block a user