samba 无法从 systemctl 启动:超时

samba 无法从 systemctl 启动:超时

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

我尝试安装 4.9.2 并按照说明进行操作这里但我需要禁用对 configure 的 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.

状态给出:

● smb.service - Samba SMB 守护进程
   已加载:已加载(/lib/systemd/system/smb.service;已启用;供应商预设:已启用)
   活动:失败(结果:超时)自 2019-01-31 星期四 14:46:34 NZDT;13 分钟前
     文档:man:smbd(8)
           人:桑巴(7)
           手册:smb.conf(5)
  进程:12343 ExecStart=/usr/sbin/smbd --foreground --no-process-group $SMBDOPTIONS(代码=killed,信号=TERM)
 主 PID:12343(代码=已杀死,信号=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=守护进程“smbd”已完成启动并准备好提供连接

因此看起来好像 systemd 脚本有问题,并且当它没有得到某些预期的响应时就会终止该进程。

有什么想法要寻找什么吗?

更新:我成功地从命令行启动了 smbd 并附加到共享,这表明 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

答案1

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

一个解决方案是将 Type=notify 更改为 Type=simple。新版本的 Samba 与 systemd 处理进程通信的方式不太兼容。

-Type=notify
+Type=simple

然后运行systemctl 守护进程重新加载并尝试重新启动它。

答案2

以下对我有用:

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

     sudo vi /etc/samba/smb.conf
    
  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
  1. 按下ESC然后输入:wq并按下 intro (如果您使用 nano,则应该按下Ctrl+O然后按下Ctrl+X)。

  2. 重新加载 samba 服务并运行:

     sudo systemctl restart nmbd
    
  3. 现在,我们将检查它是否有效。运行以下命令:

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

答案3

删除所有 systemd 文件后,问题不再存在。问题可能是您有一个来自旧版 samba 安装的 systemd 文件。需要删除这些文件。在 4.10.10 中,它不附带 systemd 文件,它们是从 /etc/init.d/smbd 自动生成的。检查输出应该显示以下内容:

-> % sudo systemctl status smbd.service                                                             
● smbd.service - LSB: Samba SMB/CIFS daemon (smbd)
   Loaded: loaded (/etc/init.d/smbd; generated)

相关内容