Toby의 답변을 바탕으로 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
두 개의 사이에 줄을 추가 할 수없는 것처럼 보였습니다 @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
가 두 번째 끝 때문에.) 나는 왼쪽 것이 주 service = sudo
이후 술어를 common-session-noninteractive
힘도 이외의 다른 CONFIGS에 포함 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
. 최신 데비안 버전에서는 rsyslog 또는 sudo
log stdout
또는 stderr
기본적으로 표시됩니다. 그래서 나에게 이것은 내 서비스의 저널 로그에 표시되었지만 /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
실제로 필터링하면 모든 메시지를 필터링합니다. 메시지에 언급되지 않은 특정 사용자를 원하며 이름으로 필터링 할 수 없습니다.