mirror of
https://github.com/systemd/systemd.git
synced 2025-01-09 01:18:19 +03:00
drop support for MANAGER_SESSION, introduce MANAGER_USER instead
This commit is contained in:
parent
62347bc24a
commit
af2d49f70b
46
Makefile.am
46
Makefile.am
@ -30,9 +30,9 @@ bashcompletiondir=$(sysconfdir)/bash_completion.d
|
||||
|
||||
# Our own, non-special dirs
|
||||
pkgsysconfdir=$(sysconfdir)/systemd
|
||||
sessionunitdir=$(pkgdatadir)/session
|
||||
userunitdir=$(pkgdatadir)/user
|
||||
tmpfilesdir=$(sysconfdir)/tmpfiles.d
|
||||
sessiongeneratordir=$(pkglibexecdir)/session-generators
|
||||
usergeneratordir=$(pkglibexecdir)/user-generators
|
||||
|
||||
# And these are the special ones for /
|
||||
rootdir=@rootdir@
|
||||
@ -49,9 +49,9 @@ AM_CPPFLAGS = \
|
||||
-DSYSTEM_DATA_UNIT_PATH=\"$(systemunitdir)\" \
|
||||
-DSYSTEM_SYSVINIT_PATH=\"$(SYSTEM_SYSVINIT_PATH)\" \
|
||||
-DSYSTEM_SYSVRCND_PATH=\"$(SYSTEM_SYSVRCND_PATH)\" \
|
||||
-DSESSION_CONFIG_FILE=\"$(pkgsysconfdir)/session.conf\" \
|
||||
-DSESSION_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/session\" \
|
||||
-DSESSION_DATA_UNIT_PATH=\"$(sessionunitdir)\" \
|
||||
-DUSER_CONFIG_FILE=\"$(pkgsysconfdir)/user.conf\" \
|
||||
-DUSER_CONFIG_UNIT_PATH=\"$(pkgsysconfdir)/user\" \
|
||||
-DUSER_DATA_UNIT_PATH=\"$(userunitdir)\" \
|
||||
-DSYSTEMD_CGROUP_AGENT_PATH=\"$(rootlibexecdir)/systemd-cgroups-agent\" \
|
||||
-DSYSTEMD_BINARY_PATH=\"$(rootbindir)/systemd\" \
|
||||
-DSYSTEMD_SHUTDOWN_BINARY_PATH=\"$(rootlibexecdir)/systemd-shutdown\" \
|
||||
@ -61,7 +61,7 @@ AM_CPPFLAGS = \
|
||||
-DRANDOM_SEED=\"$(localstatedir)/lib/random-seed\" \
|
||||
-DSYSTEMD_CRYPTSETUP_PATH=\"$(rootlibexecdir)/systemd-cryptsetup\" \
|
||||
-DSYSTEM_GENERATOR_PATH=\"$(systemgeneratordir)\" \
|
||||
-DSESSION_GENERATOR_PATH=\"$(sessiongeneratordir)\" \
|
||||
-DUSER_GENERATOR_PATH=\"$(usergeneratordir)\" \
|
||||
-I $(top_srcdir)/src
|
||||
|
||||
if TARGET_GENTOO
|
||||
@ -268,13 +268,13 @@ nodist_systemunit_DATA = \
|
||||
units/quotacheck.service \
|
||||
units/rescue.service
|
||||
|
||||
dist_sessionunit_DATA = \
|
||||
units/session/default.target \
|
||||
units/session/exit.target
|
||||
dist_userunit_DATA = \
|
||||
units/user/default.target \
|
||||
units/user/exit.target
|
||||
|
||||
nodist_sessionunit_DATA = \
|
||||
units/session/remote-fs.target \
|
||||
units/session/exit.service
|
||||
nodist_userunit_DATA = \
|
||||
units/user/remote-fs.target \
|
||||
units/user/exit.service
|
||||
|
||||
EXTRA_DIST = \
|
||||
units/getty@.service.m4 \
|
||||
@ -307,7 +307,7 @@ EXTRA_DIST = \
|
||||
units/poweroff.service.in \
|
||||
units/reboot.service.in \
|
||||
units/kexec.service.in \
|
||||
units/session/exit.service.in \
|
||||
units/user/exit.service.in \
|
||||
units/fsck@.service.in \
|
||||
units/fsck-root.service.in \
|
||||
units/quotacheck.service.in \
|
||||
@ -1008,19 +1008,19 @@ M4_PROCESS_SYSTEM = \
|
||||
$(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
|
||||
$(M4) -P $(M4_DISTRO_FLAG) -DFOR_SYSTEM=1 < $< > $@ || rm $@
|
||||
|
||||
M4_PROCESS_SESSION = \
|
||||
M4_PROCESS_USER = \
|
||||
$(AM_V_GEN)$(MKDIR_P) $(dir $@) && \
|
||||
$(M4) -P $(M4_DISTRO_FLAG) -DFOR_SESSION=1 < $< > $@ || rm $@
|
||||
$(M4) -P $(M4_DISTRO_FLAG) -DFOR_USER=1 < $< > $@ || rm $@
|
||||
|
||||
units/%: units/%.m4 Makefile
|
||||
$(M4_PROCESS_SYSTEM)
|
||||
|
||||
units/session/%: units/%.m4 Makefile
|
||||
$(M4_PROCESS_SESSION)
|
||||
units/user/%: units/%.m4 Makefile
|
||||
$(M4_PROCESS_USER)
|
||||
|
||||
CLEANFILES = \
|
||||
$(nodist_systemunit_DATA) \
|
||||
$(nodist_sessionunit_DATA) \
|
||||
$(nodist_userunit_DATA) \
|
||||
$(nodist_man_MANS) \
|
||||
${XML_IN_FILES:.xml.in=.html} \
|
||||
$(pkgconfigdata_DATA)
|
||||
@ -1105,7 +1105,7 @@ CLEANFILES += \
|
||||
install-data-hook:
|
||||
$(MKDIR_P) -m 0755 \
|
||||
$(DESTDIR)$(systemunitdir) \
|
||||
$(DESTDIR)$(sessionunitdir) \
|
||||
$(DESTDIR)$(userunitdir) \
|
||||
$(DESTDIR)$(systemunitdir)/sysinit.target.wants \
|
||||
$(DESTDIR)$(systemunitdir)/sockets.target.wants \
|
||||
$(DESTDIR)$(systemunitdir)/basic.target.wants \
|
||||
@ -1123,11 +1123,11 @@ install-data-hook:
|
||||
$(DESTDIR)$(pkgsysconfdir)/system/local-fs.target.wants \
|
||||
$(DESTDIR)$(pkgsysconfdir)/system/multi-user.target.wants \
|
||||
$(DESTDIR)$(pkgsysconfdir)/system/getty.target.wants \
|
||||
$(DESTDIR)$(pkgsysconfdir)/session \
|
||||
$(DESTDIR)$(pkgsysconfdir)/user \
|
||||
$(DESTDIR)$(sysconfdir)/xdg/systemd
|
||||
( cd $(DESTDIR)$(sysconfdir)/xdg/systemd/ && \
|
||||
rm -f session && \
|
||||
$(LN_S) $(pkgsysconfdir)/session session )
|
||||
rm -f user && \
|
||||
$(LN_S) $(pkgsysconfdir)/user user )
|
||||
( cd $(DESTDIR)$(systemunitdir)/sockets.target.wants && \
|
||||
rm -f systemd-initctl.socket systemd-logger.socket systemd-shutdownd.socket syslog.socket && \
|
||||
$(LN_S) ../systemd-logger.socket systemd-logger.socket && \
|
||||
@ -1167,7 +1167,7 @@ install-data-hook:
|
||||
$(LN_S) ../remount-rootfs.service remount-rootfs.service && \
|
||||
$(LN_S) ../var-run.mount var-run.mount && \
|
||||
$(LN_S) ../var-lock.mount var-lock.mount )
|
||||
( cd $(DESTDIR)$(sessionunitdir) && \
|
||||
( cd $(DESTDIR)$(userunitdir) && \
|
||||
rm -f shutdown.target sockets.target local-fs.target swap.target bluetooth.target printer.target && \
|
||||
$(LN_S) $(systemunitdir)/shutdown.target shutdown.target && \
|
||||
$(LN_S) $(systemunitdir)/sockets.target sockets.target && \
|
||||
|
4
TODO
4
TODO
@ -42,8 +42,6 @@
|
||||
|
||||
* add systemctl switch to dump transaction without executing it
|
||||
|
||||
* system.conf/session.conf man page
|
||||
|
||||
* suspend, resume
|
||||
|
||||
* systemctl auto-pager a la git
|
||||
@ -79,8 +77,6 @@
|
||||
|
||||
* declare /etc/os-release cross-distro standard
|
||||
|
||||
* rename s/session/user/g
|
||||
|
||||
* fix hotplug transactions
|
||||
|
||||
External:
|
||||
|
@ -760,8 +760,8 @@
|
||||
--variable=systemdsystemunitdir</command> (for
|
||||
system services), resp. <command>pkg-config
|
||||
systemd
|
||||
--variable=systemdsessionunitdir</command>
|
||||
(for session services). This will make the
|
||||
--variable=systemduserunitdir</command>
|
||||
(for user services). This will make the
|
||||
services available in the system on explicit
|
||||
request but not activate them automatically
|
||||
during boot. Optionally, during package
|
||||
@ -795,7 +795,7 @@ AM_CONDITIONAL(HAVE_SYSTEMD, [test -n "$with_systemdsystemunitdir" -a "x$with_sy
|
||||
machines, and optionally allows their
|
||||
installation even on machines lacking
|
||||
systemd. (Modification of this snippet for the
|
||||
session unit directory is left as excercise to the
|
||||
user unit directory is left as excercise to the
|
||||
reader.)</para>
|
||||
|
||||
<para>Additionally, to ensure that
|
||||
|
@ -45,7 +45,7 @@
|
||||
<refnamediv>
|
||||
<refname>systemadm</refname>
|
||||
<refpurpose>Graphical frontend for the systemd system
|
||||
and session manager</refpurpose>
|
||||
and service manager</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
@ -58,7 +58,7 @@
|
||||
<title>Description</title>
|
||||
|
||||
<para><command>systemadm</command> is a graphical
|
||||
frontend for the systemd system and session manager
|
||||
frontend for the systemd system and service manager
|
||||
and allows introspection and control of
|
||||
systemd.</para>
|
||||
</refsect1>
|
||||
@ -87,10 +87,10 @@
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--session</option></term>
|
||||
<term><option>--user</option></term>
|
||||
|
||||
<listitem><para>Connect to the systemd
|
||||
session manager of the calling
|
||||
manager of the calling
|
||||
user.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
|
@ -44,7 +44,7 @@
|
||||
|
||||
<refnamediv>
|
||||
<refname>systemctl</refname>
|
||||
<refpurpose>Control the systemd system and session manager</refpurpose>
|
||||
<refpurpose>Control the systemd system and service manager</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
@ -59,7 +59,7 @@
|
||||
<para><command>systemctl</command> may be used to
|
||||
introspect and control the state of the
|
||||
<citerefentry><refentrytitle>systemd</refentrytitle><manvolnum>1</manvolnum></citerefentry>
|
||||
system and session manager.</para>
|
||||
system and service manager.</para>
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
@ -178,10 +178,10 @@
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><option>--session</option></term>
|
||||
<term><option>--user</option></term>
|
||||
|
||||
<listitem><para>Talk to the systemd
|
||||
session manager of the calling user.</para></listitem>
|
||||
manager of the calling user.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
@ -224,10 +224,10 @@
|
||||
<listitem><para>When used with
|
||||
<command>enable</command> and
|
||||
<command>disable</command>, operate on the
|
||||
global session configuŕation
|
||||
global user configuŕation
|
||||
directory, thus enabling or disabling
|
||||
a unit file globally for all future
|
||||
sessions of all users.</para></listitem>
|
||||
logins of all users.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
@ -598,11 +598,11 @@
|
||||
|
||||
<para>Depending on whether
|
||||
<option>--system</option>,
|
||||
<option>--session</option> or
|
||||
<option>--user</option> or
|
||||
<option>--global</option> is specified
|
||||
this enables the unit for the system,
|
||||
for sessions of the calling user only
|
||||
or for all future session of all
|
||||
for the calling user only
|
||||
or for all future logins of all
|
||||
users. Note that in the latter case no
|
||||
systemd daemon configuration is
|
||||
reloaded.</para>
|
||||
@ -643,7 +643,7 @@
|
||||
|
||||
<para>This command honours
|
||||
<option>--system</option>,
|
||||
<option>--session</option>,
|
||||
<option>--user</option>,
|
||||
<option>--global</option> in a similar
|
||||
way as
|
||||
<command>enable</command>.</para>
|
||||
@ -942,9 +942,9 @@
|
||||
|
||||
<listitem><para>Ask the systemd
|
||||
manager to quit. This is only
|
||||
supported for session managers
|
||||
supported for user service managers
|
||||
(i.e. in conjunction with the
|
||||
<option>--session</option> option) and
|
||||
<option>--user</option> option) and
|
||||
will fail otherwise.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
@ -49,7 +49,7 @@
|
||||
|
||||
<refsynopsisdiv>
|
||||
<para><filename>system.conf</filename></para>
|
||||
<para><filename>session.conf</filename></para>
|
||||
<para><filename>user.conf</filename></para>
|
||||
</refsynopsisdiv>
|
||||
|
||||
<refsect1>
|
||||
@ -57,7 +57,7 @@
|
||||
|
||||
<para>When run as system instance systemd reads the
|
||||
configuration file <filename>system.conf</filename>,
|
||||
otherwise <filename>session.conf</filename>. These
|
||||
otherwise <filename>user.conf</filename>. These
|
||||
configuration files contain a few settings controlling
|
||||
basic manager operations.</para>
|
||||
|
||||
@ -79,6 +79,7 @@
|
||||
<term><varname>DumpCore=yes</varname></term>
|
||||
<term><varname>CrashShell=no</varname></term>
|
||||
<term><varname>ShowStatus=yes</varname></term>
|
||||
<term><varname>SysVConsole=yes</varname></term>
|
||||
<term><varname>CrashChVT=1</varname></term>
|
||||
|
||||
<listitem><para>Configures various
|
||||
@ -99,6 +100,18 @@
|
||||
process. Takes a space-separated list
|
||||
of CPU indexes.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
<varlistentry>
|
||||
<term><varname>MountAuto=yes</varname></term>
|
||||
<term><varname>SwapAuto=yes</varname></term>
|
||||
|
||||
<listitem><para>Configures whether
|
||||
systemd should automatically activate
|
||||
all swap or mounts listed in
|
||||
<filename>/etc/fstab</filename>, or
|
||||
whether this job is left to some other
|
||||
system script.</para></listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
</refsect1>
|
||||
|
||||
|
@ -698,9 +698,9 @@
|
||||
</refsect1>
|
||||
|
||||
<refsect1>
|
||||
<title>Special Session Units</title>
|
||||
<title>Special User Units</title>
|
||||
|
||||
<para>When systemd runs as a service instance, the
|
||||
<para>When systemd runs as a user instance, the
|
||||
following special units are available, which have
|
||||
similar definitions as their system counterparts:
|
||||
<filename>default.target</filename>,
|
||||
@ -719,22 +719,22 @@
|
||||
<listitem>
|
||||
<para>A special service unit
|
||||
for shutting down the
|
||||
session.</para>
|
||||
user service manager.</para>
|
||||
|
||||
<para>Applications wanting to
|
||||
terminate the session should
|
||||
start this unit. If systemd
|
||||
receives SIGTERM or SIGINT
|
||||
when running as session daemon
|
||||
it will start this
|
||||
unit.</para>
|
||||
terminate the user service
|
||||
manager should start this
|
||||
unit. If systemd receives
|
||||
SIGTERM or SIGINT when running
|
||||
as user service daemon it will
|
||||
start this unit.</para>
|
||||
|
||||
<para>Normally, this pulls in
|
||||
<filename>shutdown.target</filename>
|
||||
which in turn should be
|
||||
conflicted by all units that
|
||||
want to be shut down on
|
||||
session exit.</para>
|
||||
user service manager exit.</para>
|
||||
</listitem>
|
||||
</varlistentry>
|
||||
</variablelist>
|
||||
|
@ -45,7 +45,7 @@
|
||||
<refnamediv>
|
||||
<refname>systemd</refname>
|
||||
<refname>init</refname>
|
||||
<refpurpose>systemd System and Session Manager</refpurpose>
|
||||
<refpurpose>systemd System and Service Manager</refpurpose>
|
||||
</refnamediv>
|
||||
|
||||
<refsynopsisdiv>
|
||||
@ -60,7 +60,7 @@
|
||||
<refsect1>
|
||||
<title>Description</title>
|
||||
|
||||
<para>systemd is a system and session manager for
|
||||
<para>systemd is a system and service manager for
|
||||
Linux operating systems. When run as first process on
|
||||
boot (as PID 1), it acts as init system that brings
|
||||
up and maintains userspace services.</para>
|
||||
@ -77,7 +77,7 @@
|
||||
<para>When run as system instance, systemd interprets
|
||||
the configuration file
|
||||
<filename>system.conf</filename>, otherwise
|
||||
<filename>session.conf</filename>. See
|
||||
<filename>user.conf</filename>. See
|
||||
<citerefentry><refentrytitle>systemd.conf</refentrytitle><manvolnum>5</manvolnum></citerefentry>
|
||||
for more information.</para>
|
||||
</refsect1>
|
||||
@ -136,10 +136,10 @@
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--system</option></term>
|
||||
<term><option>--session</option></term>
|
||||
<term><option>--user</option></term>
|
||||
|
||||
<listitem><para>Tell systemd to run a
|
||||
system instance (resp. session
|
||||
system instance (resp. user
|
||||
instance), even if the process ID is
|
||||
not 1 (resp. is 1), i.e. systemd is
|
||||
not (resp. is) run as init process.
|
||||
@ -159,27 +159,36 @@
|
||||
<varlistentry>
|
||||
<term><option>--dump-core</option></term>
|
||||
|
||||
<listitem><para>Dump core on crash. This switch has no effect when run as session instance.</para></listitem>
|
||||
<listitem><para>Dump core on
|
||||
crash. This switch has no effect when
|
||||
run as user
|
||||
instance.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--crash-shell</option></term>
|
||||
|
||||
<listitem><para>Run shell on crash. This switch has no effect when run as session instance.</para></listitem>
|
||||
<listitem><para>Run shell on
|
||||
crash. This switch has no effect when
|
||||
run as user
|
||||
instance.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--confirm-spawn</option></term>
|
||||
|
||||
<listitem><para>Ask for confirmation when spawning processes. This switch has no effect when run as session instance.</para></listitem>
|
||||
<listitem><para>Ask for confirmation
|
||||
when spawning processes. This switch
|
||||
has no effect when run as user
|
||||
instance.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
<term><option>--show-status=</option></term>
|
||||
|
||||
<listitem><para>Show terse service
|
||||
status information while booting. This
|
||||
switch has no effect when run as
|
||||
session instance. Takes a boolean
|
||||
argument which may be omitted
|
||||
which is interpreted as
|
||||
switch has no effect when run as user
|
||||
instance. Takes a boolean argument
|
||||
which may be omitted which is
|
||||
interpreted as
|
||||
<option>true</option>.</para></listitem>
|
||||
</varlistentry>
|
||||
<varlistentry>
|
||||
@ -188,7 +197,7 @@
|
||||
<listitem><para>Controls whether
|
||||
output of SysV init scripts will be
|
||||
directed to the console. This switch
|
||||
has no effect when run as session
|
||||
has no effect when run as user
|
||||
instance. Takes a boolean argument
|
||||
which may be omitted which is
|
||||
interpreted as
|
||||
@ -489,10 +498,10 @@
|
||||
|
||||
<variablelist>
|
||||
<varlistentry>
|
||||
<term>Session unit directories</term>
|
||||
<term>User unit directories</term>
|
||||
|
||||
<listitem><para>Similar rules apply
|
||||
for the session unit
|
||||
for the user unit
|
||||
directories. However, here the <ulink
|
||||
url="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
|
||||
Base Directory specification</ulink>
|
||||
@ -500,11 +509,11 @@
|
||||
units. Applications should place their
|
||||
unit files in the directory returned
|
||||
by <command>pkg-config systemd
|
||||
--variable=systemdsessionunitdir</command>. Global
|
||||
--variable=systemduserunitdir</command>. Global
|
||||
configuration is done in the directory
|
||||
reported by <command>pkg-config
|
||||
systemd
|
||||
--variable=systemdsessionconfdir</command>. The
|
||||
--variable=systemduserconfdir</command>. The
|
||||
<command>enable</command> and
|
||||
<command>disable</command> commands of
|
||||
the
|
||||
@ -565,12 +574,12 @@
|
||||
to <command>systemctl
|
||||
daemon-reexec</command>.</para>
|
||||
|
||||
<para>systemd session managers will
|
||||
<para>systemd user managers will
|
||||
start the
|
||||
<filename>exit.target</filename> unit
|
||||
when this signal is received. This is
|
||||
mostly equivalent to
|
||||
<command>systemctl --session start
|
||||
<command>systemctl --user start
|
||||
exit.target</command>.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -585,7 +594,7 @@
|
||||
<command>systemctl start
|
||||
ctl-alt-del.target</command>.</para>
|
||||
|
||||
<para>systemd session managers
|
||||
<para>systemd user managers
|
||||
treat this signal the same way as
|
||||
SIGTERM.</para></listitem>
|
||||
</varlistentry>
|
||||
@ -602,7 +611,7 @@
|
||||
kbrequest.target</command>.</para>
|
||||
|
||||
<para>This signal is ignored by
|
||||
systemd session
|
||||
systemd user
|
||||
managers.</para></listitem>
|
||||
</varlistentry>
|
||||
|
||||
@ -757,7 +766,7 @@
|
||||
<term><varname>$XDG_DATA_HOME</varname></term>
|
||||
<term><varname>$XDG_DATA_DIRS</varname></term>
|
||||
|
||||
<listitem><para>The systemd session
|
||||
<listitem><para>The systemd user
|
||||
manager uses these variables in
|
||||
accordance to the <ulink
|
||||
url="http://standards.freedesktop.org/basedir-spec/basedir-spec-latest.html">XDG
|
||||
|
@ -854,7 +854,7 @@ static DBusHandlerResult bus_manager_message_handler(DBusConnection *connection,
|
||||
} else if (dbus_message_is_method_call(message, "org.freedesktop.systemd1.Manager", "Exit")) {
|
||||
|
||||
if (m->running_as == MANAGER_SYSTEM) {
|
||||
dbus_set_error(&error, BUS_ERROR_NOT_SUPPORTED, "Exit is only supported for session managers.");
|
||||
dbus_set_error(&error, BUS_ERROR_NOT_SUPPORTED, "Exit is only supported for user service managers.");
|
||||
return bus_send_error_reply(m, connection, message, &error, -ENOTSUP);
|
||||
}
|
||||
|
||||
|
@ -864,7 +864,7 @@ static int bus_init_api(Manager *m) {
|
||||
if (m->running_as == MANAGER_SYSTEM && m->system_bus)
|
||||
m->api_bus = m->system_bus;
|
||||
else {
|
||||
if (!(m->api_bus = dbus_bus_get_private(m->running_as == MANAGER_SESSION ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &error))) {
|
||||
if (!(m->api_bus = dbus_bus_get_private(m->running_as == MANAGER_USER ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &error))) {
|
||||
log_debug("Failed to get API D-Bus connection, retrying later: %s", error.message);
|
||||
r = 0;
|
||||
goto fail;
|
||||
|
18
src/main.c
18
src/main.c
@ -514,7 +514,7 @@ static int parse_config_file(void) {
|
||||
const char *fn;
|
||||
int r;
|
||||
|
||||
fn = arg_running_as == MANAGER_SYSTEM ? SYSTEM_CONFIG_FILE : SESSION_CONFIG_FILE;
|
||||
fn = arg_running_as == MANAGER_SYSTEM ? SYSTEM_CONFIG_FILE : USER_CONFIG_FILE;
|
||||
|
||||
if (!(f = fopen(fn, "re"))) {
|
||||
if (errno == ENOENT)
|
||||
@ -573,7 +573,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
ARG_LOG_LOCATION,
|
||||
ARG_UNIT,
|
||||
ARG_SYSTEM,
|
||||
ARG_SESSION,
|
||||
ARG_USER,
|
||||
ARG_TEST,
|
||||
ARG_DUMP_CONFIGURATION_ITEMS,
|
||||
ARG_DUMP_CORE,
|
||||
@ -592,7 +592,7 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
{ "log-location", optional_argument, NULL, ARG_LOG_LOCATION },
|
||||
{ "unit", required_argument, NULL, ARG_UNIT },
|
||||
{ "system", no_argument, NULL, ARG_SYSTEM },
|
||||
{ "session", no_argument, NULL, ARG_SESSION },
|
||||
{ "user", no_argument, NULL, ARG_USER },
|
||||
{ "test", no_argument, NULL, ARG_TEST },
|
||||
{ "help", no_argument, NULL, 'h' },
|
||||
{ "dump-configuration-items", no_argument, NULL, ARG_DUMP_CONFIGURATION_ITEMS },
|
||||
@ -671,8 +671,8 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
arg_running_as = MANAGER_SYSTEM;
|
||||
break;
|
||||
|
||||
case ARG_SESSION:
|
||||
arg_running_as = MANAGER_SESSION;
|
||||
case ARG_USER:
|
||||
arg_running_as = MANAGER_USER;
|
||||
break;
|
||||
|
||||
case ARG_TEST:
|
||||
@ -794,14 +794,14 @@ static int parse_argv(int argc, char *argv[]) {
|
||||
static int help(void) {
|
||||
|
||||
printf("%s [OPTIONS...]\n\n"
|
||||
"Starts up and maintains the system or a session.\n\n"
|
||||
"Starts up and maintains the system or user services.\n\n"
|
||||
" -h --help Show this help\n"
|
||||
" --test Determine startup sequence, dump it and exit\n"
|
||||
" --dump-configuration-items Dump understood unit configuration items\n"
|
||||
" --introspect[=INTERFACE] Extract D-Bus interface data\n"
|
||||
" --unit=UNIT Set default unit\n"
|
||||
" --system Run a system instance, even if PID != 1\n"
|
||||
" --session Run a session instance\n"
|
||||
" --user Run a user instance\n"
|
||||
" --dump-core Dump core on crash\n"
|
||||
" --crash-shell Run shell on crash\n"
|
||||
" --confirm-spawn Ask for confirmation when spawning processes\n"
|
||||
@ -951,7 +951,7 @@ int main(int argc, char *argv[]) {
|
||||
if (label_init() < 0)
|
||||
goto finish;
|
||||
} else {
|
||||
arg_running_as = MANAGER_SESSION;
|
||||
arg_running_as = MANAGER_USER;
|
||||
log_set_target(LOG_TARGET_CONSOLE);
|
||||
}
|
||||
|
||||
@ -1235,7 +1235,7 @@ finish:
|
||||
if (arg_running_as == MANAGER_SYSTEM)
|
||||
args[i++] = "--system";
|
||||
else
|
||||
args[i++] = "--session";
|
||||
args[i++] = "--user";
|
||||
|
||||
if (arg_dump_core)
|
||||
args[i++] = "--dump-core";
|
||||
|
@ -2015,7 +2015,7 @@ static int manager_start_target(Manager *m, const char *name, JobMode mode) {
|
||||
|
||||
dbus_error_init(&error);
|
||||
|
||||
log_info("Activating special unit %s", name);
|
||||
log_debug("Activating special unit %s", name);
|
||||
|
||||
if ((r = manager_add_job_by_name(m, JOB_START, name, mode, true, &error, NULL)) < 0)
|
||||
log_error("Failed to enqueue %s job: %s", name, bus_error(&error, r));
|
||||
@ -2839,7 +2839,7 @@ void manager_run_generators(Manager *m) {
|
||||
|
||||
assert(m);
|
||||
|
||||
generator_path = m->running_as == MANAGER_SYSTEM ? SYSTEM_GENERATOR_PATH : SESSION_GENERATOR_PATH;
|
||||
generator_path = m->running_as == MANAGER_SYSTEM ? SYSTEM_GENERATOR_PATH : USER_GENERATOR_PATH;
|
||||
if (!(d = opendir(generator_path))) {
|
||||
|
||||
if (errno == ENOENT)
|
||||
@ -2852,9 +2852,9 @@ void manager_run_generators(Manager *m) {
|
||||
if (!m->generator_unit_path) {
|
||||
char *p;
|
||||
char system_path[] = "/dev/.systemd/generator-XXXXXX",
|
||||
session_path[] = "/tmp/systemd-generator-XXXXXX";
|
||||
user_path[] = "/tmp/systemd-generator-XXXXXX";
|
||||
|
||||
if (!(p = mkdtemp(m->running_as == MANAGER_SYSTEM ? system_path : session_path))) {
|
||||
if (!(p = mkdtemp(m->running_as == MANAGER_SYSTEM ? system_path : user_path))) {
|
||||
log_error("Failed to generate generator directory: %m");
|
||||
goto finish;
|
||||
}
|
||||
@ -2990,7 +2990,7 @@ void manager_undo_generators(Manager *m) {
|
||||
|
||||
static const char* const manager_running_as_table[_MANAGER_RUNNING_AS_MAX] = {
|
||||
[MANAGER_SYSTEM] = "system",
|
||||
[MANAGER_SESSION] = "session"
|
||||
[MANAGER_USER] = "user"
|
||||
};
|
||||
|
||||
DEFINE_STRING_TABLE_LOOKUP(manager_running_as, ManagerRunningAs);
|
||||
|
@ -51,7 +51,7 @@ typedef enum ManagerExitCode {
|
||||
|
||||
typedef enum ManagerRunningAs {
|
||||
MANAGER_SYSTEM,
|
||||
MANAGER_SESSION,
|
||||
MANAGER_USER,
|
||||
_MANAGER_RUNNING_AS_MAX,
|
||||
_MANAGER_RUNNING_AS_INVALID = -1
|
||||
} ManagerRunningAs;
|
||||
|
@ -30,11 +30,11 @@
|
||||
|
||||
#include "path-lookup.h"
|
||||
|
||||
int session_config_home(char **config_home) {
|
||||
int user_config_home(char **config_home) {
|
||||
const char *e;
|
||||
|
||||
if ((e = getenv("XDG_CONFIG_HOME"))) {
|
||||
if (asprintf(config_home, "%s/systemd/session", e) < 0)
|
||||
if (asprintf(config_home, "%s/systemd/user", e) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
return 1;
|
||||
@ -42,7 +42,7 @@ int session_config_home(char **config_home) {
|
||||
const char *home;
|
||||
|
||||
if ((home = getenv("HOME"))) {
|
||||
if (asprintf(config_home, "%s/.config/systemd/session", home) < 0)
|
||||
if (asprintf(config_home, "%s/.config/systemd/user", home) < 0)
|
||||
return -ENOMEM;
|
||||
|
||||
return 1;
|
||||
@ -52,7 +52,7 @@ int session_config_home(char **config_home) {
|
||||
return 0;
|
||||
}
|
||||
|
||||
static char** session_dirs(void) {
|
||||
static char** user_dirs(void) {
|
||||
const char *home, *e;
|
||||
char *config_home = NULL, *data_home = NULL;
|
||||
char **config_dirs = NULL, **data_dirs = NULL;
|
||||
@ -67,7 +67,7 @@ static char** session_dirs(void) {
|
||||
* as data, and allow overriding as configuration.
|
||||
*/
|
||||
|
||||
if (session_config_home(&config_home) < 0)
|
||||
if (user_config_home(&config_home) < 0)
|
||||
goto fail;
|
||||
|
||||
home = getenv("HOME");
|
||||
@ -81,11 +81,11 @@ static char** session_dirs(void) {
|
||||
* /etc/systemd/ anyway. */
|
||||
|
||||
if ((e = getenv("XDG_DATA_HOME"))) {
|
||||
if (asprintf(&data_home, "%s/systemd/session", e) < 0)
|
||||
if (asprintf(&data_home, "%s/systemd/user", e) < 0)
|
||||
goto fail;
|
||||
|
||||
} else if (home) {
|
||||
if (asprintf(&data_home, "%s/.local/share/systemd/session", home) < 0)
|
||||
if (asprintf(&data_home, "%s/.local/share/systemd/user", home) < 0)
|
||||
goto fail;
|
||||
|
||||
/* There is really no need for two unit dirs in $HOME,
|
||||
@ -96,7 +96,7 @@ static char** session_dirs(void) {
|
||||
* one. */
|
||||
|
||||
mkdir_parents(data_home, 0777);
|
||||
(void) symlink("../../../.config/systemd/session", data_home);
|
||||
(void) symlink("../../../.config/systemd/user", data_home);
|
||||
}
|
||||
|
||||
if ((e = getenv("XDG_DATA_DIRS")))
|
||||
@ -115,12 +115,12 @@ static char** session_dirs(void) {
|
||||
r = t;
|
||||
}
|
||||
|
||||
if (!(t = strv_merge_concat(r, config_dirs, "/systemd/session")))
|
||||
if (!(t = strv_merge_concat(r, config_dirs, "/systemd/user")))
|
||||
goto finish;
|
||||
strv_free(r);
|
||||
r = t;
|
||||
|
||||
if (!(t = strv_append(r, SESSION_CONFIG_UNIT_PATH)))
|
||||
if (!(t = strv_append(r, USER_CONFIG_UNIT_PATH)))
|
||||
goto fail;
|
||||
strv_free(r);
|
||||
r = t;
|
||||
@ -132,12 +132,12 @@ static char** session_dirs(void) {
|
||||
r = t;
|
||||
}
|
||||
|
||||
if (!(t = strv_merge_concat(r, data_dirs, "/systemd/session")))
|
||||
if (!(t = strv_merge_concat(r, data_dirs, "/systemd/user")))
|
||||
goto fail;
|
||||
strv_free(r);
|
||||
r = t;
|
||||
|
||||
if (!(t = strv_append(r, SESSION_DATA_UNIT_PATH)))
|
||||
if (!(t = strv_append(r, USER_DATA_UNIT_PATH)))
|
||||
goto fail;
|
||||
strv_free(r);
|
||||
r = t;
|
||||
@ -176,8 +176,8 @@ int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as) {
|
||||
/* Nothing is set, so let's figure something out. */
|
||||
strv_free(p->unit_path);
|
||||
|
||||
if (running_as == MANAGER_SESSION) {
|
||||
if (!(p->unit_path = session_dirs()))
|
||||
if (running_as == MANAGER_USER) {
|
||||
if (!(p->unit_path = user_dirs()))
|
||||
return -ENOMEM;
|
||||
} else
|
||||
if (!(p->unit_path = strv_new(
|
||||
|
@ -32,7 +32,7 @@ typedef struct LookupPaths {
|
||||
|
||||
#include "manager.h"
|
||||
|
||||
int session_config_home(char **config_home);
|
||||
int user_config_home(char **config_home);
|
||||
|
||||
int lookup_paths_init(LookupPaths *p, ManagerRunningAs running_as);
|
||||
void lookup_paths_free(LookupPaths *p);
|
||||
|
@ -252,7 +252,7 @@ int sd_notifyf(int unset_environment, const char *format, ...) _sd_printf_attr_(
|
||||
fine. You should NOT protect them with a call to this function. Also
|
||||
note that this function checks whether the system, not the user
|
||||
session is controlled by systemd. However the functions above work
|
||||
for both session and system services.
|
||||
for both user and system services.
|
||||
|
||||
See sd_booted(3) for more information.
|
||||
*/
|
||||
|
@ -1014,7 +1014,7 @@ static int service_add_default_dependencies(Service *s) {
|
||||
if ((r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_BASIC_TARGET, NULL, true)) < 0)
|
||||
return r;
|
||||
|
||||
} else if (s->meta.manager->running_as == MANAGER_SESSION) {
|
||||
} else if (s->meta.manager->running_as == MANAGER_USER) {
|
||||
|
||||
if ((r = unit_add_two_dependencies_by_name(UNIT(s), UNIT_AFTER, UNIT_REQUIRES, SPECIAL_SOCKETS_TARGET, NULL, true)) < 0)
|
||||
return r;
|
||||
|
@ -22,7 +22,7 @@ using GLib;
|
||||
using DBus;
|
||||
using Pango;
|
||||
|
||||
static bool session = false;
|
||||
static bool user = false;
|
||||
|
||||
public class LeftLabel : Label {
|
||||
public LeftLabel(string? text = null) {
|
||||
@ -103,7 +103,7 @@ public class MainWindow : Window {
|
||||
private ComboBox unit_type_combo_box;
|
||||
|
||||
public MainWindow() throws DBus.Error {
|
||||
title = session ? "systemd Session Manager" : "systemd System Manager";
|
||||
title = user ? "systemd User Service Manager" : "systemd System Manager";
|
||||
position = WindowPosition.CENTER;
|
||||
set_default_size(1000, 700);
|
||||
set_border_width(12);
|
||||
@ -297,7 +297,7 @@ public class MainWindow : Window {
|
||||
|
||||
bbox.pack_start(cancel_button, false, true, 0);
|
||||
|
||||
bus = DBus.Bus.get(session ? DBus.BusType.SESSION : DBus.BusType.SYSTEM);
|
||||
bus = DBus.Bus.get(user ? DBus.BusType.SESSION : DBus.BusType.SYSTEM);
|
||||
|
||||
manager = bus.get_object(
|
||||
"org.freedesktop.systemd1",
|
||||
@ -967,8 +967,8 @@ public class MainWindow : Window {
|
||||
}
|
||||
|
||||
static const OptionEntry entries[] = {
|
||||
{ "session", 0, 0, OptionArg.NONE, out session, "Connect to session bus", null },
|
||||
{ "system", 0, OptionFlags.REVERSE, OptionArg.NONE, out session, "Connect to system bus", null },
|
||||
{ "user", 0, 0, OptionArg.NONE, out user, "Connect to user service manager", null },
|
||||
{ "system", 0, OptionFlags.REVERSE, OptionArg.NONE, out user, "Connect to system manager", null },
|
||||
{ null }
|
||||
};
|
||||
|
||||
|
@ -44,7 +44,7 @@ _systemctl () {
|
||||
local -A OPTS=(
|
||||
[STANDALONE]='--all -a --defaults --fail --force -f --full --global
|
||||
--help -h --no-ask-password --no-block --no-reload --no-wall
|
||||
--order --require --quiet -q --session --system --version'
|
||||
--order --require --quiet -q --system --user --version'
|
||||
[ARG]='--kill-mode --kill-who --property -p --signal -s --type -t'
|
||||
)
|
||||
|
||||
|
@ -61,7 +61,7 @@ static const char *arg_type = NULL;
|
||||
static char **arg_property = NULL;
|
||||
static bool arg_all = false;
|
||||
static bool arg_fail = false;
|
||||
static bool arg_session = false;
|
||||
static bool arg_user = false;
|
||||
static bool arg_global = false;
|
||||
static bool arg_immediate = false;
|
||||
static bool arg_no_block = false;
|
||||
@ -1234,7 +1234,7 @@ static int start_unit_one(
|
||||
|
||||
if (need_daemon_reload(bus, name))
|
||||
log_warning("Unit file of created job changed on disk, 'systemctl %s daemon-reload' recommended.",
|
||||
arg_session ? "--session" : "--system");
|
||||
arg_user ? "--user" : "--system");
|
||||
|
||||
if (!arg_no_block) {
|
||||
char *p;
|
||||
@ -1937,7 +1937,7 @@ static void print_status_info(UnitStatusInfo *i) {
|
||||
printf("\n%sWarning:%s Unit file changed on disk, 'systemctl %s daemon-reload' recommended.\n",
|
||||
ansi_highlight(true),
|
||||
ansi_highlight(false),
|
||||
arg_session ? "--session" : "--system");
|
||||
arg_user ? "--user" : "--system");
|
||||
}
|
||||
|
||||
static int status_property(const char *name, DBusMessageIter *iter, UnitStatusInfo *i) {
|
||||
@ -3919,13 +3919,13 @@ static int install_info_apply(const char *verb, LookupPaths *paths, InstallInfo
|
||||
|
||||
static char *get_config_path(void) {
|
||||
|
||||
if (arg_session && arg_global)
|
||||
return strdup(SESSION_CONFIG_UNIT_PATH);
|
||||
if (arg_user && arg_global)
|
||||
return strdup(USER_CONFIG_UNIT_PATH);
|
||||
|
||||
if (arg_session) {
|
||||
if (arg_user) {
|
||||
char *p;
|
||||
|
||||
if (session_config_home(&p) < 0)
|
||||
if (user_config_home(&p) < 0)
|
||||
return NULL;
|
||||
|
||||
return p;
|
||||
@ -3946,7 +3946,7 @@ static int enable_unit(DBusConnection *bus, char **args, unsigned n) {
|
||||
dbus_error_init(&error);
|
||||
|
||||
zero(paths);
|
||||
if ((r = lookup_paths_init(&paths, arg_session ? MANAGER_SESSION : MANAGER_SYSTEM)) < 0) {
|
||||
if ((r = lookup_paths_init(&paths, arg_user ? MANAGER_USER : MANAGER_SYSTEM)) < 0) {
|
||||
log_error("Failed to determine lookup paths: %s", strerror(-r));
|
||||
goto finish;
|
||||
}
|
||||
@ -4010,9 +4010,9 @@ static int enable_unit(DBusConnection *bus, char **args, unsigned n) {
|
||||
/* Don't try to reload anything when updating a unit globally */
|
||||
!arg_global &&
|
||||
/* Don't try to reload anything if we are called for system changes but the system wasn't booted with systemd */
|
||||
(arg_session || sd_booted() > 0) &&
|
||||
(arg_user || sd_booted() > 0) &&
|
||||
/* Don't try to reload anything if we are running in a chroot environment */
|
||||
(arg_session || running_in_chroot() <= 0) ) {
|
||||
(arg_user || running_in_chroot() <= 0) ) {
|
||||
int q;
|
||||
|
||||
if ((q = daemon_reload(bus, args, n)) < 0)
|
||||
@ -4047,8 +4047,8 @@ static int systemctl_help(void) {
|
||||
" pending\n"
|
||||
" -q --quiet Suppress output\n"
|
||||
" --no-block Do not wait until operation finished\n"
|
||||
" --system Connect to system bus\n"
|
||||
" --session Connect to session bus\n"
|
||||
" --system Connect to system manager\n"
|
||||
" --user Connect to user service manager\n"
|
||||
" --order When generating graph for dot, show only order\n"
|
||||
" --require When generating graph for dot, show only requirement\n"
|
||||
" --no-wall Don't send wall message before halt/power-off/reboot\n"
|
||||
@ -4105,7 +4105,7 @@ static int systemctl_help(void) {
|
||||
" poweroff Shut down and power-off the system\n"
|
||||
" reboot Shut down and reboot the system\n"
|
||||
" kexec Shut down and reboot the system with kexec\n"
|
||||
" exit Ask for session termination\n",
|
||||
" exit Ask for user instance termination\n",
|
||||
program_invocation_short_name);
|
||||
|
||||
return 0;
|
||||
@ -4182,7 +4182,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
|
||||
enum {
|
||||
ARG_FAIL = 0x100,
|
||||
ARG_VERSION,
|
||||
ARG_SESSION,
|
||||
ARG_USER,
|
||||
ARG_SYSTEM,
|
||||
ARG_GLOBAL,
|
||||
ARG_NO_BLOCK,
|
||||
@ -4205,7 +4205,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
|
||||
{ "all", no_argument, NULL, 'a' },
|
||||
{ "full", no_argument, NULL, ARG_FULL },
|
||||
{ "fail", no_argument, NULL, ARG_FAIL },
|
||||
{ "session", no_argument, NULL, ARG_SESSION },
|
||||
{ "user", no_argument, NULL, ARG_USER },
|
||||
{ "system", no_argument, NULL, ARG_SYSTEM },
|
||||
{ "global", no_argument, NULL, ARG_GLOBAL },
|
||||
{ "no-block", no_argument, NULL, ARG_NO_BLOCK },
|
||||
@ -4273,12 +4273,12 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
|
||||
arg_fail = true;
|
||||
break;
|
||||
|
||||
case ARG_SESSION:
|
||||
arg_session = true;
|
||||
case ARG_USER:
|
||||
arg_user = true;
|
||||
break;
|
||||
|
||||
case ARG_SYSTEM:
|
||||
arg_session = false;
|
||||
arg_user = false;
|
||||
break;
|
||||
|
||||
case ARG_NO_BLOCK:
|
||||
@ -4315,7 +4315,7 @@ static int systemctl_parse_argv(int argc, char *argv[]) {
|
||||
|
||||
case ARG_GLOBAL:
|
||||
arg_global = true;
|
||||
arg_session = true;
|
||||
arg_user = true;
|
||||
break;
|
||||
|
||||
case ARG_DEFAULTS:
|
||||
@ -5236,7 +5236,7 @@ int main(int argc, char*argv[]) {
|
||||
goto finish;
|
||||
}
|
||||
|
||||
bus_connect(arg_session ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &bus, &private_bus, &error);
|
||||
bus_connect(arg_user ? DBUS_BUS_SESSION : DBUS_BUS_SYSTEM, &bus, &private_bus, &error);
|
||||
|
||||
switch (arg_action) {
|
||||
|
||||
|
@ -13,6 +13,6 @@ systemdsystemconfdir=@pkgsysconfdir@/system
|
||||
systemdsessionconfdir=@pkgsysconfdir@/session
|
||||
|
||||
Name: systemd
|
||||
Description: systemd System and Session Manager
|
||||
Description: systemd System and Service Manager
|
||||
URL: @PACKAGE_URL@
|
||||
Version: @PACKAGE_VERSION@
|
||||
|
@ -15,4 +15,4 @@ After=shutdown.target
|
||||
|
||||
[Service]
|
||||
Type=oneshot
|
||||
ExecStart=@SYSTEMCTL@ --session --force exit
|
||||
ExecStart=@SYSTEMCTL@ --user --force exit
|
Loading…
Reference in New Issue
Block a user