Как мне вернуть файл конфигурации Samba по умолчанию (система на основе Debian)?

19428
Frew Schmidt

Я недавно установил Samba, и я испортил /etc/samba/smb.confфайл. Как вернуть исходную конфигурацию?

9
`sudo cp /usr/share/samba/smb.conf / etc / samba / smb.conf` ThorSummoner 6 лет назад 0

8 ответов на вопрос

8
quack quixote

Отредактировано :

Обнаружил это на вопрос о сбое сервера . Если 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или использовать свежую копию той же версии из репозитория вашего дистрибутива.

Этот флаг заставляет dpkg перезаписывать файл конфигурации *, если бы в противном случае он запросил разрешение на это *. Это ** не ** делает его волшебным образом воссоздать нетронутые файлы конфигурации из пакета. Teddy 14 лет назад 0
Я верю, что ты прав. хорошо, так что вы хотите вместо этого `--force-confmiss`. в данном конкретном случае, например, samba, я думаю, что `--force-confnew` выполнит перезапись, но вы правы, что это зависит от особенностей скриптов конфигурации пакета. quack quixote 14 лет назад 0
6
Teddy

Краткий ответ: /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 для package ( /var/lib/dpkg/info/foo.postinst), чтобы узнать, где он создает файл конфигурации и как он это делает. Затем попробуйте повторить процесс вручную. Это немного работы, и не всегда легко.

Это должно быть выше. Для меня это был просто случай выполнения `sudo cp /usr/share/samba/smb.conf / etc / samba / smb.conf`, чтобы перезаписать мой удаленный файл conf оригиналом. edzillion 8 лет назад 0
2
naught101

dpkg-reconfigure <package> не будет изменять измененные файлы по умолчанию.

Вероятно, самый простой способ сделать это, если у вас все еще есть пакет в кэше apt, это запустить

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

где имя файла пакета обычно что-то вроде <package name>_<version>.deb(просто используйте завершение вкладки). Это будет проходить через тот же процесс, что и apt-upgrade, и спросит вас, что вы хотите сделать, когда обнаружит измененный файл conf. Просто введите Nв каждом приглашении. dpkg установит версию пакета из файла conf .dpkg-distв конце имени файла. Затем вы можете использовать vimdiffдругой инструмент слияния для сравнения различий и изменения файла read conf.

1
John T

Вы можете извлечь deb и получить оригинальный файл:

ar p packagename.deb data.tar.gz | tar zx 
Использование `dpkg-source` проще, а использование` apt-get source PACKAGE` * намного * проще. Teddy 14 лет назад 0
@Teddy: только если файл конфигурации по умолчанию включен в исходный пакет для начала. многие пакеты устанавливают файл конфигурации, в значительной степени зависящий от поставщика; некоторые автоматически генерируют свои конфигурационные файлы в сценарии `packagename.postinst`. quack quixote 14 лет назад 1
1
Mahmoud Hossam

Вы можете загрузить и извлечь содержимое пакета deb

Это слишком низкий уровень способа сделать это Frew Schmidt 14 лет назад 1
не значит, что это не сработает John T 14 лет назад 4
1
Frew Schmidt

Лучший способ (полученный из #ubuntu) - сделать это:

dpkg-reconfigure <package> 

В этом случае это означает

dpkg-reconfigure samba-common 
1
Totor

Вы можете восстановить исходный smb.confфайл конфигурации следующим образом:

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

Это в основном то, что делает оригинальный процесс установки пакета (в Debian Squeeze).

Это перезапишет текущую версию smb.conf, поэтому сначала сделайте резервную копию, если не хотите ее потерять.

Спасибо за предоставление имени пакета, который содержит этот файл. "sudo aptitude purge samba-common; sudo aptitude install samba" был моим выбором, но ответ Тотора выглядит наименее пугающим и наиболее Debian из всех вариантов. Martin Dorey 8 лет назад 0
-1
Kushagra Karira
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf 

а также

$ sudo dpkg --configure -a 

сделаю работу.

Это почти идентично всем остальным ответам здесь. Это также на пост от 14 года. var firstName 5 лет назад 0

Похожие вопросы