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

Fre*_*idt 14 debian samba package-management ubuntu config-files

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

Ted*_*ddy 8

简短回答:/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. 检查包( /var/lib/dpkg/info/foo.postinst)的 postinst 脚本以找出它在哪里创建配置文件以及它是如何创建的。然后尝试手动重复该过程。这是一项工作,并不总是那么容易。


qua*_*ote 8

编辑

在服务器故障问题上发现了这一点。如果dpkg-reconfigure foo不起作用,请使用以下命令:

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

    sudo mv /etc/samba/smb.conf /etc/samba/smb.conf.broken
    
    Run Code Online (Sandbox Code Playgroud)
  2. 从 请求更换dpkg

    sudo dpkg -i --force-confmiss /path/to/samba-common.deb
    
    Run Code Online (Sandbox Code Playgroud)

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

dpkg -i --force-confnew foo.deb
Run Code Online (Sandbox Code Playgroud)

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


Fre*_*idt 2

最好的方法(来自#ubuntu)是这样做:

dpkg-reconfigure <package>
Run Code Online (Sandbox Code Playgroud)

在这种情况下,这意味着

dpkg-reconfigure samba-common
Run Code Online (Sandbox Code Playgroud)