Ubuntu

升級系統時與 PAM 配置文件衝突

  • March 26, 2018

我有一個執行 Ubuntu 14.04.4 LTS 的 VPS;它是由 OVH 與 Plesk 一起整體安裝的。我剛剛做了一個apt-get upgrade,在某些時候我收到了一條關於 PAM 的消息。該系統是法語的,但基本上它說:

本地至少修改了 /etc/pam.d/common-{auth,account,password,session} 的一個文件。請說明是否應丟棄本地更改並堅持使用標準配置。否則,您將不得不自己配置身份驗證系統。

我決定保留本地更改,APT 也報告了:

pam-auth-update: Local modifications to /etc/pam.d/common-*, not updating.
pam-auth-update: Run pam-auth-update --force to override.

我想知道本地更改和更新要設置的文件之間有什麼區別。我怎樣才能做到這一點?

因為我不想更改系統上 PAM 的實時配置,所以我最終使用chrootjail 來設置預設 PAM 配置,以便查看差異:

# lsb_release --codename
Codename:       trusty
# debootstrap trusty /tmp/foo
I: Retrieving Release 
I: Retrieving Release.gpg 
 ...

查看差異:

for f in common-{account,auth,password,session,session-noninteractive}; do
 echo ==== $f ====
 diff --unified /etc/pam.d/$f /tmp/foo/etc/pam.d/$f
done

dpkg 應該提示並允許您查看差異(帶有D),以防您的配置文件發生更改:

Configuration file `/etc/bash.bashrc'
==> Modified (by you or by a script) since installation.
==> Package distributor has shipped an updated version.
  What would you like to do about it ?  Your options are:
   Y or I  : install the package maintainer's version
   N or O  : keep your currently-installed version
     D     : show the differences between the versions
     Z     : start a shell to examine the situation
The default action is to keep your current version.
*** bash.bashrc (Y/I/N/O/D/Z) [default=N] 

**更新:**從下面的評論來看,問題在於不刪除完整配置文件的包(這是觸發上述行為的地方),但文件使用腳本方法生成配置文件。Debian 政策手冊將其描述為:

E.2 功能齊全的維護者腳本配置處理

對於包含站點特定資訊(例如主機名和網路詳細資訊等)的文件,最好在包的腳本中創建文件。postinst

這通常涉及檢查系統其餘部分的狀態以確定值和其他資訊,並且可能涉及提示使用者某些無法通過其他方式獲得的資訊。

使用此方法時,應考慮幾個重要問題:

如果您在生成配置文件的程序中發現錯誤,或者文件格式從一個版本更改為下一個版本,您將不得不安排postinst腳本做一些明智的事情 - 通常這意味著編輯已安裝的配置文件以消除問題或更改語法。您必須非常小心地執行此操作,因為使用者可能已經更改了文件,也許是為了解決您的腳本試圖處理的問題 - 您必須檢測這些情況並正確處理它們。

/usr/sbin如果您確實沿著這條路線走,那麼按照慣例,將生成配置文件的程序設置為一個單獨的程序,*packageconfig然後在安裝後腳本中執行該程序(如果合適),這可能是一個好主意。程序不應該毫無疑問地覆蓋現有配置 - 如果它的packageconfig操作模式是針對第一次設置一個包(而不是以後任意重新配置),你應該讓它檢查配置是否已經存在,並需要一個*--force**標誌來覆蓋它。

這意味著您需要依賴*packageconfig*PAM 的程序/usr/sbin/pam-auth-update來提供試執行或預覽選項。

據我所知 /usr/sbin/pam-auth-update,不提供這樣的功能。

引用自:https://serverfault.com/questions/770426