samba 不是从 systemctl 启动:超时

Rus*_*ton 4 samba systemd

我试图在 ubuntu 服务器 (18.04) 上设置一个 samba 服务器。我需要从源代码编译,因为我需要对 Mac OS 和时间机器的特殊支持,它仅在 4.8 或更高版本中可用。

我尝试安装 4.9.2 并按照此处的说明进行操作,但我需要禁用 LDAP 和 AD 对配置的支持。构建和安装进行得很顺利,所以我将 systemctl 文件复制到位并尝试启动一切。

super@fulton:~/samba/samba-samba-4.9.2$ sudo systemctl start {nmb,smb,winbind}.service
Job for nmb.service failed because a timeout was exceeded.
See "systemctl status nmb.service" and "journalctl -xe" for details.
Job for winbind.service failed because a timeout was exceeded.
See "systemctl status winbind.service" and "journalctl -xe" for details.
Job for smb.service failed because a timeout was exceeded.
See "systemctl status smb.service" and "journalctl -xe" for details.
Run Code Online (Sandbox Code Playgroud)

状态给出:

? smb.service - Samba SMB 守护进程
   已加载:已加载(/lib/systemd/system/smb.service;已启用;供应商预设:已启用)
   活动:失败(结果:超时)自周四 2019-01-31 14:46:34 NZDT;13 分钟前
     文档:人:smbd(8)
           男人:桑巴舞(7)
           人:smb.conf(5)
  进程:12343 ExecStart=/usr/sbin/smbd --foreground --no-process-group $SMBDOPTIONS (code=killed, signal=TERM)
 主 PID: 12343 (code=killed, signal=TERM)

1 月 31 日 14:45:04 fulton.geek.nz systemd[1]:启动 Samba SMB 守护进程...
1 月 31 日 14:46:34 fulton.geek.nz systemd[1]:smb.service:启动操作超时。终止。
1 月 31 日 14:46:34 fulton.geek.nz systemd[1]: smb.service: 结果“超时”失败。
1 月 31 日 14:46:34 fulton.geek.nz systemd[1]:无法启动 Samba SMB 守护进程。

但是 /var/log/samba/log.smbd 表明服务已启动。

[2019/01/31 14:45:04.465362, 0] ../lib/util/become_daemon.c:138(daemon_ready)
  daemon_ready: STATUS=daemon 'smbd' 完成启动并准备好提供连接

所以它看起来好像 systemd 脚本有问题,并且当它没有得到一些预期的响应时它正在终止进程。

任何想法要寻找什么?

更新:我成功地能够从命令行启动 smbd 并附加到 shared,这表明 systemd 脚本存在问题。我注意到 smbd 是用 --foreground 调用的,这是正确的吗?我猜 systemd 打算将进程本身置于后台以便它可以管理它?

这是配置:

[Unit]
Description=Samba SMB Daemon
Documentation=man:smbd(8) man:samba(7) man:smb.conf(5)
Wants=network-online.target
After=network.target network-online.target nmb.service winbind.service

[Service]
Type=notify
NotifyAccess=all
PIDFile=/var/run/samba/smbd.pid
LimitNOFILE=16384
EnvironmentFile=-/etc/sysconfig/samba
ExecStart=/usr/sbin/smbd --foreground --no-process-group $SMBDOPTIONS
ExecReload=/bin/kill -HUP $MAINPID
LimitCORE=infinity

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

小智 7

我在尝试让不同类型的机器运行最新版本的 Samba 以供时间机器使用时遇到了这个问题。

一种解决方案是将 Type=notify 更改为 Type=simple。新版本的 Samba 与 systemd 处理进程通信的方式有一些关系。

-Type=notify
+Type=simple
Run Code Online (Sandbox Code Playgroud)

然后运行systemctl daemon-reload并尝试再次启动。


Mar*_*ent 6

以下对我有用:

  1. 运行以下命令来编辑 samba 设置:

     sudo vi /etc/samba/smb.conf
    
    Run Code Online (Sandbox Code Playgroud)
  2. 按一次a键(这用于在 vi 上启用编辑模式)

  3. 注释(#在行首添加主题标签 ( ))interfaces = x.x.x.x/x

  4. 评论也 bind interfaces only = x

现在应该是这样的:

#    interfaces = x.x.x.x/x
# There is some info text
#    bind interfaces only = x
Run Code Online (Sandbox Code Playgroud)
  1. ESC然后键入:wq并按介绍(如果您使用 nano,则应按Ctrl+O,然后按Ctrl+X)。

  2. 重新加载正在运行的 samba 服务:

     sudo systemctl restart nmbd
    
    Run Code Online (Sandbox Code Playgroud)
  3. 现在,我们将检查它是否有效。运行以下命令:

     systemctl status nmbd.service
    
    Run Code Online (Sandbox Code Playgroud)
  4. 终端现在应该active(running)以绿色打印