标签: systemd

配置 Systemd 服务以使用 root 访问权限运行

我在 Raspbian Jessie 上使用 Systemd 设置了 node.js 应用程序形式的服务,它使用自己的用户帐户。但是,我发现该服务无法正常运行,因为它没有必要的权限。我安装的节点模块之一需要 root 访问权限。如果我使用 sudo 手动运行应用程序,一切正常。

有没有办法告诉 systemd 使用 sudo 运行服务?

linux daemon service systemd

36
推荐指数
2
解决办法
11万
查看次数

你如何使用 systemd 的 journalctl 模式

我正在尝试使用journalctl的模式匹配SYSLOG_IDENTIFIERS。例如,我有大量消息标记为sshd

$ journalctl -t sshd | wc -l
987
Run Code Online (Sandbox Code Playgroud)

但是如果我尝试使用模式匹配来找到它们:

$ journalctl -t 'ssh*'
-- No Entries --
$ journalctl -t 'ssh.*'
-- No Entries --
Run Code Online (Sandbox Code Playgroud)

journalctl 手册页说模式应该有效,但我找不到关于如何在 systemd 中使用/定义模式的任何其他信息。

$ man journalctl
....
-t, --identifier=SYSLOG_IDENTIFIER|PATTERN
       Show messages for the specified syslog identifier SYSLOG_IDENTIFIER,
       or for any of the messages with a "SYSLOG_IDENTIFIER" matched by PATTERN.
Run Code Online (Sandbox Code Playgroud)

我正在运行 ArchLinux:

$ journalctl --version
systemd 225
+PAM -AUDIT -SELINUX -IMA -APPARMOR +SMACK -SYSVINIT +UTMP +LIBCRYPTSETUP
+GCRYPT +GNUTLS …
Run Code Online (Sandbox Code Playgroud)

arch-linux systemd journald

35
推荐指数
2
解决办法
6万
查看次数

systemd:授予非特权用户更改特定服务的权限

我在无头 linux 机器上运行私人游戏服务器。因为我不是白痴,所以说服务器作为它自己的非特权用户运行,具有下载更新和修改世界数据库所需的最低访问权限。

我还创建了一个 systemd 单元文件,以便在需要时正确启动、停止和重新启动服务器(例如,对于上述更新)。

但是,为了实际调用systemctl或者service <game> start/stop/restart我仍然需要以 root 或有sudo能力的用户身份登录。

有没有办法告诉 systemd 对于该<game>服务,gamesrv允许非特权用户运行启动/停止/重启命令?

linux systemd

34
推荐指数
2
解决办法
5万
查看次数

如何允许用户使用 journalctl 查看用户特定的 systemd 服务日志?

我在 Ubuntu 16.04 LTS 中运行用户级服务。例如,我的 test.service 位于~/.config/systemd/user/test.service.

我能够通过这样做来运行服务

systemctl --user start test.target
Run Code Online (Sandbox Code Playgroud)

但是,当我尝试使用 读取其日志时journalctl,收到以下错误消息:

journalctl --user -u test.service
Hint: You are currently not seeing messages from other users and the system.
  Users in the 'systemd-journal' group can see all messages. Pass -q to
  turn off this notice.
No journal files were opened due to insufficient permissions.
Run Code Online (Sandbox Code Playgroud)

如何journalctl用于用户的特定单位?

permissions systemd systemctl journalctl ubuntu-16.04

32
推荐指数
1
解决办法
2万
查看次数

禁用所有服务,ssh 除外

如何在现代(基于 systemd 的)Linux 发行版上禁用除 ssh 之外的所有服务?

我需要实施维护模式

所有这些服务都需要关闭:

  • 邮局
  • 后缀
  • 阿帕奇
  • 杯子
  • 定时任务
  • 鸽舍

但是 ssh 不能关闭,因为这会在维护模式下用于执行任务。

当然,我可以编写一个 shell 脚本,循环遍历我想禁用的服务列表。但这感觉就像我重新发明了一些已经存在但我现在还不知道的东西。

maintenance linux service systemd

32
推荐指数
2
解决办法
4604
查看次数

允许非 root 用户重新启动服务

背景 :

我创建了一个名为myappwith的应用程序Spring-boot。它由一个可自我执行的 jar 组成,并与 systemd 服务兼容。现在,我正在尝试将它与 jenkins 集成。

我想要的是:

我希望詹金斯能够:

  • 停止服务。
  • 更换罐子。
  • 重启服务。

问题:

到目前为止,只有 sudoers 可以启动/停止服务。我不希望 jenkins 成为 sudoer(看起来很乱)。

当前结构:

我有一个用户myapp有一个/home/myapp文件夹。生成的 jar 被调用myapp并放置在/home/myapp. 用户myapp是生成的 jar 的所有者:

myapp@myserver:~/backend$ ll
total 53900
drwxrwxr-x 2 myapp myapp     4096 Apr 25 17:09 ./
drwxr-xr-x 6 myapp myapp     4096 Apr 25 17:08 ../
-rw-rw-r-- 1 myapp myapp      511 Apr 20 16:13 application.properties
-rwxr--r-- 1 myapp myapp 55175294 Apr 20 …
Run Code Online (Sandbox Code Playgroud)

jenkins systemd

28
推荐指数
1
解决办法
4万
查看次数

使用 systemctl 停止服务后,服务仍处于失败状态

我们有一个简单的 systemd 脚本来以服务方式启动 MineCraft 服务器。SO 是 CentOS 7。这里的脚本:

[Unit]
Description=Minecraft Server
After=syslog.target network.target

[Service]
Type=simple
WorkingDirectory=/root/Minecraft
ExecStart=/bin/java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
Restart=on-failure

[Install]
WantedBy=multi-user.target
Run Code Online (Sandbox Code Playgroud)

启动服务工作正常,但停止时,服务仍处于失败状态。看:

systemctl status minecraftd.service
minecraftd.service - Minecraft Server
   Loaded: loaded (/usr/lib/systemd/system/minecraftd.service; disabled)
   Active: active (running) since Mon 2015-06-01 16:00:12 UTC; 18s ago
 Main PID: 20975 (java)
   CGroup: /system.slice/minecraftd.service
           ??20975 /bin/java -Xmx1024M -Xms1024M -jar minecraft_server.jar nogui
systemctl stop minecraftd.service
systemctl status minecraftd.service
minecraftd.service - Minecraft Server
   Loaded: loaded (/usr/lib/systemd/system/minecraftd.service; disabled)
   Active: failed (Result: exit-code) since Mon …
Run Code Online (Sandbox Code Playgroud)

systemd systemctl

27
推荐指数
2
解决办法
5万
查看次数

loginctl enable-linger/disable-linger ...但是读取linger-status?

我知道如何启用/禁用loginctl.

但是直到现在我还没有找到查询用户状态的方法。

我想知道:是否为用户启用了挥之不去的功能foo

我怎样才能访问这些信息?

systemd

26
推荐指数
3
解决办法
1万
查看次数

systemctl 无法识别我的服务:默认启动不包含运行级别,正在中止

我想定义一个在启动时启动的简单服务,在 Ubuntu 服务器 16.10 上。所以我创建了一个/etc/init.d/mydaemon

我不知何故在 upstart 和 systemd 之间搞砸了:起初我以为我必须设置一个 upstart 服务。因此,在将我的文件转换为 upstart 语法后,我运行了update-rc.d mydaemon defaults.

我找出了我的错误并 run update-rc.d mydaemon remove,转换为 systemd 语法,然后 run systemctl enable mydaemon,但得到错误:

mydaemon.service is not a native service, redirecting to systemd-sysv-install.
Executing: /lib/systemd/systemd-sysv-install enable mydaemon
update-rc.d: error: mydaemonDefault-Start contains no runlevels, aborting.
Run Code Online (Sandbox Code Playgroud)

ubuntu systemd

26
推荐指数
3
解决办法
7万
查看次数

强制 systemd timesyncd 立即与 NTP 服务器同步时间

我已将 systemd timesyncd 配置为从 NTP 服务器获取时间:

/etc/systemd/timesyncd.conf > NTP=ca.pool.ntp.org
systemctl restart systemd-timesyncd.service 
timedatectl set-ntp true
Run Code Online (Sandbox Code Playgroud)

状态如下:

$ timedatectl status
...
Network time on: yes
NTP synchronized: no
Run Code Online (Sandbox Code Playgroud)

正如输出所暗示的那样,时间尚未同步。有人可以帮我解决以下问题吗?

  • timesyncd 与 NTP 同步需要多长时间?它以什么时间间隔执行此操作,我可以在哪里检查和更改它们?
  • 在紧急情况下:我可以只手动设置时间还是可以强制 timesyncd 立即与 NTP 服务器同步?

ntp systemd systemd-timesyncd

24
推荐指数
2
解决办法
5万
查看次数