Tobyの回答に基づいて、Debian / Ubuntuでこれを少し異なる方法で設定する方法を見つけました。コンテキストについては、以下を参照してください。
したがって、Debian / Ubuntuにはこのpam-auth-update
コマンドがあり、見る/etc/pam.d/sudo
と次のようになります。
#%PAM-1.0
@include common-auth
@include common-account
@include common-session-noninteractive
そして/etc/pam.d/common-session-noninteractive
次のようになります。
#
# /etc/pam.d/common-session-noninteractive - session-related modules
# common to all non-interactive services
#
# This file is included from other service-specific PAM config files,
# and should contain a list of modules that define tasks to be performed
# at the start and end of all non-interactive sessions.
#
# As of pam 1.0.1-6, this file is managed by pam-auth-update by default.
# To take advantage of this, it is recommended that you configure any
# local modules either before or after the default block, and use
# pam-auth-update to manage selection of other modules. See
# pam-auth-update(8) for details.
# here are the per-package modules (the "Primary" block)
session [default=1] pam_permit.so
# here's the fallback if no module succeeds
session requisite pam_deny.so
# prime the stack with a positive return value if there isn't one already;
# this avoids us returning an error just because nothing sets a success code
# since the modules above will each just jump around
session required pam_permit.so
# and here are more per-package modules (the "Additional" block)
session required pam_unix.so
# end of pam-auth-update config
確かに、上記のファイルのいずれかを編集できますが、ここでは明らかに「強力な」機能が働いています。pamルールを追加したいかもしれない他のパッケージでうまく動作するように私の変更を取得する方法は?さらに、このように/etc/pam.d/sudo
2つ@include
の間に行を追加することはできないように思えました。
##### THIS DIDN'T WORK :( ######
@include common-auth
@include common-account
session [default=ignore] pam_succeed_if.so quiet_success service = sudo uid = 0 ruser = myappuser
@include common-session-noninteractive
上記のリンクと他の例を読んだ後(参考文献を参照/usr/share/pam-configs/unix
)、これを思いつきました/usr/share/pam-configs/myapp
。
# Don't log "session opened" messages for myapp user
# See: https://wiki.ubuntu.com/PAMConfigFrameworkSpec
# https://manpages.debian.org/stretch/libpam-modules/pam_succeed_if.8.en.html
Name: myapp disable session logging
Default: yes
Priority: 300
Session-Type: Additional
Session:
[default=ignore] pam_succeed_if.so quiet_success service = sudo uid = 0 ruser = myappuser
Session
Session-Type
編集するファイルを制御し、ファイルのPriority
順序を定義します。そのファイルを追加して実行するとpam-auth-update
、/etc/pam.d/common-session-noninteractive
次のようになります(下部:)。
#... omitted
session required pam_permit.so
# and here are more per-package modules (the "Additional" block)
session [default=ignore] pam_succeed_if.so quiet_success service = sudo uid = 0 ruser = myappuser
session required pam_unix.so
# end of pam-auth-update config
...これは私たちのpam_succeed_if
ラインが前に来る必要があるので私たちが望むものですsession required pam_unix.so
。(この行はから来 /use/share/pam-configs/unix
ており、Priority: 256
2番目になります。)また、他の構成にも含まれservice = sudo
ているcommon-session-noninteractive
可能性があるため、述語を残したことに注意してくださいsudo
。
私は追加ので、私の場合、私はすでにの.debインストーラとして私のコードをパッケージ化した/usr/share/pam-configs/myapp
ファイルを、して、コメントを追加pam-auth-update --package
私にpostinst
してprerm
スクリプトと私は行ってもいいよ!
警告...
上記でリンクしたPAMConfigFrameworkSpecの記事を読むと、Session-Interactive-Only
オプションが定義されていますが、非インタラクティブルールのみを指定する方法はありません。そう/etc/pam.d/common-session
しても更新。これを回避する方法はないと思います。そのユーザーの対話セッションがログに記録されていなくても問題ない場合(サービスアカウントですか?)
ボーナス:sudoログ出力も削除する方法
session openened|closed
PAMが発行する行に加えて、sudo
実行されるコマンドに関する追加情報をログに記録します。次のようになります。
[user] : TTY=unknown ; PWD=... ; USER=root ; COMMAND=...
それも削除したい場合は、このリンクを開いて下に進んでください...
だから...あなたはおそらく/etc/sudoers.d/___
、いくつかのアクションのためにスーパーユーザー特権を必要とするサービスアカウントに対して次のようなことをするかもしれない典型的なセットアップに精通しているでしょう:
myuser ALL=(ALL) NOPASSWD: /bin/ping
それが入るかもしれません/etc/sudoers.d/10_myuser
。まあ、他のものの間で指定することもできますDefaults
。特にこの構文に注意してください'Defaults' ':' User_List
さて、SUDOERS OPTIONSセクションを見てください。興味深いビットが含まれlog_input
、log_output
しかし、(おそらく)もっと重要なのは、syslog
とlogfile
。Debianの最近のバージョンでは、rsyslogまたはsudo
log to stdout
またはstderr
デフォルトでログインしているように見えます。だから私にとっては、これは私のサービスのjournaldログに表示されていたのであり、例えば/var/log/auth.log
アプリケーションログに混入しない場所ではありませんでした。sudoロギングを削除するには、次のように追加して、次の/etc/sudoers.d/10_myuser
ようにします。
Defaults:myuser !logfile, !syslog
myuser ALL=(ALL) NOPASSWD: /bin/ping
YMMVでは、ロギングを無効にするとセキュリティ監査で問題が発生すると感じた場合、rsyslogフィルターを介してこれを解決することもできます。
session closed for user root
、実際にフィルタリングすると、すべてのメッセージがフィルタリングされます。私は、メッセージに記載されていない特定のユーザーのためにしたいと私はその名前でフィルタリングすることができません...