Pam
使用 augtool 從 /etc/pam.d/sshd 中註釋掉或刪除 @include
如何註釋掉或刪除 /etc/pam.d/sshd 中的“@include common-auth”行?預設內容為:
... # 標準的 Un*x 認證。 @include 普通認證 ...
鏡頭文件並不是那麼有幫助。我是 Augeas 的新手,還不太清楚路徑表達式是如何工作的。
具體來說,我正在嘗試使用 augtool 作為 Dockerfile 的一部分來執行此操作。我天真地嘗試了以下命令,但沒有奏效:
augtool --autosave 'rm /files/etc/pam.d/sshd/@include common-auth'
我求助於這樣做
sed
,以下為我完成了這項工作:sed -i 's/@include common-auth/#@include common-auth/' /etc/pam.d/sshd
但我仍在嘗試找出是否有辦法使用 augtool 來完成,因為我正在使用 augtool 在我的 Dockerfile 中進行所有其他配置更改,並且統一性會很好。
嘗試確定要編輯/刪除哪個節點時,最重要的事情是使用 augtool 的命令查看目前樹:
$ augtool augtool> print /files/etc/pam.d/sshd /files/etc/pam.d/sshd /files/etc/pam.d/sshd/#comment[1] = "PAM configuration for the Secure Shell service" /files/etc/pam.d/sshd/#comment[2] = "Standard Un*x authentication." /files/etc/pam.d/sshd/include[1] = "common-auth" /files/etc/pam.d/sshd/#comment[3] = "Disallow non-root logins when /etc/nologin exists." /files/etc/pam.d/sshd/1 /files/etc/pam.d/sshd/1/type = "account" [..]
這表明該
@include common-auth
行有 path/files/etc/pam.d/ssh/include[1]
,所以這將刪除它:augtool -s 'rm /files/etc/pam.d/sshd/include[1]'
您可以使用路徑表達式來匹配值“common-auth”,而不是對索引 (1) 進行硬編碼,以確保刪除正確的
@include
條目(如果存在)。augtool -s 'rm /files/etc/pam.d/sshd/include[. = "common-auth"]'
.
表示節點的值*(*輸出的右側[]
都是路徑表達式。Augeas wiki有更多關於路徑表達式的資訊。