aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorPřemysl Eric Janouch <p@janouch.name>2024-03-27 08:26:49 +0100
committerPřemysl Eric Janouch <p@janouch.name>2024-03-27 08:26:49 +0100
commit9def673a2bddc30657425888e446b4c9f6ecc9a6 (patch)
treee8b6b09ecf0bd64def302fcb0db20ad8490d481e
parent36df9cc6c96bdbc39c10fffc88d33dcc17decbf6 (diff)
downloaddesktop-tools-9def673a2bddc30657425888e446b4c9f6ecc9a6.tar.gz
desktop-tools-9def673a2bddc30657425888e446b4c9f6ecc9a6.tar.xz
desktop-tools-9def673a2bddc30657425888e446b4c9f6ecc9a6.zip
Install some binaries with the setuid bit
-rw-r--r--CMakeLists.txt19
1 files changed, 16 insertions, 3 deletions
diff --git a/CMakeLists.txt b/CMakeLists.txt
index 27dab0c..f1d4292 100644
--- a/CMakeLists.txt
+++ b/CMakeLists.txt
@@ -33,7 +33,7 @@ configure_file (${PROJECT_SOURCE_DIR}/config.h.in
include_directories (${PROJECT_BINARY_DIR})
# Build
-set (targets wmstatus paswitch siprandom big-brother)
+set (targets wmstatus paswitch siprandom)
if ("${CMAKE_SYSTEM_NAME}" STREQUAL Linux)
# These use Linux i2c APIs, but can be made to work on macOS
list (APPEND targets brightness input-switch)
@@ -47,7 +47,7 @@ elseif (APPLE)
add_definitions (-D_DARWIN_C_SOURCE)
endif ()
-foreach (name ${targets})
+foreach (name big-brother ${targets})
add_executable (${name} ${name}.c)
endforeach ()
@@ -93,7 +93,20 @@ if (WITH_GDM)
install (TARGETS gdm-switch-user DESTINATION ${CMAKE_INSTALL_BINDIR})
endif ()
-list (REMOVE_ITEM targets big-brother)
+# These should be accessible by users, but need to touch system devices.
+# Use the setuid bit, for simplicity.
+foreach (target brightness input-switch)
+ if (${target} IN_LIST targets)
+ list (REMOVE_ITEM targets ${target})
+ install (TARGETS ${target} DESTINATION ${CMAKE_INSTALL_BINDIR}
+ PERMISSIONS
+ OWNER_WRITE OWNER_READ OWNER_EXECUTE
+ GROUP_READ GROUP_EXECUTE
+ WORLD_READ WORLD_EXECUTE
+ SETUID)
+ endif ()
+endforeach ()
+
install (TARGETS ${targets} DESTINATION ${CMAKE_INSTALL_BINDIR})
install (PROGRAMS shellify DESTINATION ${CMAKE_INSTALL_BINDIR})
install (FILES LICENSE DESTINATION ${CMAKE_INSTALL_DOCDIR})