Як повернути типовий файл конфігурації Samba (система на базі Debian)?


11

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


1
sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf
ThorSummoner

чому всі використовують заповнювачі для назви пакета?
ендоліт

Відповіді:


8

Відредаговано :

Виявив це в питанні сервера за замовчуванням . Якщо 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перезаписати конфігураційний файл, лише якщо він інакше попросив би дозволу на це . Це не дозволяє магічно відтворити незаймані конфігураційні файли з пакету.
Тедді

я вважаю, ти маєш рацію. добре, так що ви хочете --force-confmissзамість цього. У цьому конкретному випадку, наприклад, samba, я думаю, що --force-confnewце виконає перезапис, але ви маєте рацію, що це залежить від деталей сценаріїв конфігурації пакета.
крякати кіхот

7

Коротка відповідь: /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), щоб дізнатися, де він створює конфігураційний файл і як це робить. Потім спробуйте повторити процес вручну. Це трохи роботи, і не завжди просто.


Це повинно бути вище. Для мене це був просто випадок, sudo cp /usr/share/samba/smb.conf /etc/samba/smb.confщоб перезаписати мій пошкоджений конф-файл оригіналом.
edzillion

2

dpkg-reconfigure <package> не змінить змінені файли конф за замовчуванням.

Напевно, найпростіший спосіб зробити це, якщо у вас все-таки є пакет в підходящому кеші - це запустити

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

де ім'я файлу пакету зазвичай щось подібне <package name>_<version>.deb(просто скористайтеся вкладкою). Це відбудеться через той самий процес, що і apt-оновлення, і запитає вас, що ви хочете зробити, коли коли-небудь знайде змінений конф-файл. Просто введіть Nу кожному підказку. dpkg встановить пакетну версію конф-файлу з .dpkg-distв кінці імені файлу. Потім ви можете скористатись vimdiffчи іншим інструментом об’єднання для порівняння відмінностей та змінити файл конфіденційності читання.


Немає пакунків, /var/cache/apt/archives/хоча ...
endolith

1

Ви можете витягти деб і захопити вихідний файл:

ar p packagename.deb data.tar.gz | tar zx

Використання dpkg-sourceлегше, і використовуючи apt-get source PACKAGEце набагато простіше.
Тедді

1
@ Teddy: лише якщо файл конфігурації за замовчуванням включений у вихідний пакет для початку. у багатьох пакунках встановлюється конфігураційний файл, що залежить від постачальника; деякі автоматично генерують свої конфігураційні файли в packagename.postinstсценарії.
шарлатаний кіхот

1

Найкращий спосіб (отриманий від #ubuntu) - це зробити:

dpkg-reconfigure <package>

У цьому випадку це означає

dpkg-reconfigure samba-common

1

Ви можете відновити вихідний smb.confфайл конфігурації таким чином:

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

Це в основному те, що робить оригінальний процес встановлення пакета (на Debian Squeeze).

Це перезаписать поточний smb.conf, тому спочатку зробіть резервну копію, якщо ви не хочете її втрачати.


1
Дякуємо, що надали ім'я пакету, який містить цей файл. "sudo здатність очистити samba-звичайний; sudo здатність встановити самбу" був моїм вибором, але відповідь Тотора виглядає найменш страшною і найбільш Debian з варіантів.
Мартін Дорей

0

Ви можете повторно завантажити та витягнути вміст пакету дебютів


1
Це занадто низький рівень способу зробити це
Frew Schmidt

4
не означає, що він не буде працювати
Джон T

-2
$ sudo cp /usr/share/samba/smb.conf /etc/samba/smb.conf

і

$ sudo dpkg --configure -a

зробить роботу.


Це майже ідентично з усіма іншими відповідями тут. Це також допис від 14 року.
var firstName
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.