如何恢复默认的 Samba 配置文件(基于 Debian 的系统)?

如何恢复默认的 Samba 配置文件(基于 Debian 的系统)?

我最近安装了 Samba,但文件弄乱了/etc/samba/smb.conf。如何恢复原始配置?

答案1

简短回答:/usr/share/samba/smb.conf是 smb.conf 文件的原始版本。

当任何包裹遇到这种情况时,我会采取以下措施之一:

  1. 检查原始版本的备份文件从编辑器中。我使用 Emacs,它通常会保留foo~文件,并且我已设置数字版本控制选项,因此原始版本始终为foo.~1~。但也许您以其他方式执行了此操作,或使用了其他编辑器。如果尚未启用此功能,请考虑检查编辑器的配置以启用此功能;这是一个好习惯。

  2. 重新配置包使用dpkg-reconfigure PACKAGENAME。有时这种方法很管用。根据我的经验,这种方法很少奏效;这取决于包如何创建其配置文件。

  3. 清除并重新安装包apt-get purge packagename后面跟apt-get install packagename)。这应该总是有效的。

    在极端情况下,您必须在清除后手动查找并删除配置文件,然后再重新安装包,但这种情况很少见。但是,这将消除包的任何其他数据和/或配置文件,这并不总是可接受的。

  4. 下载软件包的源代码apt-get source foo)并查看原始配置文件是否存在。但是,配置文件可能事先不存在,而是由软件包的安装后脚本在安装时创建的。

  5. 检查包的 postinst 脚本/var/lib/dpkg/info/foo.postinst)找出它在哪里创建配置文件以及它是如何创建的。然后尝试手动重复该过程。这需要一点工作,而且并不总是那么容易。

答案2

已编辑

发现这个一个 serverfault 问题。如果dpkg-reconfigure foo不起作用,请使用这个:

  1. 删除或者重命名损坏的配置文件。

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
  2. 向 请求替换品dpkg

    sudo dpkg -i --force-confmiss /path/to/samba-common.deb
    

这告诉dpkg您使用 .deb 中的配置文件替换缺失的配置文件。您可能会在 中找到原始软件包 .deb /var/cache/apt/archives,或者您可以使用发行版存储库中相同版本的最新副本。

dpkg -i --force-confnew foo.deb

这告诉dpkg您使用 .deb 中的配置文件覆盖现有配置文件。您可能会在 中找到原始软件包 .deb /var/cache/apt/archives,或者您可以使用发行版存储库中相同版本的最新副本。

答案3

smb.conf您可以像这样恢复原始配置文件:

# cp /usr/share/samba/smb.conf /etc/samba/smb.conf
# dpkg-reconfigure samba-common

这基本上就是原始包安装过程所做的(在 Debian Squeeze 上)。

这将覆盖您当前的文件smb.conf,因此,如果您不想丢失它,请先进行备份。

答案4

dpkg-reconfigure <package>默认情况下不会修改已改变的conf文件。

如果你的 apt 缓存中仍有该包,那么最简单的方法可能是运行

dpgk -i --force-confask /var/cache/apt/archives/<package file name>

软件包文件名通常类似于<package name>_<version>.deb(只需使用制表符完成)。这将运行与 apt-upgrade 相同的过程,并在发现更改的 conf 文件时询问您要做什么。只需在每个提示符下输入。dpkg 将安装文件名末尾N带有 的 conf 文件的软件包版本。然后,您可以使用或其他合并工具来比较差异,并修改读取的 conf 文件。.dpkg-distvimdiff

相关内容