我正在运行全新安装的 Ubuntu Server 16.04.1,但在使用 smbd 时遇到了问题。service smbd status
告诉我 smbd 应该正在运行:
● smbd.service - LSB:启动 Samba SMB/CIFS 守护进程(smbd) 已加载:已加载(/etc/init.d/smbd;错误;供应商预设:已启用) 活跃:自 Die 2016-10-18 17:35:23 CEST;2 秒前以来活跃(退出) 文档:man:systemd-sysv-generator(8) 进程:24218 ExecStop=/etc/init.d/smbd stop(代码=exited,状态=0/SUCCESS) 进程:21980 ExecReload=/etc/init.d/smbd reload(代码=exited,状态=0/SUCCESS) 进程:25190 ExecStart=/etc/init.d/smbd start(代码=exited,状态=0/SUCCESS) 10 月 18 日 17:35:22 speedy systemd[1]: 正在启动 LSB: 启动 Samba SMB/CIFS 守护进程 (smbd)... 10 月 18 日 17:35:23 speedy smbd[25190]: * 启动 SMB/CIFS 守护进程 smbd 10 月 18 日 17:35:23 speedy smbd[25190]:...完成。 10 月 18 日 17:35:23 快速 systemd[1]: 已启动 LSB: 启动 Samba SMB/CIFS 守护进程 (smbd)。
可以通过以下方式验证ps axf | grep smbd
:
25356 分/2 S+ 0:00 | \_ grep --color=auto smbd 19915?Ss 0:08 \_ /usr/sbin/smbd -D 19919?S 0:00 \_ /usr/sbin/smbd -D
但是,netstat -tpln | grep "smbd"
没有返回任何内容,并且 nmap 在端口 139 和 445 上显示“已关闭”。
到目前为止,我尝试在 /etc/samba/smb.conf 中激活这些选项,但没有帮助:
接口 = enp2s0 仅绑定接口 = true
我不知道还能尝试什么...有什么想法吗?
此致,
迈克尔
答案1
是什么导致了这个问题?
在同一台机器上,smbd 在 LXC 容器中运行。启动 Samba 守护进程的脚本 - /etc/init.d/smbd - 认为守护进程已在运行,并拒绝启动另一个实例,因为它不知道找到的 smbd 进程在容器中运行。这也是 Samba 在启动时启动的原因:此时容器尚未启动,并且没有“其他”smbd 进程。这同样适用于其他技术,例如 Docker。
如何解决这个问题?
按照[1]的建议,解决办法是修改/etc/init.d/smbd:
if ! start-stop-daemon --start --quiet --oknodo --exec /usr/sbin/smbd -- -D; then
改成:
if ! start-stop-daemon --start --quiet --oknodo --pidfile /var/run/samba/smbd.pid --exec /usr/sbin/smbd -- -D; then
在 Ubuntu 16.04.3 上,此代码位于第 40 行。使用 nano 编辑时,按 Ctrl+W,输入“start-stop”,然后按回车键;这将带您到正确的行。