Add support for building swaylock without PAM

This involves setuid'ing swaylock, which then forks and drops perms on
the parent process. The child process remains root and listens on a pipe
for requests to validate passwords against /etc/shadow.
This commit is contained in:
Drew DeVault 2018-09-28 12:18:54 +02:00
parent 58af001517
commit c977349120
7 changed files with 233 additions and 76 deletions

View file

@ -1,25 +1,37 @@
sysconfdir = get_option('sysconfdir')
executable(
'swaylock', [
'main.c',
'password.c',
'render.c',
'seat.c'
],
dependencies = [
cairo,
client_protos,
gdk_pixbuf,
math,
pango,
pangocairo,
xkbcommon,
wayland_client,
wlroots,
]
sources = [
'main.c',
'password.c',
'render.c',
'seat.c'
]
if libpam.found()
sources += ['pam.c']
dependencies += [libpam]
else
warning('The swaylock binary must be setuid when compiled without libpam')
warning('You must do this manually post-install: chmod a+s /path/to/swaylock')
sources += ['shadow.c']
endif
executable('swaylock',
sources,
include_directories: [sway_inc],
dependencies: [
cairo,
client_protos,
gdk_pixbuf,
libpam,
math,
pango,
pangocairo,
xkbcommon,
wayland_client,
wlroots,
],
dependencies: dependencies,
link_with: [lib_sway_common, lib_sway_client],
install: true
)