/etc/pam.d/sshdの「@ includecommon-auth」行をコメントアウトまたは削除するにはどうすればよいですか?デフォルトのコンテンツは次のとおりです。
... #標準のUn * x認証。 @ includecommon-auth ...
レンズのドキュメント はそれほど役に立ちません。私はAugeasを初めて使用しますが、パス式がどのように機能するかはまだよくわかりません。
具体的には、Dockerfileの一部としてaugtoolを使用してこれを実行しようとしています。私は素朴に次のコマンドを試しましたが、うまくいきませんでした:
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のprint
を使用してcurrentツリーを確認することです。コマンド:
$ 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
行のパスが/files/etc/pam.d/ssh/include[1]
であることを示しているため、次のように削除されます。
augtool -s 'rm /files/etc/pam.d/sshd/include[1]'
インデックス(1)をハードコーディングする代わりに、パス式を使用して値 "common-auth"に一致させ、正しい@include
エントリが存在する場合はそれを削除することができます。
augtool -s 'rm /files/etc/pam.d/sshd/include[. = "common-auth"]'
.
は、ノード(print
出力の右側)の値を意味します。 []
内のすべてがパス式です。 Augeas wiki には、パス式に関する詳細情報がたくさんあります。