我如何注释掉或删除/etc/pam.d/sshd中的“@include common-auth”行? 默认的内容是:
... #标准的Un * xauthentication。 @include common-auth ...
镜头文件不是所有有用的。 我是Augeas的新手,不太清楚pathexpression式是如何工作的。
我试图用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中进行所有其他configuration更改,并且一致性会很好。
在试图确定要编辑/删除哪个节点时,最重要的事情是使用augtool的print命令查看当前树:
$ 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]'
您可以使用pathexpression式来匹配值“common-auth”,而不是硬编码索引(1),以确保删除正确的@include条目(如果存在)。
augtool -s 'rm /files/etc/pam.d/sshd/include[. = "common-auth"]'
的. 意味着节点的值 ( print输出的右侧)。 []中的任何内容都是pathexpression式。 Augeas wiki有很多关于pathexpression式的信息。